diff --git a/app/Classes/General/Eloquent/Filters/IssuerIn.php b/app/Classes/General/Eloquent/Filters/IssuerIn.php new file mode 100644 index 00000000..f8958842 --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/IssuerIn.php @@ -0,0 +1,20 @@ +whereIn('issuer', $value); + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Accounts/ControllersLogic/CreateAdminUserLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/CreateAdminUserLogic.php new file mode 100644 index 00000000..ff48ebf4 --- /dev/null +++ b/app/Classes/Modules/Accounts/ControllersLogic/CreateAdminUserLogic.php @@ -0,0 +1,73 @@ + 'Created Account', + 'message' => 'You have successfully created a new Account' + ]; + } + + /** @var CanCreateUser */ + private $canCreateUser; + + /** @var CreatesUser */ + private $createsUser; + + + /** + * CreateUserLogic constructor. + * @param CanCreateUser $canCreateUser + * @param CreatesUser $createsUser + */ + public function __construct( + CanCreateUser $canCreateUser, + CreatesUser $createsUser + ) + { + $this->canCreateUser = $canCreateUser; + $this->createsUser = $createsUser; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function logic(Request $request) : JsonResponse + { + + $user_object = new RegistrationObject($request->input('name'), $request->input('email'), + $request->input('password'), $request->input('password_confirmation'), + RoleTypes::ADMIN, ApprovalStatus::APPROVED); + + $this->canCreateUser->passes($user_object); + + $user = $this->createsUser->execute($user_object); + + return $this->resourceResponse(new UserResource($user)); + + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Accounts/ControllersLogic/DeleteUserLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/DeleteUserLogic.php new file mode 100644 index 00000000..485e9cf3 --- /dev/null +++ b/app/Classes/Modules/Accounts/ControllersLogic/DeleteUserLogic.php @@ -0,0 +1,76 @@ + 'Delete User', + 'message' => 'You have successfully deleted the User' + ]; + } + + /** @var CanDeleteUser */ + private $canDeleteUser; + + /** @var DeletesUser */ + private $deletesUser; + + /** @var FetchesUser */ + private $fetchesUser; + + + public function __construct( + CanDeleteUser $canDeleteUser, + DeletesUser $deletesUser, + FetchesUser $fetchesUser + ) + { + $this->canDeleteUser = $canDeleteUser; + $this->deletesUser = $deletesUser; + $this->fetchesUser = $fetchesUser; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + try { + DB::beginTransaction(); + + $user = $this->fetchesUser->execute(['id' => $request->route('id')]); + $this->canDeleteUser->passes(); + $this->deletesUser->execute($user); + + DB::commit(); + + return $this->resourceResponse(new UserResource($user)); + + } catch (\Exception $exception){ + throw new ErrorException($exception->getMessage(), $exception->getCode()); + } + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Accounts/DataTransferObjects/UserObject.php b/app/Classes/Modules/Accounts/DataTransferObjects/UserObject.php index b3988d3a..55fb5f31 100644 --- a/app/Classes/Modules/Accounts/DataTransferObjects/UserObject.php +++ b/app/Classes/Modules/Accounts/DataTransferObjects/UserObject.php @@ -3,20 +3,46 @@ namespace App\Classes\Modules\Accounts\DataTransferObjects; use App\Classes\General\Interfaces\DataTransferObject; +use App\Classes\ValueObjects\Constants\ApprovalStatus; +use App\Classes\ValueObjects\Constants\RoleTypes; class UserObject implements DataTransferObject { + /** @var string */ + private $name; /** @var string */ - private $name; + private $email; + + /** @var string */ + private $password; + + /** @var string */ + private $passwordConfirmation; + + /** @var int|null */ + private $type; + + /** @var int|null */ + private $status; /** - * NameObject constructor. + * UserObject constructor. * @param string $name + * @param string $email + * @param string $password + * @param string $passwordConfirmation + * @param int|null $type + * @param int|null $status */ - public function __construct(string $name) + public function __construct(string $name, string $email, string $password, string $passwordConfirmation, ?int $type = RoleTypes::USER, ?int $status = ApprovalStatus::PENDING_VERIFICATION) { - $this->name = $name; + $this->name = $name; + $this->email = $email; + $this->password = $password; + $this->passwordConfirmation = $passwordConfirmation; + $this->type = $type; + $this->status = $status; } /** @@ -25,6 +51,49 @@ class UserObject implements DataTransferObject public function getName(): string { return $this->name; - } + } + + /** + * @return string + */ + public function getEmail(): string + { + return $this->email; + } + + /** + * @return string + */ + public function getPassword(): string + { + return $this->password; + } + + /** + * @return string + */ + public function getPasswordConfirmation(): string + { + return $this->passwordConfirmation; + } + + /** + * @return int + */ + public function getType(): int + { + return $this->type; + } + + /** + * @return int + */ + public function getStatus(): int + { + return $this->status; + } + + + } \ No newline at end of file diff --git a/app/Classes/Modules/Accounts/Services/DeletesUser.php b/app/Classes/Modules/Accounts/Services/DeletesUser.php new file mode 100644 index 00000000..534331b0 --- /dev/null +++ b/app/Classes/Modules/Accounts/Services/DeletesUser.php @@ -0,0 +1,19 @@ +handler($model); + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Accounts/Standards/Rules/CanCreateUser.php b/app/Classes/Modules/Accounts/Standards/Rules/CanCreateUser.php new file mode 100644 index 00000000..2da56844 --- /dev/null +++ b/app/Classes/Modules/Accounts/Standards/Rules/CanCreateUser.php @@ -0,0 +1,57 @@ +userCreateValidation = $userCreateValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + + } + + /** + * @param RegistrationObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->userCreateValidation->validate($object); + + } + + + /** + * @param AddressObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Accounts/Standards/Rules/CanDeleteUser.php b/app/Classes/Modules/Accounts/Standards/Rules/CanDeleteUser.php new file mode 100644 index 00000000..f106bcc7 --- /dev/null +++ b/app/Classes/Modules/Accounts/Standards/Rules/CanDeleteUser.php @@ -0,0 +1,40 @@ + $object->getName(), + 'email' => $object->getEmail(), + 'password' => $object->getPassword(), + ]; + } + + /** + * @return array + */ + protected function rules(): array + { + return [ + 'name' => 'required', + 'email' => 'required|unique:users', + 'password' => 'required', + ]; + } + + /** + * @return array + */ + protected function messages(): array + { + return []; + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Addresses/ControllersLogic/UpdateAddressLogic.php b/app/Classes/Modules/Addresses/ControllersLogic/UpdateAddressLogic.php index aa7b4434..805bc7ac 100644 --- a/app/Classes/Modules/Addresses/ControllersLogic/UpdateAddressLogic.php +++ b/app/Classes/Modules/Addresses/ControllersLogic/UpdateAddressLogic.php @@ -6,6 +6,7 @@ namespace App\Classes\Modules\Addresses\ControllersLogic; use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\Addresses\Services\UpdatesAddress; use App\Classes\Modules\Addresses\Services\FetchesAddress; +use App\Classes\Modules\Addresses\Services\FetchesDistrict; use App\Classes\Modules\Addresses\Standards\Rules\CanUpdateAddress; use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject; use App\Http\Resources\AddressResource; @@ -35,17 +36,22 @@ class UpdateAddressLogic extends AbstractControllerLogic /** @var FetchesAddress */ private $fetchesAddress; + /** @var FetchesDistrict */ + private $fetchesDistrict; + /** * UpdateAddressLogic constructor. * @param CanUpdateAddress $canUpdateAddress * @param UpdatesAddress $updatesAddress * @param FetchesAddress $fetchesAddress + * @param FetchesDistrict $fetchesDistrict */ - public function __construct(CanUpdateAddress $canUpdateAddress, UpdatesAddress $updatesAddress, FetchesAddress $fetchesAddress) + public function __construct(CanUpdateAddress $canUpdateAddress, UpdatesAddress $updatesAddress, FetchesAddress $fetchesAddress, FetchesDistrict $fetchesDistrict) { $this->canUpdateAddress = $canUpdateAddress; $this->updatesAddress = $updatesAddress; $this->fetchesAddress = $fetchesAddress; + $this->fetchesDistrict = $fetchesDistrict; } @@ -58,7 +64,9 @@ class UpdateAddressLogic extends AbstractControllerLogic { try { - $object = new AddressObject($request->input('company_id'), $request->input('street_one'), $request->input('street_two'), $request->input('city'), $request->input('state'), $request->input('post_code'), $request->input('country'), $request->input('default'), $request->input('billing')); + $district = $this->fetchesDistrict->execute(['id' => $request->input('district_id')]); + $object = new AddressObject($request->input('street_one'), $request->input('street_two'), $district->country_id, $district->state_id, $district->id, $request->input('post_code')); + //$object = new AddressObject($request->input('company_id'), $request->input('street_one'), $request->input('street_two'), $request->input('city'), $request->input('state'), $request->input('post_code'), $request->input('country'), $request->input('default'), $request->input('billing')); $this->canUpdateAddress->passes($object); diff --git a/app/Classes/Modules/Addresses/Services/UpdatesAddress.php b/app/Classes/Modules/Addresses/Services/UpdatesAddress.php index 76ba4d15..907edc73 100644 --- a/app/Classes/Modules/Addresses/Services/UpdatesAddress.php +++ b/app/Classes/Modules/Addresses/Services/UpdatesAddress.php @@ -17,15 +17,15 @@ class UpdatesAddress extends AbstractUpdateRecord */ public function execute(Address $model, AddressObject $object) { - $model->company_id = $object->getCompanyId(); + //$model->company_id = $object->getCompanyId(); $model->street_one = $object->getStreetOne(); $model->street_two = $object->getStreetTwo(); - $model->city = $object->getCity(); - $model->state = $object->getState(); - $model->post_code = $object->getPostCode(); - $model->country = $object->getCountry(); - $model->default = $object->getDefault(); - $model->billing = $object->getBilling(); + $model->district_id = $object->getDistrictId(); + $model->state_id = $object->getStateId(); + $model->postcode = $object->getPostCode(); + $model->country_id = $object->getCountryId(); + //$model->default = $object->getDefault(); + //$model->billing = $object->getBilling(); return $this->handler($model); diff --git a/app/Http/Controllers/Accounts/CreateAdminUserController.php b/app/Http/Controllers/Accounts/CreateAdminUserController.php new file mode 100644 index 00000000..2c3a9ac7 --- /dev/null +++ b/app/Http/Controllers/Accounts/CreateAdminUserController.php @@ -0,0 +1,22 @@ +execute($request); + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Accounts/DeleteUserController.php b/app/Http/Controllers/Accounts/DeleteUserController.php new file mode 100644 index 00000000..375cdcbd --- /dev/null +++ b/app/Http/Controllers/Accounts/DeleteUserController.php @@ -0,0 +1,19 @@ +execute($request); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Bookings/DeleteBookingController.php b/app/Http/Controllers/Bookings/DeleteBookingController.php index dfbd8a01..f0bffeb2 100644 --- a/app/Http/Controllers/Bookings/DeleteBookingController.php +++ b/app/Http/Controllers/Bookings/DeleteBookingController.php @@ -1,8 +1,8 @@