TaskImport.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. namespace App\Imports;
  3. use App\Http\Requests\API\Task\CreateOrUpdateRequest;
  4. use App\Models\Enums\ObjectAction;
  5. use App\Models\Task;
  6. use App\Repositories\ActionRepository;
  7. use Illuminate\Support\Facades\Auth;
  8. use Maatwebsite\Excel\Concerns\ToCollection;
  9. use Maatwebsite\Excel\Concerns\WithHeadingRow;
  10. use Illuminate\Support\Collection;
  11. class TaskImport implements ToCollection, WithHeadingRow
  12. {
  13. use ImportValidatorHelper;
  14. public function collection(Collection $collection): void
  15. {
  16. $requestRule = new CreateOrUpdateRequest();
  17. $this->validatorByCollection($collection, $requestRule->importRules());
  18. foreach ($collection as $item) {
  19. $formData = [
  20. ...$item->all(),
  21. 'company_id' => Auth::user()->company_id,
  22. 'created_by' => Auth::id(),
  23. 'task_type' => $requestRule->getGroupLabelValue("task", "task_type", $item->get("task_type")),
  24. 'doc_type' => $requestRule->getGroupLabelValue("task", "doc_type", $item->get("doc_type")),
  25. 'doc_stage' => $requestRule->getGroupLabelValue("task", "doc_stage", $item->get("doc_stage")),
  26. 'state' => $requestRule->getGroupLabelValue("task", "state", $item->get("state")),
  27. 'suitability' => $requestRule->getGroupLabelValue("task", "suitability", $item->get("suitability")),
  28. 'mailto' => [],
  29. ];
  30. $task = Task::create($formData);
  31. ActionRepository::createByTask($task, ObjectAction::CREATED);
  32. }
  33. }
  34. }