RequirementController.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <?php
  2. namespace App\Http\Controllers\API;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Requests\API\Requirement\ClosedRequest;
  5. use App\Http\Requests\API\Requirement\CreateOrUpdateRequest;
  6. use App\Http\Requests\API\Requirement\LinkPlanRequest;
  7. use App\Http\Resources\API\AssetRequirementResource;
  8. use App\Http\Resources\API\RequirementResource;
  9. use App\Models\Enums\RequirementStatus;
  10. use App\Models\Plan;
  11. use App\Models\Requirement;
  12. use Illuminate\Http\Request;
  13. use Illuminate\Support\Facades\Auth;
  14. use Illuminate\Validation\Rules\Enum;
  15. class RequirementController extends Controller
  16. {
  17. /**
  18. * Display a listing of the resource.
  19. */
  20. public function index()
  21. {
  22. //
  23. }
  24. public function byAsset(Request $request,string $assetId)
  25. {
  26. $requirements=Requirement::filter($request->all())->with(['createdBy', 'plan']) ->where('asset_id', $assetId)->simplePaginate();
  27. return AssetRequirementResource::collection($requirements);
  28. }
  29. /**
  30. * Store a newly created resource in storage.
  31. */
  32. public function store(CreateOrUpdateRequest $request)
  33. {
  34. $requirement = new Requirement();
  35. $requirement->mergeFillable([
  36. 'company_id', 'created_by',
  37. ]);
  38. $requirement->fill([
  39. ...$request->all(),
  40. 'company_id' => Auth::user()->company_id,
  41. 'created_by' => Auth::id(),
  42. ]);
  43. $requirement->save();
  44. return $this->created();
  45. }
  46. /**
  47. * Display the specified resource.
  48. */
  49. public function show(string $id)
  50. {
  51. $requirement = Requirement::query()->findOrFail($id);
  52. return new RequirementResource($requirement);
  53. }
  54. /**
  55. * Update the specified resource in storage.
  56. */
  57. public function update(CreateOrUpdateRequest $request, string $id)
  58. {
  59. //
  60. $requiremen = Requirement::findOrFail($id);
  61. $requiremen->fill($request->all());
  62. $requiremen->save();
  63. return $this->noContent();
  64. }
  65. /**
  66. * Remove the specified resource from storage.
  67. */
  68. public function destroy(string $id)
  69. {
  70. $requiremen = Requirement::findOrFail($id);
  71. $requiremen->delete();
  72. return $this->noContent();
  73. }
  74. public function close(ClosedRequest $request,string $id){
  75. $requiremen = Requirement::findOrFail($id);
  76. $requiremen->update([
  77. ...$request->all(),
  78. 'status' =>RequirementStatus::CLOSED->value,
  79. ]);
  80. return $this->noContent();
  81. }
  82. public function linkPlan(LinkPlanRequest $request, string $planId)
  83. {
  84. $plan = Plan::query()->findOrFail($planId);
  85. Requirement::query()->where("asset_id", $plan->asset_id)
  86. ->whereIn('id', $request->get("requirement_ids"))
  87. ->update([
  88. 'plan_id' => $plan->id,
  89. ]);
  90. return $this->noContent();
  91. }
  92. }