ContainerController.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. namespace App\Http\Controllers\API;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Requests\API\Container\CreateOrUpdateRequest;
  5. use App\Models\Container;
  6. use App\Models\Enums\FileObjectType;
  7. use App\Models\Enums\ObjectAction;
  8. use App\Repositories\ActionRepository;
  9. use App\Repositories\CustomFieldRepository;
  10. use App\Services\File\FileAssociationService;
  11. use App\Services\File\ImageUrlService;
  12. use Illuminate\Http\Request;
  13. use Illuminate\Support\Facades\Auth;
  14. class ContainerController extends Controller
  15. {
  16. /**
  17. * Display a listing of the resource.
  18. */
  19. public function index()
  20. {
  21. //
  22. }
  23. /**
  24. * Store a newly created resource in storage.
  25. */
  26. public function store(
  27. CreateOrUpdateRequest $request,
  28. ImageUrlService $imageUrlService,
  29. FileAssociationService $service,
  30. CustomFieldRepository $customFieldRepo
  31. )
  32. {
  33. $formData = [
  34. ...$request->all(),
  35. 'company_id' => Auth::user()->company_id,
  36. 'created_by' => Auth::id(),
  37. 'whitelist' => $request->whitelist ? sprintf(",%s,", implode(',', $request->whitelist)) : null,
  38. 'description' => $imageUrlService->interceptImageUrl($request->description) ,
  39. ];
  40. if ($request->has("naming_rule_id") && $request->get("naming_rule_id") > 0) {
  41. $keys = $customFieldRepo->keysByGroup($request->get("naming_rule_id"));
  42. $formData['naming_rules'] = $request->only($keys);
  43. }
  44. $container = new Container();
  45. $container->mergeFillable(['company_id']);
  46. $container->fill($formData);
  47. $container->save();
  48. $container = Container::query()->create($formData);
  49. ActionRepository::createByContainer($container, ObjectAction::CREATED);
  50. $service->association(
  51. $request->get("file_ids", []),
  52. $container->id,
  53. FileObjectType::CONTAINER
  54. );
  55. return $this->created();
  56. }
  57. /**
  58. * Display the specified resource.
  59. */
  60. public function show(string $id)
  61. {
  62. //
  63. }
  64. /**
  65. * Update the specified resource in storage.
  66. */
  67. public function update(Request $request, string $id)
  68. {
  69. //
  70. }
  71. /**
  72. * Remove the specified resource from storage.
  73. */
  74. public function destroy(string $id)
  75. {
  76. //
  77. }
  78. }