diff --git a/app/Classes/Modules/Companies/DataTransferObjects/EmploymentObject.php b/app/Classes/Modules/Companies/DataTransferObjects/EmploymentObject.php new file mode 100644 index 00000000..8a6781a0 --- /dev/null +++ b/app/Classes/Modules/Companies/DataTransferObjects/EmploymentObject.php @@ -0,0 +1,58 @@ +company = $company; + $this->user = $user; + $this->status = $status; + } + + /** + * @return Company + */ + public function getCompany(): Company + { + return $this->company; + } + + /** + * @return User + */ + public function getUser(): User + { + return $this->user; + } + + /** + * @return int + */ + public function getStatus(): int + { + return $this->status; + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Companies/Processors/AssignEmployeeProcessor.php b/app/Classes/Modules/Companies/Processors/AssignEmployeeProcessor.php new file mode 100644 index 00000000..ed263da1 --- /dev/null +++ b/app/Classes/Modules/Companies/Processors/AssignEmployeeProcessor.php @@ -0,0 +1,44 @@ +canAssignEmployee = $canAssignEmployee; + $this->assignsEmployee = $assignsEmployee; + } + + /** + * @param EmploymentObject $object + * @return Model + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function execute(EmploymentObject $object): Model { + + $this->canAssignEmployee->passes($object); + + return $this->assignsEmployee->execute($object); + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Companies/Services/AssignsEmployee.php b/app/Classes/Modules/Companies/Services/AssignsEmployee.php new file mode 100644 index 00000000..0e5b8636 --- /dev/null +++ b/app/Classes/Modules/Companies/Services/AssignsEmployee.php @@ -0,0 +1,30 @@ +getCompany()->employees()->attach($object->getUser(), ['status' => $object->getStatus()]); + + return $object->getCompany(); + + } catch (QueryException $exception){ + throw new MalformedRequestException($exception); + } + + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Companies/Standards/Rules/CanAssignEmployee.php b/app/Classes/Modules/Companies/Standards/Rules/CanAssignEmployee.php new file mode 100644 index 00000000..f34f83ff --- /dev/null +++ b/app/Classes/Modules/Companies/Standards/Rules/CanAssignEmployee.php @@ -0,0 +1,54 @@ +companyEmployeeValidation = $companyEmployeeValidation; + } + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + } + + /** + * @param EmploymentObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->companyEmployeeValidation->validate($object); + } + + /** + * @param EmploymentObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Companies/Standards/Validators/CompanyEmployeeValidation.php b/app/Classes/Modules/Companies/Standards/Validators/CompanyEmployeeValidation.php new file mode 100644 index 00000000..f396ac41 --- /dev/null +++ b/app/Classes/Modules/Companies/Standards/Validators/CompanyEmployeeValidation.php @@ -0,0 +1,40 @@ + $object->getCompany()->id, + 'user_id' => $object->getUser()->id, + ]; + } + + /** + * @return array + */ + protected function rules(): array + { + return [ + 'company_id' => 'required', + 'user_id' => 'required', + ]; + } + + /** + * @return array + */ + protected function messages(): array + { + return []; + } +} \ No newline at end of file