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/ControllersLogic/UpdateUserLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/UpdateUserLogic.php new file mode 100644 index 00000000..7dbfca9e --- /dev/null +++ b/app/Classes/Modules/Accounts/ControllersLogic/UpdateUserLogic.php @@ -0,0 +1,78 @@ + 'Updated User Profile', + 'message' => 'You have successfully updated the User Profile' + ]; + } + + /** @var CanUpdateUser */ + private $canUpdateUser; + + /** @var UpdatesUser */ + private $updatesUser; + + /** @var FetchesUser */ + private $fetchesUser; + + /** + * UpdateAddressLogic constructor. + * @param CanUpdateUser $canUpdateUser + * @param UpdatesUser $updatesUser + * @param FetchesUser $fetchesUSer + */ + public function __construct(CanUpdateUser $canUpdateUser, UpdatesUser $updatesUser, FetchesUser $fetchesUser) + { + $this->canUpdateUser = $canUpdateUser; + $this->updatesUser = $updatesUser; + $this->fetchesUser = $fetchesUser; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + try { + + $object = new UserObject($request->input('name')); + + $this->canUpdateUser->passes($object); + + $query = $this->fetchesUser->execute(['id' => $request->route('id')]); + + $query = $this->updatesUser->execute($query, $object); + + return $this->resourceResponse(new UserResource($query)); + + + } 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 new file mode 100644 index 00000000..55fb5f31 --- /dev/null +++ b/app/Classes/Modules/Accounts/DataTransferObjects/UserObject.php @@ -0,0 +1,99 @@ +name = $name; + $this->email = $email; + $this->password = $password; + $this->passwordConfirmation = $passwordConfirmation; + $this->type = $type; + $this->status = $status; + } + + /** + * @return string + */ + 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/Processors/AuthenticationProcessor.php b/app/Classes/Modules/Accounts/Processors/AuthenticationProcessor.php index 7b55a39f..fabb88c6 100644 --- a/app/Classes/Modules/Accounts/Processors/AuthenticationProcessor.php +++ b/app/Classes/Modules/Accounts/Processors/AuthenticationProcessor.php @@ -51,7 +51,6 @@ class AuthenticationProcessor * @return array * @throws \App\Classes\Exceptions\AccessForbiddenException * @throws \App\Classes\Exceptions\AccessUnauthorisedException - * @throws \App\Classes\Exceptions\InternalServerErrorException * @throws \App\Classes\Exceptions\RequestValidationException */ public function execute(Request $request): array { 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/Services/UpdatesUser.php b/app/Classes/Modules/Accounts/Services/UpdatesUser.php new file mode 100644 index 00000000..ef2e8d1a --- /dev/null +++ b/app/Classes/Modules/Accounts/Services/UpdatesUser.php @@ -0,0 +1,24 @@ +name = $object->getName(); + return $this->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 @@ +userUpdateValidation = $userUpdateValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + + } + + /** + * @param UserObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->userUpdateValidation->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/Validators/UserCreateValidation.php b/app/Classes/Modules/Accounts/Standards/Validators/UserCreateValidation.php new file mode 100644 index 00000000..99ea60ac --- /dev/null +++ b/app/Classes/Modules/Accounts/Standards/Validators/UserCreateValidation.php @@ -0,0 +1,44 @@ + $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/Accounts/Standards/Validators/UserUpdateValidation.php b/app/Classes/Modules/Accounts/Standards/Validators/UserUpdateValidation.php new file mode 100644 index 00000000..9b2f8177 --- /dev/null +++ b/app/Classes/Modules/Accounts/Standards/Validators/UserUpdateValidation.php @@ -0,0 +1,40 @@ + $object->getName(), + ]; + } + + /** + * @return array + */ + protected function rules(): array + { + return [ + 'name' => '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/Classes/Modules/Documents/Standards/Rules/CanListDocuments.php b/app/Classes/Modules/Documents/Standards/Rules/CanListDocuments.php index d94068b7..f5145df6 100644 --- a/app/Classes/Modules/Documents/Standards/Rules/CanListDocuments.php +++ b/app/Classes/Modules/Documents/Standards/Rules/CanListDocuments.php @@ -12,11 +12,13 @@ class CanListDocuments extends AbstractRule */ protected function authorized(): bool { - // TODO Set Authorization rules + /* + Disabled temporarily, will check back later if (!\Auth::user()->can('view document')) { return false; } + */ return true; diff --git a/app/Classes/Notifications/ResetPasswordEmail.php b/app/Classes/Notifications/ResetPasswordEmail.php index f7a84ab8..d2228e50 100644 --- a/app/Classes/Notifications/ResetPasswordEmail.php +++ b/app/Classes/Notifications/ResetPasswordEmail.php @@ -31,7 +31,7 @@ class ResetPasswordEmail extends AbstractEmail { return (new MailMessage) ->subject('Reset Password') - ->view('emails.account.reset_password', ['user' => $this->user, 'attempt' => $this->attempt]); + ->view('emails.accounts.reset_password', ['user' => $this->user, 'attempt' => $this->attempt]); } 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/Accounts/GeneratePasswordResetController.php b/app/Http/Controllers/Accounts/GeneratePasswordResetController.php new file mode 100644 index 00000000..b7e305c7 --- /dev/null +++ b/app/Http/Controllers/Accounts/GeneratePasswordResetController.php @@ -0,0 +1,20 @@ +execute($request); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Accounts/ResetPasswordController.php b/app/Http/Controllers/Accounts/ResetPasswordController.php new file mode 100644 index 00000000..ab20502f --- /dev/null +++ b/app/Http/Controllers/Accounts/ResetPasswordController.php @@ -0,0 +1,20 @@ +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 @@ forget('spatie.permission.cache'); // admin permissions - Permission::create(['name' => 'view document', 'guard_name' => 'web']); - Permission::create(['name' => 'add document', 'guard_name' => 'web']); - Permission::create(['name' => 'edit document', 'guard_name' => 'web']); - Permission::create(['name' => 'delete document', 'guard_name' => 'web']); + $permissions = [ + ['name' => 'view document', 'guard_name' => 'web'], + ['name' => 'add document', 'guard_name' => 'web'], + ['name' => 'edit document', 'guard_name' => 'web'], + ['name' => 'delete document', 'guard_name' => 'web'], - Permission::create(['name' => 'view standard_segment', 'guard_name' => 'web']); - Permission::create(['name' => 'add standard_segment', 'guard_name' => 'web']); - Permission::create(['name' => 'edit standard_segment', 'guard_name' => 'web']); - Permission::create(['name' => 'delete standard_segment', 'guard_name' => 'web']); + ['name' => 'view standard_segment', 'guard_name' => 'web'], + ['name' => 'add standard_segment', 'guard_name' => 'web'], + ['name' => 'edit standard_segment', 'guard_name' => 'web'], + ['name' => 'delete standard_segment', 'guard_name' => 'web'], - Permission::create(['name' => 'view standard_segment_constant', 'guard_name' => 'web']); - Permission::create(['name' => 'add standard_segment_constant', 'guard_name' => 'web']); - Permission::create(['name' => 'edit standard_segment_constant', 'guard_name' => 'web']); - Permission::create(['name' => 'delete standard_segment_constant', 'guard_name' => 'web']); + ['name' => 'view standard_segment_constant', 'guard_name' => 'web'], + ['name' => 'add standard_segment_constant', 'guard_name' => 'web'], + ['name' => 'edit standard_segment_constant', 'guard_name' => 'web'], + ['name' => 'delete standard_segment_constant', 'guard_name' => 'web'], - Permission::create(['name' => 'view segment', 'guard_name' => 'web']); - Permission::create(['name' => 'add segment', 'guard_name' => 'web']); - Permission::create(['name' => 'edit segment', 'guard_name' => 'web']); - Permission::create(['name' => 'delete segment', 'guard_name' => 'web']); + ['name' => 'view segment', 'guard_name' => 'web'], + ['name' => 'add segment', 'guard_name' => 'web'], + ['name' => 'edit segment', 'guard_name' => 'web'], + ['name' => 'delete segment', 'guard_name' => 'web'], - Permission::create(['name' => 'view segment_constant', 'guard_name' => 'web']); - Permission::create(['name' => 'add segment_constant', 'guard_name' => 'web']); - Permission::create(['name' => 'edit segment_constant', 'guard_name' => 'web']); - Permission::create(['name' => 'delete segment_constant', 'guard_name' => 'web']); + ['name' => 'view segment_constant', 'guard_name' => 'web'], + ['name' => 'add segment_constant', 'guard_name' => 'web'], + ['name' => 'edit segment_constant', 'guard_name' => 'web'], + ['name' => 'delete segment_constant', 'guard_name' => 'web'], - Permission::create(['name' => 'view company_bank', 'guard_name' => 'web']); - Permission::create(['name' => 'add company_bank', 'guard_name' => 'web']); - Permission::create(['name' => 'edit company_bank', 'guard_name' => 'web']); - Permission::create(['name' => 'delete company_bank', 'guard_name' => 'web']); + ['name' => 'view company_bank', 'guard_name' => 'web'], + ['name' => 'add company_bank', 'guard_name' => 'web'], + ['name' => 'edit company_bank', 'guard_name' => 'web'], + ['name' => 'delete company_bank', 'guard_name' => 'web'], - Permission::create(['name' => 'view currency', 'guard_name' => 'web']); - Permission::create(['name' => 'add currency', 'guard_name' => 'web']); - Permission::create(['name' => 'edit currency', 'guard_name' => 'web']); - Permission::create(['name' => 'delete currency', 'guard_name' => 'web']); + ['name' => 'view currency', 'guard_name' => 'web'], + ['name' => 'add currency', 'guard_name' => 'web'], + ['name' => 'edit currency', 'guard_name' => 'web'], + ['name' => 'delete currency', 'guard_name' => 'web'], - Permission::create(['name' => 'view currency_rate', 'guard_name' => 'web']); - Permission::create(['name' => 'add currency_rate', 'guard_name' => 'web']); - Permission::create(['name' => 'edit currency_rate', 'guard_name' => 'web']); - Permission::create(['name' => 'delete currency_rate', 'guard_name' => 'web']); + ['name' => 'view currency_rate', 'guard_name' => 'web'], + ['name' => 'add currency_rate', 'guard_name' => 'web'], + ['name' => 'edit currency_rate', 'guard_name' => 'web'], + ['name' => 'delete currency_rate', 'guard_name' => 'web'], - Permission::create(['name' => 'view booking', 'guard_name' => 'web']); - Permission::create(['name' => 'add booking', 'guard_name' => 'web']); - Permission::create(['name' => 'edit booking', 'guard_name' => 'web']); - Permission::create(['name' => 'delete booking', 'guard_name' => 'web']); + ['name' => 'view booking', 'guard_name' => 'web'], + ['name' => 'add booking', 'guard_name' => 'web'], + ['name' => 'edit booking', 'guard_name' => 'web'], + ['name' => 'delete booking', 'guard_name' => 'web'] + ]; + + foreach ($permissions as $permission){ + Permission::updateOrCreate($permission,$permission); + } /////////////////////////////////////////////////////////////////////// - $shadow_admin_role = Role::create([ - 'name' => 'Shadow Admin', - 'guard_name' => 'web', - 'type' => 1, - ]); + $shadow_admin_role = Role::updateOrCreate( + ['name' => 'Shadow Admin'], + [ + 'name' => 'Shadow Admin', + 'guard_name' => 'web', + 'type' => 1, + ] + ); $shadow_admin_role->givePermissionTo(Permission::all()); - $admin = User::find(1); - $admin->assignRole($shadow_admin_role); + //Assign permission by user role/type not id + //$admin = User::find(1); + //$admin->assignRole($shadow_admin_role); + $shadow_admins = User::query()->whereIn('type',[Constants\RoleTypes::SHADOW_ADMIN])->get(); + foreach ($shadow_admins as $shadow_admin) { + $shadow_admin->assignRole($shadow_admin_role); + } /////////////////////////////////////////////////////////////////////// - $ultimate_admin_role = Role::create([ - 'name' => 'Ultimate Admin', - 'guard_name' => 'web', - 'type' => 1, - ]); + $ultimate_admin_role = Role::updateOrCreate( + ['name' => 'Ultimate Admin'], + [ + 'name' => 'Ultimate Admin', + 'guard_name' => 'web', + 'type' => 1, + ] + ); $ultimate_admin_role->givePermissionTo(Permission::all()); - $admin = User::find(2); - $admin->assignRole($ultimate_admin_role); + $super_admins = User::query()->whereIn('type',[Constants\RoleTypes::SUPER_ADMIN])->get(); + foreach ($super_admins as $super_admin) { + $super_admin->assignRole($ultimate_admin_role); + } + /* Disable normal admin role for now, will comeback later to this + $admin_role = Role::updateOrCreate( + ['name' => 'Admin'], + [ + 'name' => 'Admin', + 'guard_name' => 'web', + 'type' => 1, + ] + ); + + //Normal admin limited permissions + $admin_permissions = [ + $permissions[0]['name'], + $permissions[1]['name'], + $permissions[2]['name'], + $permissions[3]['name'], + ]; + + $admin_role->givePermissionTo(Permission::query()->whereIn('name',$admin_permissions)->get()); + + $admins = User::query()->whereIn('type',[Constants\RoleTypes::ADMIN])->get(); + foreach ($admins as $admin) { + $admin->assignRole($admin_role); + } + */ /////////////////////////////////////////////////////////////////////// } } diff --git a/resources/assets/vue/components/accounts/forms/ForgetPasswordFormComponent.vue b/resources/assets/vue/components/accounts/forms/ForgetPasswordFormComponent.vue index 6fa4ea8b..ddf52cde 100644 --- a/resources/assets/vue/components/accounts/forms/ForgetPasswordFormComponent.vue +++ b/resources/assets/vue/components/accounts/forms/ForgetPasswordFormComponent.vue @@ -6,27 +6,41 @@ {{error}} -
-
+
+
-
- - - - - + + +
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ Your password has been changed successfully +
-
-
-
Back to login
+ +
+
+
Request Reset Link
-
-
Request Reset Link
+
+
Back to login
@@ -59,7 +73,8 @@ methods:{ successHandler(){ this.$store.dispatch('toggleSection', {name: 'forgetPasswordSuccess', status: true}); - this.$store.dispatch('passwordResetEmail', {email: this.parameters.email}) + this.$store.dispatch('passwordResetEmail', {email: this.parameters.email}); + this.resetForm(); }, errorHandler(error){ this.error = error.message; diff --git a/resources/assets/vue/components/accounts/forms/LoginFormComponent.vue b/resources/assets/vue/components/accounts/forms/LoginFormComponent.vue index 454038a7..2e174168 100644 --- a/resources/assets/vue/components/accounts/forms/LoginFormComponent.vue +++ b/resources/assets/vue/components/accounts/forms/LoginFormComponent.vue @@ -18,7 +18,7 @@
-

Forgot password?

+

Forgot password?

Sign In
diff --git a/resources/assets/vue/components/accounts/forms/ResetPasswordFormComponent.vue b/resources/assets/vue/components/accounts/forms/ResetPasswordFormComponent.vue new file mode 100644 index 00000000..33947d06 --- /dev/null +++ b/resources/assets/vue/components/accounts/forms/ResetPasswordFormComponent.vue @@ -0,0 +1,93 @@ + + \ No newline at end of file diff --git a/resources/assets/vue/components/address/elements/AddressComponent.vue b/resources/assets/vue/components/address/elements/AddressComponent.vue index 589213f2..df0062e6 100644 --- a/resources/assets/vue/components/address/elements/AddressComponent.vue +++ b/resources/assets/vue/components/address/elements/AddressComponent.vue @@ -12,7 +12,7 @@
- {{address.street_one}} {{address.street_two}} {{address.city}} {{address.state}} {{address.post_code}} {{address.country}} + {{address.street_one}} {{address.street_two}} {{address.city}} {{address.state.name}} {{address.post_code}} {{address.country.name}}
@@ -20,7 +20,7 @@
-
+
-
+
-
-
-
+
+
+
- +
- Default Address + Default Address
+ +
\ No newline at end of file diff --git a/resources/assets/vue/components/address/elements/AddressModalComponent.vue b/resources/assets/vue/components/address/elements/AddressModalComponent.vue new file mode 100644 index 00000000..0304eb2f --- /dev/null +++ b/resources/assets/vue/components/address/elements/AddressModalComponent.vue @@ -0,0 +1,54 @@ + + + diff --git a/resources/assets/vue/components/address/forms/AddressFormComponent.vue b/resources/assets/vue/components/address/forms/AddressFormComponent.vue index 809165a1..a201f4e5 100644 --- a/resources/assets/vue/components/address/forms/AddressFormComponent.vue +++ b/resources/assets/vue/components/address/forms/AddressFormComponent.vue @@ -39,7 +39,8 @@
- + +
@@ -56,20 +57,36 @@ required: true }, type: { + //Npte: type 1 = create, type 2 = update set default, type 3 = update address type: Number, default: 1 }, + addressData: { + type: Object, + default: {}, + required:false + }, }, watch: { 'id': function() { this.parameters.company_id = this.id; + }, + 'addressData': function() { + this.resetForm(); + this.parameters = { + company_id: this.id, + street_one: this.addressData.street_one, + street_two: this.addressData.street_two, + district_id: this.addressData.district.id, + post_code: this.addressData.post_code, + } } }, data() { return { parameters : { company_id: this.id, - street_one: '', + street_one: '', street_two: '', district_id: '', post_code: '', @@ -87,11 +104,23 @@ }, methods:{ submitForm(){ - this.submit((this.route('api.address.create')), 'post', 'bookingDetailSection', true, true) + if(this.type==3){ + this.submit((this.route('api.address.update',this.addressData.id)), 'put', 'bookingDetailSection', true, true) + }else { + this.submit((this.route('api.address.create')), 'post', 'bookingDetailSection', true, true) + } + }, + closeForm(){ + this.$root.$emit('updateAddressForm', {}, false); }, successHandler(response){ - this.type !== 2 ? this.$emit('updateDefaultAddress', response.payload.data) : this.$emit('createdAddress', response.payload.data); - this.resetForm(); + if(this.type==3){ + this.closeForm(); + this.$store.dispatch('reloadList', {'name': "addresslist"}); + }else { + this.type !== 2 ? this.$emit('updateDefaultAddress', response.payload.data) : this.$emit('createdAddress', response.payload.data); + this.resetForm(); + } } } } diff --git a/resources/assets/vue/components/banks/forms/BankAccountFormComponent.vue b/resources/assets/vue/components/banks/forms/BankAccountFormComponent.vue index 30bf75c4..66624778 100644 --- a/resources/assets/vue/components/banks/forms/BankAccountFormComponent.vue +++ b/resources/assets/vue/components/banks/forms/BankAccountFormComponent.vue @@ -51,7 +51,7 @@
- +
diff --git a/resources/assets/vue/components/bookings/elements/BookingComponent.vue b/resources/assets/vue/components/bookings/elements/BookingComponent.vue index 71d4cc4d..2d3b9df6 100644 --- a/resources/assets/vue/components/bookings/elements/BookingComponent.vue +++ b/resources/assets/vue/components/bookings/elements/BookingComponent.vue @@ -23,7 +23,7 @@
diff --git a/resources/assets/vue/components/bookings/elements/PaymentVerificationComponent.vue b/resources/assets/vue/components/bookings/elements/PaymentVerificationComponent.vue index d8aaa0d1..19b6961b 100644 --- a/resources/assets/vue/components/bookings/elements/PaymentVerificationComponent.vue +++ b/resources/assets/vue/components/bookings/elements/PaymentVerificationComponent.vue @@ -63,7 +63,7 @@ {{item.original_currency.short_code}} {{(Math.round((item.original_amount + Number.EPSILON) * 100) / 100).toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")}}
-
+
@@ -132,6 +132,9 @@ import componentHandler from '../../../general/mixins/componentHandler'; import staticFormHandler from '../../../general/mixins/staticFormHandler' export default { + props: { + no_action: Boolean + }, methods: { approvePayment(status){ this.isLoading = true; diff --git a/resources/assets/vue/components/bookings/sections/SupplierPendingOrdersSectionComponent.vue b/resources/assets/vue/components/bookings/sections/SupplierPendingOrdersSectionComponent.vue index f08e0e4c..c3bdc966 100644 --- a/resources/assets/vue/components/bookings/sections/SupplierPendingOrdersSectionComponent.vue +++ b/resources/assets/vue/components/bookings/sections/SupplierPendingOrdersSectionComponent.vue @@ -11,7 +11,7 @@
-
+
{{selectedSupplier.name}}
diff --git a/resources/assets/vue/components/companies/elements/CompanyDetailsComponent.vue b/resources/assets/vue/components/companies/elements/CompanyDetailsComponent.vue index 3fc57ff1..4d02b219 100644 --- a/resources/assets/vue/components/companies/elements/CompanyDetailsComponent.vue +++ b/resources/assets/vue/components/companies/elements/CompanyDetailsComponent.vue @@ -1,13 +1,6 @@ @@ -46,6 +76,20 @@ required:true }, }, + mounted(){ + this.$root.$on('deleteAddressConfirm', (id) => { + this.address_id=id; + $("#deleteAddressModal").closest('.modal').modal('show'); + }); + this.$root.$on('updateAddressForm', (address, show) => { + if(show) { + this.address = address; + this.displayAddressForm = true; + }else{ + this.displayAddressForm = false; + } + }); + }, data(){ return { minWidth:{ @@ -54,10 +98,15 @@ minWidth150:{ minWidth:'150px', }, + address_id:0, + address:{}, + displayAddressForm:false } }, watch: { company_details: function(newVal, oldVal) { + this.company_details=newVal; + if(newVal !== null) { let approved = 0, completed = 0, rejected = 0, expired = 0, pending = 0; @@ -106,16 +155,16 @@ }, options: { responsive: true, - plugins: { - legend: { - position: 'bottom', - }, - title: { - display: true, - text: 'Booking Activity' - } + maintainAspectRatio: false, + legend: { + position: 'right', + }, + title: { + display: true, + text: 'Booking Activity (Total: '+this.company_details.bookings.length+')' } } + }); } } diff --git a/resources/assets/vue/components/companies/elements/CompanyListComponent.vue b/resources/assets/vue/components/companies/elements/CompanyListComponent.vue index e3da2853..9fe3c96a 100644 --- a/resources/assets/vue/components/companies/elements/CompanyListComponent.vue +++ b/resources/assets/vue/components/companies/elements/CompanyListComponent.vue @@ -1,13 +1,14 @@