ProjectController.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. namespace App\Http\Controllers\API;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Requests\API\Project\CreateOrUpdateRequest;
  5. use App\Http\Resources\API\ProjectResource;
  6. use App\Models\Project;
  7. use App\Models\ProjectAsset;
  8. use App\Models\ProjectPlan;
  9. use Illuminate\Http\Request;
  10. use Illuminate\Support\Facades\Auth;
  11. use function MongoDB\BSON\toJSON;
  12. class ProjectController extends Controller
  13. {
  14. /**
  15. * Display a listing of the resource.
  16. */
  17. public function index(Request $request)
  18. {
  19. $projects = Project::filter($request->all())->get();
  20. return ProjectResource::collection($projects);
  21. }
  22. /**
  23. * Store a newly created resource in storage.
  24. */
  25. public function store(CreateOrUpdateRequest $request)
  26. {
  27. $project = new Project();
  28. $project->mergeFillable([
  29. 'company_id', 'created_by'
  30. ]);
  31. $project->fill([
  32. ...$request->all(),
  33. 'company_id' => Auth::user()->company_id,
  34. 'created_by' => Auth::id(),
  35. 'whitelist' => $request->whitelist ? sprintf(",%s", implode(',', $request->whitelist)) : null,
  36. ]);
  37. $project->save();
  38. if ($request->has("assets")) {
  39. foreach ($request->get("assets", []) as $assetId) {
  40. ProjectAsset::create([
  41. 'project_id' => $project->id,
  42. 'asset_id' => $assetId,
  43. ]);
  44. }
  45. }
  46. if ($request->has("plans")) {
  47. foreach ($request->get("plans", []) as $planId) {
  48. ProjectPlan::create([
  49. 'project_id' => $project->id,
  50. 'plan_id' => $planId,
  51. ]);
  52. }
  53. }
  54. return $this->created();
  55. }
  56. /**
  57. * Display the specified resource.
  58. */
  59. public function show(string $id)
  60. {
  61. //
  62. }
  63. /**
  64. * Update the specified resource in storage.
  65. */
  66. public function update(Request $request, string $id)
  67. {
  68. //
  69. }
  70. /**
  71. * Remove the specified resource from storage.
  72. */
  73. public function destroy(string $id)
  74. {
  75. //
  76. }
  77. }