RequirementController.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. namespace App\Http\Controllers\API;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Requests\API\Requirement\CreateOrUpdateRequest;
  5. use App\Http\Requests\API\Requirement\LinkPlanRequest;
  6. use App\Http\Resources\API\AssetRequirementResource;
  7. use App\Http\Resources\API\RequirementResource;
  8. use App\Models\Plan;
  9. use App\Models\Requirement;
  10. use Illuminate\Http\Request;
  11. use Illuminate\Support\Facades\Auth;
  12. class RequirementController extends Controller
  13. {
  14. /**
  15. * Display a listing of the resource.
  16. */
  17. public function index()
  18. {
  19. //
  20. }
  21. public function byAsset(string $assetId)
  22. {
  23. $requirements = Requirement::query()
  24. ->with(['createdBy', 'plan'])
  25. ->where('asset_id', $assetId)
  26. ->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(Request $request, string $id)
  58. {
  59. //
  60. }
  61. /**
  62. * Remove the specified resource from storage.
  63. */
  64. public function destroy(string $id)
  65. {
  66. //
  67. }
  68. public function linkPlan(LinkPlanRequest $request, string $planId)
  69. {
  70. $plan = Plan::query()->findOrFail($planId);
  71. Requirement::query()->where("asset_id", $plan->asset_id)
  72. ->whereIn('id', $request->get("requirement_ids"))
  73. ->update([
  74. 'plan_id' => $plan->id,
  75. ]);
  76. return $this->noContent();
  77. }
  78. }