RequirementController.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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\Models\Plan;
  8. use App\Models\Requirement;
  9. use Illuminate\Http\Request;
  10. use Illuminate\Support\Facades\Auth;
  11. class RequirementController extends Controller
  12. {
  13. /**
  14. * Display a listing of the resource.
  15. */
  16. public function index()
  17. {
  18. //
  19. }
  20. public function byAsset(string $assetId)
  21. {
  22. $requirements = Requirement::query()
  23. ->with(['createdBy', 'plan'])
  24. ->where('asset_id', $assetId)
  25. ->simplePaginate();
  26. return AssetRequirementResource::collection($requirements);
  27. }
  28. /**
  29. * Store a newly created resource in storage.
  30. */
  31. public function store(CreateOrUpdateRequest $request)
  32. {
  33. $requirement = new Requirement();
  34. $requirement->mergeFillable([
  35. 'company_id', 'created_by',
  36. ]);
  37. $requirement->fill([
  38. ...$request->all(),
  39. 'company_id' => Auth::user()->company_id,
  40. 'created_by' => Auth::id(),
  41. ]);
  42. $requirement->save();
  43. return $this->created();
  44. }
  45. /**
  46. * Display the specified resource.
  47. */
  48. public function show(string $id)
  49. {
  50. //
  51. }
  52. /**
  53. * Update the specified resource in storage.
  54. */
  55. public function update(Request $request, string $id)
  56. {
  57. //
  58. }
  59. /**
  60. * Remove the specified resource from storage.
  61. */
  62. public function destroy(string $id)
  63. {
  64. //
  65. }
  66. public function linkPlan(LinkPlanRequest $request, string $planId)
  67. {
  68. $plan = Plan::query()->findOrFail($planId);
  69. Requirement::query()->where("asset_id", $plan->asset_id)
  70. ->whereIn('id', $request->get("requirement_ids"))
  71. ->update([
  72. 'plan_id' => $plan->id,
  73. ]);
  74. return $this->noContent();
  75. }
  76. }