diff --git a/app/Classes/Exceptions/ConnectionErrorException.php b/app/Classes/Exceptions/ConnectionErrorException.php new file mode 100644 index 00000000..52189ac8 --- /dev/null +++ b/app/Classes/Exceptions/ConnectionErrorException.php @@ -0,0 +1,20 @@ +notification()['title'] ? $this->notification()['title']: Notifications::UNDEFINED['title']; + } + + /** + * @return string + */ + private function getNotificationMessage():string { + return $this->notification()['message'] ? $this->notification()['message']: Notifications::UNDEFINED['message']; + } + + /** + * @param Request $request + * @return BinaryFileResponse + * @throws ErrorException + */ + abstract protected function logic(Request $request) : BinaryFileResponse; + + /** + * @param Request $request + * @return BinaryFileResponse + */ + public function execute(Request $request) : BinaryFileResponse { + + try { + + DB::beginTransaction(); + + $response = $this->logic($request); + + DB::commit(); + + return $response; + + } catch (ErrorException|GeneralExceptions|TypeError $exception){ + abort(404, $exception->getMessage()); + } + } + + /** + * @param array|null $data + * @return JsonResponse + */ + public function response(?array $data = []) : JsonResponse { + + return (new ApiResponseObject($this->getNotificationTitle().' Successful', + $this->getNotificationMessage(), + HttpStatus::OK_WITH_MESSAGE, $data))->handler(); + } + + /** + * @param JsonResource $resource + * @return JsonResponse + */ + public function resourceResponse(JsonResource $resource){ + return $this->response(['data' => $resource]); + } + + /** + * @param ResourceCollection $collection + * @return JsonResponse + */ + public function collectionResponse(ResourceCollection $collection){ + return $this->response(json_decode($collection->response()->getContent(), true)); + } + +} diff --git a/app/Classes/General/Abstracts/AbstractRule.php b/app/Classes/General/Abstracts/AbstractRule.php index d2e0568b..5b424df0 100644 --- a/app/Classes/General/Abstracts/AbstractRule.php +++ b/app/Classes/General/Abstracts/AbstractRule.php @@ -10,7 +10,7 @@ use App\Classes\General\Interfaces\DataTransferObject; abstract class AbstractRule { - abstract protected function authorized(): bool; + abstract protected function authorized($object): bool; abstract protected function validators($object): bool; @@ -26,8 +26,8 @@ abstract class AbstractRule */ public function passes(?DataTransferObject $object = null): bool { try { - if(!$this->authorized()){ - throw new AccessForbiddenException('You don\'t have permission to preform this action'); + if(!$this->authorized($object)){ + throw new AccessForbiddenException('You don\'t have permission to perform this action'); } $this->validators($object); @@ -36,11 +36,11 @@ abstract class AbstractRule return true; } catch(AccessForbiddenException $exception){ - throw new AccessForbiddenException('You don\'t have permission to preform this action'); + throw new AccessForbiddenException('You don\'t have permission to perform this action'); } catch(\Exception $exception){ throw new RequestValidationException($exception->getMessage()); } } -} \ No newline at end of file +} diff --git a/app/Classes/General/Eloquent/Filters/HasQuestionnaireGroupIn.php b/app/Classes/General/Eloquent/Filters/HasQuestionnaireGroupIn.php new file mode 100644 index 00000000..b578eb7d --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/HasQuestionnaireGroupIn.php @@ -0,0 +1,22 @@ +whereHas('question.questionnaire', function (Builder $query) use ($value) { + $query->whereIn('group', $value); + }); + } + +} diff --git a/app/Classes/General/Eloquent/Filters/IdNext.php b/app/Classes/General/Eloquent/Filters/IdNext.php new file mode 100644 index 00000000..88d6d936 --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/IdNext.php @@ -0,0 +1,18 @@ +where('id', '>', $value); + } +} diff --git a/app/Classes/General/Eloquent/Filters/NextMainQuestion.php b/app/Classes/General/Eloquent/Filters/NextMainQuestion.php new file mode 100644 index 00000000..044fea6f --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/NextMainQuestion.php @@ -0,0 +1,18 @@ +where('next_main_question', $value); + } +} diff --git a/app/Classes/General/Eloquent/Filters/QuestionId.php b/app/Classes/General/Eloquent/Filters/QuestionId.php new file mode 100644 index 00000000..3d7da287 --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/QuestionId.php @@ -0,0 +1,19 @@ +where('question_id', $value); + } + +} diff --git a/app/Classes/General/Eloquent/Filters/QuestionNumber.php b/app/Classes/General/Eloquent/Filters/QuestionNumber.php new file mode 100644 index 00000000..fcdd3c29 --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/QuestionNumber.php @@ -0,0 +1,19 @@ +where('question_number', $value); + } + +} diff --git a/app/Classes/General/Eloquent/Filters/QuestionnaireSetId.php b/app/Classes/General/Eloquent/Filters/QuestionnaireSetId.php new file mode 100644 index 00000000..41006e7f --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/QuestionnaireSetId.php @@ -0,0 +1,19 @@ +where('questionnaire_set_id', $value); + } + +} diff --git a/app/Classes/General/Eloquent/Filters/ShortUrl.php b/app/Classes/General/Eloquent/Filters/ShortUrl.php new file mode 100644 index 00000000..12e2eb17 --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/ShortUrl.php @@ -0,0 +1,20 @@ +where('short_url', $value); + } + +} diff --git a/app/Classes/General/Eloquent/Filters/UserId.php b/app/Classes/General/Eloquent/Filters/UserId.php new file mode 100644 index 00000000..54fe6719 --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/UserId.php @@ -0,0 +1,18 @@ +where('user_id', $value); + } +} diff --git a/app/Classes/Modules/Accounts/Standards/Rules/CanAuthenticateUser.php b/app/Classes/Modules/Accounts/Standards/Rules/CanAuthenticateUser.php index ad2be911..a2e05454 100644 --- a/app/Classes/Modules/Accounts/Standards/Rules/CanAuthenticateUser.php +++ b/app/Classes/Modules/Accounts/Standards/Rules/CanAuthenticateUser.php @@ -26,7 +26,7 @@ class CanAuthenticateUser extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { return true; @@ -54,4 +54,4 @@ class CanAuthenticateUser extends AbstractRule return true; } -} \ 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 index 2da56844..c79e2f03 100644 --- a/app/Classes/Modules/Accounts/Standards/Rules/CanCreateUser.php +++ b/app/Classes/Modules/Accounts/Standards/Rules/CanCreateUser.php @@ -26,7 +26,7 @@ class CanCreateUser extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -54,4 +54,4 @@ class CanCreateUser extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Accounts/Standards/Rules/CanCrossAuthenticateUser.php b/app/Classes/Modules/Accounts/Standards/Rules/CanCrossAuthenticateUser.php index 115a7ea6..43166973 100644 --- a/app/Classes/Modules/Accounts/Standards/Rules/CanCrossAuthenticateUser.php +++ b/app/Classes/Modules/Accounts/Standards/Rules/CanCrossAuthenticateUser.php @@ -26,7 +26,7 @@ class CanCrossAuthenticateUser extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { return true; @@ -51,4 +51,4 @@ class CanCrossAuthenticateUser extends AbstractRule { 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 index f106bcc7..3436b201 100644 --- a/app/Classes/Modules/Accounts/Standards/Rules/CanDeleteUser.php +++ b/app/Classes/Modules/Accounts/Standards/Rules/CanDeleteUser.php @@ -10,7 +10,7 @@ class CanDeleteUser extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -37,4 +37,4 @@ class CanDeleteUser extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Accounts/Standards/Rules/CanFetchUser.php b/app/Classes/Modules/Accounts/Standards/Rules/CanFetchUser.php index 740e231c..fb6fb6c5 100644 --- a/app/Classes/Modules/Accounts/Standards/Rules/CanFetchUser.php +++ b/app/Classes/Modules/Accounts/Standards/Rules/CanFetchUser.php @@ -12,7 +12,7 @@ class CanFetchUser extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { return true; @@ -39,4 +39,4 @@ class CanFetchUser extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Accounts/Standards/Rules/CanGeneratePasswordReset.php b/app/Classes/Modules/Accounts/Standards/Rules/CanGeneratePasswordReset.php index 8a9b8226..5cbe6d03 100644 --- a/app/Classes/Modules/Accounts/Standards/Rules/CanGeneratePasswordReset.php +++ b/app/Classes/Modules/Accounts/Standards/Rules/CanGeneratePasswordReset.php @@ -33,7 +33,7 @@ class CanGeneratePasswordReset extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { return true; @@ -62,4 +62,4 @@ class CanGeneratePasswordReset extends AbstractRule } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Accounts/Standards/Rules/CanListUsers.php b/app/Classes/Modules/Accounts/Standards/Rules/CanListUsers.php index d1ba2ea0..c80131dc 100644 --- a/app/Classes/Modules/Accounts/Standards/Rules/CanListUsers.php +++ b/app/Classes/Modules/Accounts/Standards/Rules/CanListUsers.php @@ -13,7 +13,7 @@ class CanListUsers extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { return true; @@ -39,4 +39,4 @@ class CanListUsers extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Accounts/Standards/Rules/CanRegisterUser.php b/app/Classes/Modules/Accounts/Standards/Rules/CanRegisterUser.php index d0720d1c..43cabf15 100644 --- a/app/Classes/Modules/Accounts/Standards/Rules/CanRegisterUser.php +++ b/app/Classes/Modules/Accounts/Standards/Rules/CanRegisterUser.php @@ -24,7 +24,7 @@ class CanRegisterUser extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -48,4 +48,4 @@ class CanRegisterUser extends AbstractRule { return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Accounts/Standards/Rules/CanResetPassword.php b/app/Classes/Modules/Accounts/Standards/Rules/CanResetPassword.php index cf620414..8de3064f 100644 --- a/app/Classes/Modules/Accounts/Standards/Rules/CanResetPassword.php +++ b/app/Classes/Modules/Accounts/Standards/Rules/CanResetPassword.php @@ -34,7 +34,7 @@ class CanResetPassword extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { return true; @@ -62,4 +62,4 @@ class CanResetPassword extends AbstractRule return $this->passwordResetTokenExists->execute($object->getToken()); } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Accounts/Standards/Rules/CanUpdateUser.php b/app/Classes/Modules/Accounts/Standards/Rules/CanUpdateUser.php index a523ac12..fa59f0b1 100644 --- a/app/Classes/Modules/Accounts/Standards/Rules/CanUpdateUser.php +++ b/app/Classes/Modules/Accounts/Standards/Rules/CanUpdateUser.php @@ -26,7 +26,7 @@ class CanUpdateUser extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -54,4 +54,4 @@ class CanUpdateUser extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Addresses/Standards/Rules/CanCreateAddress.php b/app/Classes/Modules/Addresses/Standards/Rules/CanCreateAddress.php index 42508b1d..0ef1e5da 100644 --- a/app/Classes/Modules/Addresses/Standards/Rules/CanCreateAddress.php +++ b/app/Classes/Modules/Addresses/Standards/Rules/CanCreateAddress.php @@ -26,7 +26,7 @@ class CanCreateAddress extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -54,4 +54,4 @@ class CanCreateAddress extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Addresses/Standards/Rules/CanDeleteAddress.php b/app/Classes/Modules/Addresses/Standards/Rules/CanDeleteAddress.php index c13a890c..73f3ecdc 100644 --- a/app/Classes/Modules/Addresses/Standards/Rules/CanDeleteAddress.php +++ b/app/Classes/Modules/Addresses/Standards/Rules/CanDeleteAddress.php @@ -13,7 +13,7 @@ class CanDeleteAddress extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -40,4 +40,4 @@ class CanDeleteAddress extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Addresses/Standards/Rules/CanFetchAddress.php b/app/Classes/Modules/Addresses/Standards/Rules/CanFetchAddress.php index ffe53bee..41c8c1d3 100644 --- a/app/Classes/Modules/Addresses/Standards/Rules/CanFetchAddress.php +++ b/app/Classes/Modules/Addresses/Standards/Rules/CanFetchAddress.php @@ -13,7 +13,7 @@ class CanFetchAddress extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -40,4 +40,4 @@ class CanFetchAddress extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Addresses/Standards/Rules/CanListAddresses.php b/app/Classes/Modules/Addresses/Standards/Rules/CanListAddresses.php index aa02c55c..8170d7e0 100644 --- a/app/Classes/Modules/Addresses/Standards/Rules/CanListAddresses.php +++ b/app/Classes/Modules/Addresses/Standards/Rules/CanListAddresses.php @@ -13,7 +13,7 @@ class CanListAddresses extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -40,4 +40,4 @@ class CanListAddresses extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Addresses/Standards/Rules/CanUpdateAddress.php b/app/Classes/Modules/Addresses/Standards/Rules/CanUpdateAddress.php index 355b590a..9bd8b367 100644 --- a/app/Classes/Modules/Addresses/Standards/Rules/CanUpdateAddress.php +++ b/app/Classes/Modules/Addresses/Standards/Rules/CanUpdateAddress.php @@ -26,7 +26,7 @@ class CanUpdateAddress extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -54,4 +54,4 @@ class CanUpdateAddress extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Announcements/Standards/Rules/CanAssignSegment.php b/app/Classes/Modules/Announcements/Standards/Rules/CanAssignSegment.php index 625a07a1..49c0319a 100644 --- a/app/Classes/Modules/Announcements/Standards/Rules/CanAssignSegment.php +++ b/app/Classes/Modules/Announcements/Standards/Rules/CanAssignSegment.php @@ -13,7 +13,7 @@ class CanAssignSegment extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -37,4 +37,4 @@ class CanAssignSegment extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Announcements/Standards/Rules/CanCreateAnnouncement.php b/app/Classes/Modules/Announcements/Standards/Rules/CanCreateAnnouncement.php index a01e0de1..935b8d3e 100644 --- a/app/Classes/Modules/Announcements/Standards/Rules/CanCreateAnnouncement.php +++ b/app/Classes/Modules/Announcements/Standards/Rules/CanCreateAnnouncement.php @@ -24,7 +24,7 @@ class CanCreateAnnouncement extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { return true; } @@ -47,4 +47,4 @@ class CanCreateAnnouncement extends AbstractRule { return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Announcements/Standards/Rules/CanDeleteAnnouncement.php b/app/Classes/Modules/Announcements/Standards/Rules/CanDeleteAnnouncement.php index 8a41deab..f4db8c4f 100644 --- a/app/Classes/Modules/Announcements/Standards/Rules/CanDeleteAnnouncement.php +++ b/app/Classes/Modules/Announcements/Standards/Rules/CanDeleteAnnouncement.php @@ -10,7 +10,7 @@ class CanDeleteAnnouncement extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -37,4 +37,4 @@ class CanDeleteAnnouncement extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Announcements/Standards/Rules/CanListAnnouncements.php b/app/Classes/Modules/Announcements/Standards/Rules/CanListAnnouncements.php index a4c02847..0c47546f 100644 --- a/app/Classes/Modules/Announcements/Standards/Rules/CanListAnnouncements.php +++ b/app/Classes/Modules/Announcements/Standards/Rules/CanListAnnouncements.php @@ -11,7 +11,7 @@ class CanListAnnouncements extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { return true; } diff --git a/app/Classes/Modules/Announcements/Standards/Rules/CanUpdateAnnouncement.php b/app/Classes/Modules/Announcements/Standards/Rules/CanUpdateAnnouncement.php index d861d255..b82cecef 100644 --- a/app/Classes/Modules/Announcements/Standards/Rules/CanUpdateAnnouncement.php +++ b/app/Classes/Modules/Announcements/Standards/Rules/CanUpdateAnnouncement.php @@ -26,7 +26,7 @@ class CanUpdateAnnouncement extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -51,4 +51,4 @@ class CanUpdateAnnouncement extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Banks/Standards/Rules/CanCreateBank.php b/app/Classes/Modules/Banks/Standards/Rules/CanCreateBank.php index 8cef85d8..0f5fbe63 100644 --- a/app/Classes/Modules/Banks/Standards/Rules/CanCreateBank.php +++ b/app/Classes/Modules/Banks/Standards/Rules/CanCreateBank.php @@ -24,7 +24,7 @@ class CanCreateBank extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { return true; } @@ -47,4 +47,4 @@ class CanCreateBank extends AbstractRule { return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Banks/Standards/Rules/CanDeleteBank.php b/app/Classes/Modules/Banks/Standards/Rules/CanDeleteBank.php index 074550e5..1c800373 100644 --- a/app/Classes/Modules/Banks/Standards/Rules/CanDeleteBank.php +++ b/app/Classes/Modules/Banks/Standards/Rules/CanDeleteBank.php @@ -10,7 +10,7 @@ class CanDeleteBank extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -37,4 +37,4 @@ class CanDeleteBank extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Banks/Standards/Rules/CanListBanks.php b/app/Classes/Modules/Banks/Standards/Rules/CanListBanks.php index d01232e7..caa4f817 100644 --- a/app/Classes/Modules/Banks/Standards/Rules/CanListBanks.php +++ b/app/Classes/Modules/Banks/Standards/Rules/CanListBanks.php @@ -12,7 +12,7 @@ class CanListBanks extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { return true; } @@ -34,4 +34,4 @@ class CanListBanks extends AbstractRule { return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Banks/Standards/Rules/CanUpdateBank.php b/app/Classes/Modules/Banks/Standards/Rules/CanUpdateBank.php index e7a6d0fc..ce4285bd 100644 --- a/app/Classes/Modules/Banks/Standards/Rules/CanUpdateBank.php +++ b/app/Classes/Modules/Banks/Standards/Rules/CanUpdateBank.php @@ -26,7 +26,7 @@ class CanUpdateBank extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -51,4 +51,4 @@ class CanUpdateBank extends AbstractRule return true; } -} \ 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 index f34f83ff..87994058 100644 --- a/app/Classes/Modules/Companies/Standards/Rules/CanAssignEmployee.php +++ b/app/Classes/Modules/Companies/Standards/Rules/CanAssignEmployee.php @@ -26,7 +26,7 @@ class CanAssignEmployee extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -51,4 +51,4 @@ class CanAssignEmployee extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Companies/Standards/Rules/CanAssignSegment.php b/app/Classes/Modules/Companies/Standards/Rules/CanAssignSegment.php index 36fd2a41..925494f7 100644 --- a/app/Classes/Modules/Companies/Standards/Rules/CanAssignSegment.php +++ b/app/Classes/Modules/Companies/Standards/Rules/CanAssignSegment.php @@ -13,7 +13,7 @@ class CanAssignSegment extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -37,4 +37,4 @@ class CanAssignSegment extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Companies/Standards/Rules/CanCreateCompany.php b/app/Classes/Modules/Companies/Standards/Rules/CanCreateCompany.php index 75015ff0..a858626e 100644 --- a/app/Classes/Modules/Companies/Standards/Rules/CanCreateCompany.php +++ b/app/Classes/Modules/Companies/Standards/Rules/CanCreateCompany.php @@ -24,7 +24,7 @@ class CanCreateCompany extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -48,4 +48,4 @@ class CanCreateCompany extends AbstractRule { return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Companies/Standards/Rules/CanCreateCompanyModule.php b/app/Classes/Modules/Companies/Standards/Rules/CanCreateCompanyModule.php index e017c7f1..e6e519f0 100644 --- a/app/Classes/Modules/Companies/Standards/Rules/CanCreateCompanyModule.php +++ b/app/Classes/Modules/Companies/Standards/Rules/CanCreateCompanyModule.php @@ -24,7 +24,7 @@ class CanCreateCompanyModule extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/Companies/Standards/Rules/CanFetchCompany.php b/app/Classes/Modules/Companies/Standards/Rules/CanFetchCompany.php index 1d2bad1d..2ac07c99 100644 --- a/app/Classes/Modules/Companies/Standards/Rules/CanFetchCompany.php +++ b/app/Classes/Modules/Companies/Standards/Rules/CanFetchCompany.php @@ -13,7 +13,7 @@ class CanFetchCompany extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -40,4 +40,4 @@ class CanFetchCompany extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Companies/Standards/Rules/CanListCompanies.php b/app/Classes/Modules/Companies/Standards/Rules/CanListCompanies.php index 35cd974c..ff2d0296 100644 --- a/app/Classes/Modules/Companies/Standards/Rules/CanListCompanies.php +++ b/app/Classes/Modules/Companies/Standards/Rules/CanListCompanies.php @@ -13,7 +13,7 @@ class CanListCompanies extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -40,4 +40,4 @@ class CanListCompanies extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Companies/Standards/Rules/CanUpdateCompany.php b/app/Classes/Modules/Companies/Standards/Rules/CanUpdateCompany.php index c7bd1f70..8a6900f6 100644 --- a/app/Classes/Modules/Companies/Standards/Rules/CanUpdateCompany.php +++ b/app/Classes/Modules/Companies/Standards/Rules/CanUpdateCompany.php @@ -24,7 +24,7 @@ class CanUpdateCompany extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -48,4 +48,4 @@ class CanUpdateCompany extends AbstractRule { return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Contacts/Standards/Rules/CanCreateContact.php b/app/Classes/Modules/Contacts/Standards/Rules/CanCreateContact.php index 9c739feb..c29d6a9a 100644 --- a/app/Classes/Modules/Contacts/Standards/Rules/CanCreateContact.php +++ b/app/Classes/Modules/Contacts/Standards/Rules/CanCreateContact.php @@ -26,7 +26,7 @@ class CanCreateContact extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -51,4 +51,4 @@ class CanCreateContact extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Currencies/Standards/Rules/CanCreateCurrency.php b/app/Classes/Modules/Currencies/Standards/Rules/CanCreateCurrency.php index 873e03ce..09966b5f 100644 --- a/app/Classes/Modules/Currencies/Standards/Rules/CanCreateCurrency.php +++ b/app/Classes/Modules/Currencies/Standards/Rules/CanCreateCurrency.php @@ -24,7 +24,7 @@ class CanCreateCurrency extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -48,4 +48,4 @@ class CanCreateCurrency extends AbstractRule { return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Currencies/Standards/Rules/CanDeleteCurrency.php b/app/Classes/Modules/Currencies/Standards/Rules/CanDeleteCurrency.php index 60820e79..e03be1a5 100644 --- a/app/Classes/Modules/Currencies/Standards/Rules/CanDeleteCurrency.php +++ b/app/Classes/Modules/Currencies/Standards/Rules/CanDeleteCurrency.php @@ -10,7 +10,7 @@ class CanDeleteCurrency extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -36,4 +36,4 @@ class CanDeleteCurrency extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Currencies/Standards/Rules/CanFetchCurrency.php b/app/Classes/Modules/Currencies/Standards/Rules/CanFetchCurrency.php index 624809ed..00f43761 100644 --- a/app/Classes/Modules/Currencies/Standards/Rules/CanFetchCurrency.php +++ b/app/Classes/Modules/Currencies/Standards/Rules/CanFetchCurrency.php @@ -10,7 +10,7 @@ class CanFetchCurrency extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -37,4 +37,4 @@ class CanFetchCurrency extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Currencies/Standards/Rules/CanListCurrency.php b/app/Classes/Modules/Currencies/Standards/Rules/CanListCurrency.php index 38a74f65..c4a06208 100644 --- a/app/Classes/Modules/Currencies/Standards/Rules/CanListCurrency.php +++ b/app/Classes/Modules/Currencies/Standards/Rules/CanListCurrency.php @@ -10,7 +10,7 @@ class CanListCurrency extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules @@ -38,4 +38,4 @@ class CanListCurrency extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Currencies/Standards/Rules/CanUpdateCurrency.php b/app/Classes/Modules/Currencies/Standards/Rules/CanUpdateCurrency.php index d7e2ca93..93fcc5ad 100644 --- a/app/Classes/Modules/Currencies/Standards/Rules/CanUpdateCurrency.php +++ b/app/Classes/Modules/Currencies/Standards/Rules/CanUpdateCurrency.php @@ -26,7 +26,7 @@ class CanUpdateCurrency extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -51,4 +51,4 @@ class CanUpdateCurrency extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Currencies/Standards/Rules/Rates/CanCreateRate.php b/app/Classes/Modules/Currencies/Standards/Rules/Rates/CanCreateRate.php index 842a548b..22475b83 100644 --- a/app/Classes/Modules/Currencies/Standards/Rules/Rates/CanCreateRate.php +++ b/app/Classes/Modules/Currencies/Standards/Rules/Rates/CanCreateRate.php @@ -24,7 +24,7 @@ class CanCreateRate extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules if (!\Auth::user()->can('add currency_rate')) { @@ -52,4 +52,4 @@ class CanCreateRate extends AbstractRule { return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Currencies/Standards/Rules/Rates/CanDeleteRate.php b/app/Classes/Modules/Currencies/Standards/Rules/Rates/CanDeleteRate.php index 4ebefb9e..ac550875 100644 --- a/app/Classes/Modules/Currencies/Standards/Rules/Rates/CanDeleteRate.php +++ b/app/Classes/Modules/Currencies/Standards/Rules/Rates/CanDeleteRate.php @@ -10,7 +10,7 @@ class CanDeleteRate extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules @@ -42,4 +42,4 @@ class CanDeleteRate extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Currencies/Standards/Rules/Rates/CanFetchRate.php b/app/Classes/Modules/Currencies/Standards/Rules/Rates/CanFetchRate.php index 4006e36f..a13e52fa 100644 --- a/app/Classes/Modules/Currencies/Standards/Rules/Rates/CanFetchRate.php +++ b/app/Classes/Modules/Currencies/Standards/Rules/Rates/CanFetchRate.php @@ -13,7 +13,7 @@ class CanFetchRate extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -40,4 +40,4 @@ class CanFetchRate extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Currencies/Standards/Rules/Rates/CanListRates.php b/app/Classes/Modules/Currencies/Standards/Rules/Rates/CanListRates.php index 496ba1e5..b11a7cf7 100644 --- a/app/Classes/Modules/Currencies/Standards/Rules/Rates/CanListRates.php +++ b/app/Classes/Modules/Currencies/Standards/Rules/Rates/CanListRates.php @@ -10,7 +10,7 @@ class CanListRates extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules @@ -42,4 +42,4 @@ class CanListRates extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Currencies/Standards/Rules/Rates/CanUpdateRate.php b/app/Classes/Modules/Currencies/Standards/Rules/Rates/CanUpdateRate.php index 59564725..4f1f1fec 100644 --- a/app/Classes/Modules/Currencies/Standards/Rules/Rates/CanUpdateRate.php +++ b/app/Classes/Modules/Currencies/Standards/Rules/Rates/CanUpdateRate.php @@ -25,7 +25,7 @@ class CanUpdateRate extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules @@ -55,4 +55,4 @@ class CanUpdateRate extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Documents/Processors/UploadDocumentForHelpMenuProcessor.php b/app/Classes/Modules/Documents/Processors/UploadDocumentForHelpMenuProcessor.php new file mode 100644 index 00000000..863fcfdc --- /dev/null +++ b/app/Classes/Modules/Documents/Processors/UploadDocumentForHelpMenuProcessor.php @@ -0,0 +1,50 @@ +createsDocument = $createsDocument; + $this->createsFiles = $createsFiles; + } + + + /** + * @param $filesUpload + * @param QAUserAnswerSelected qaUserAnswerSelected + * @throws \App\Classes\Exceptions\MalformedRequestException + */ + public function execute($filesUpload, QAUserAnswerSelected $qaUserAnswerSelected) { + $object = new DocumentObject("HELP_MENU", $filesUpload, + '123456', ApprovalStatus::PENDING_VERIFICATION, 'help_menu'); //cief todo: 123456 cannot be hardcoded + + /** @var Document $document */ + $document = $this->createsDocument->execute($qaUserAnswerSelected, $object); + + $result = $this->createsFiles->execute($document, $object); + return $result; + } + +} diff --git a/app/Classes/Modules/Documents/Standards/Rules/CanApproveDocument.php b/app/Classes/Modules/Documents/Standards/Rules/CanApproveDocument.php index 544b605c..1b2b5834 100644 --- a/app/Classes/Modules/Documents/Standards/Rules/CanApproveDocument.php +++ b/app/Classes/Modules/Documents/Standards/Rules/CanApproveDocument.php @@ -12,7 +12,7 @@ class CanApproveDocument extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -36,4 +36,4 @@ class CanApproveDocument extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Documents/Standards/Rules/CanCreateDocument.php b/app/Classes/Modules/Documents/Standards/Rules/CanCreateDocument.php index abac99e3..9a3f3520 100644 --- a/app/Classes/Modules/Documents/Standards/Rules/CanCreateDocument.php +++ b/app/Classes/Modules/Documents/Standards/Rules/CanCreateDocument.php @@ -25,7 +25,7 @@ class CanCreateDocument extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -50,4 +50,4 @@ class CanCreateDocument extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Documents/Standards/Rules/CanCreateFile.php b/app/Classes/Modules/Documents/Standards/Rules/CanCreateFile.php index d029cf2a..e043abcd 100644 --- a/app/Classes/Modules/Documents/Standards/Rules/CanCreateFile.php +++ b/app/Classes/Modules/Documents/Standards/Rules/CanCreateFile.php @@ -25,7 +25,7 @@ class CanCreateFile extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -50,4 +50,4 @@ class CanCreateFile extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Documents/Standards/Rules/CanListDocuments.php b/app/Classes/Modules/Documents/Standards/Rules/CanListDocuments.php index f5145df6..ec509bc0 100644 --- a/app/Classes/Modules/Documents/Standards/Rules/CanListDocuments.php +++ b/app/Classes/Modules/Documents/Standards/Rules/CanListDocuments.php @@ -10,7 +10,7 @@ class CanListDocuments extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { /* @@ -44,4 +44,4 @@ class CanListDocuments extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Documents/Standards/Rules/CanRenderDocument.php b/app/Classes/Modules/Documents/Standards/Rules/CanRenderDocument.php index 0275d6f9..56369078 100644 --- a/app/Classes/Modules/Documents/Standards/Rules/CanRenderDocument.php +++ b/app/Classes/Modules/Documents/Standards/Rules/CanRenderDocument.php @@ -10,7 +10,7 @@ class CanRenderDocument extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -36,4 +36,4 @@ class CanRenderDocument extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Documents/Standards/Rules/CanUpdateDocument.php b/app/Classes/Modules/Documents/Standards/Rules/CanUpdateDocument.php index f07fb166..0c6744b9 100644 --- a/app/Classes/Modules/Documents/Standards/Rules/CanUpdateDocument.php +++ b/app/Classes/Modules/Documents/Standards/Rules/CanUpdateDocument.php @@ -25,7 +25,7 @@ class CanUpdateDocument extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -50,4 +50,4 @@ class CanUpdateDocument extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Documents/Standards/Rules/CanUpdateDocumentReference.php b/app/Classes/Modules/Documents/Standards/Rules/CanUpdateDocumentReference.php index e6a29785..a70e7ca2 100644 --- a/app/Classes/Modules/Documents/Standards/Rules/CanUpdateDocumentReference.php +++ b/app/Classes/Modules/Documents/Standards/Rules/CanUpdateDocumentReference.php @@ -11,7 +11,7 @@ class CanUpdateDocumentReference extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -36,4 +36,4 @@ class CanUpdateDocumentReference extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Exports/ControllersLogic/ExportFeedbackDataLogic.php b/app/Classes/Modules/Exports/ControllersLogic/ExportFeedbackDataLogic.php new file mode 100644 index 00000000..69b3930f --- /dev/null +++ b/app/Classes/Modules/Exports/ControllersLogic/ExportFeedbackDataLogic.php @@ -0,0 +1,57 @@ + 'Retrieved Feedback', + 'message' => 'You have successfully exported feedback data' + ]; + } + + /** @var ExportsFeedback */ + private $exportsFeedback; + + /** @var CanExportFeedback */ + private $canExportFeedback; + + /** + * ExportFeedbackDataLogic constructor. + * @param ExportsFeedback $exportsFeedback + * @param CanExportFeedback $canExportFeedback + */ + public function __construct(ExportsFeedback $exportsFeedback, CanExportFeedback $canExportFeedback) + { + $this->exportsFeedback = $exportsFeedback; + $this->canExportFeedback = $canExportFeedback; + } + + + /** + * @param Request $request + * @return Response + */ + public function logic(Request $request) : BinaryFileResponse + { + $this->canExportFeedback->passes(); + + $response = $this->exportsFeedback->download('feedback.xls', Excel::XLS, ['Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']); + ob_end_clean(); + + return $response; + } + +} diff --git a/app/Classes/Modules/Exports/ControllersLogic/ExportPackingListLogic.php b/app/Classes/Modules/Exports/ControllersLogic/ExportPackingListLogic.php new file mode 100644 index 00000000..5ad04101 --- /dev/null +++ b/app/Classes/Modules/Exports/ControllersLogic/ExportPackingListLogic.php @@ -0,0 +1,68 @@ + 'Retrieved PackingList', + 'message' => 'You have successfully exported PackingList' + ]; + } + + /** @var ExportsOnHoldPackingList */ + private $exportsOnHoldPackingList; + + /** @var ExportsPendingArrangementDeliveryList */ + private $exportsPendingArrangementDeliveryList; + + /** @var CanExportPackingList */ + private $canExportPackingList; + + /** + * ExportPackingListLogic constructor. + * @param ExportsPendingArrangementDeliveryList $exportsPendingArrangementDeliveryList + * @param ExportsOnHoldPackingList $exportsOnHoldPackingList + * @param CanExportPackingList $canExportPackingList + */ + public function __construct(ExportsPendingArrangementDeliveryList $exportsPendingArrangementDeliveryList, ExportsOnHoldPackingList $exportsOnHoldPackingList, CanExportPackingList $canExportPackingList) + { + $this->exportsPendingArrangementDeliveryList = $exportsPendingArrangementDeliveryList; + $this->exportsOnHoldPackingList = $exportsOnHoldPackingList; + $this->canExportPackingList = $canExportPackingList; + } + + + /** + * @param Request $request + * @return Response + */ + public function logic(Request $request) : BinaryFileResponse + { + $this->canExportPackingList->passes(); + $isSetPendingArrangement = $request->header('PendingArrangement'); + if($isSetPendingArrangement){ + $response = $this->exportsPendingArrangementDeliveryList->download('packing-list-delivery.xls', Excel::XLS, ['Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']); + } + else { + $response = $this->exportsOnHoldPackingList->download('packing-list-on-hold.xls', Excel::XLS, ['Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']); + } + + ob_end_clean(); + return $response; + } + +} diff --git a/app/Classes/Modules/Exports/Services/ExportsFeedback.php b/app/Classes/Modules/Exports/Services/ExportsFeedback.php new file mode 100644 index 00000000..7bc26265 --- /dev/null +++ b/app/Classes/Modules/Exports/Services/ExportsFeedback.php @@ -0,0 +1,70 @@ +whereHas('questionnaire', function ($innerQuery) { + $innerQuery->where('group', 'feedback'); + })->where('created_at', '>', Carbon::now()->subMonths(1)); + })->orderBy('created_at', 'desc'); + } + + /** + * @param QAUserAnswerSelected $userAnswer + * + * @return array + */ + public function map($userAnswer): array + { + $source = $userAnswer->userSource; + $user = $userAnswer->source_id === 0 ? $userAnswer->user : null; + $user_marking = ''; + if($user){ + $companyModule = $user->companyModule()->first(); + $user_marking = $companyModule ? $companyModule->inviters()->withPivot('invitee_reference')->first()->pivot->invitee_reference : ""; + } + + return [ + $userAnswer->question->questionnaire->description, + $userAnswer->question->question_text, + $userAnswer->free_text_answer, + $user ? QASystemSourceType::getText(QASystemSourceType::IZYIM) : QASystemSourceType::getText($source->system), + $user ? $user_marking : $source->marking, + $user ? $user->email : $source->email, + Carbon::parse($userAnswer->created_at)->format('d-m-Y'), + ]; + } +} diff --git a/app/Classes/Modules/Exports/Standards/Rules/CanExportFeedback.php b/app/Classes/Modules/Exports/Standards/Rules/CanExportFeedback.php new file mode 100644 index 00000000..343d3cc5 --- /dev/null +++ b/app/Classes/Modules/Exports/Standards/Rules/CanExportFeedback.php @@ -0,0 +1,48 @@ +user()){ + $roleToCheck = Auth()->user()->type; + if (in_array($roleToCheck, RoleTypes::ADMIN_ROLES)) { + return true; + } + else { + return false; + } + } + return false; + } + + /** + * @param $object + * @return bool + */ + protected function validators($object): bool + { + return true; + } + + + /** + * @param $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/Exports/Standards/Rules/CanExportPackingList.php b/app/Classes/Modules/Exports/Standards/Rules/CanExportPackingList.php new file mode 100644 index 00000000..363c9df2 --- /dev/null +++ b/app/Classes/Modules/Exports/Standards/Rules/CanExportPackingList.php @@ -0,0 +1,49 @@ +user()){ + $roleToCheck = Auth()->user()->type; + if (in_array($roleToCheck, RoleTypes::ADMIN_ROLES)) { + return true; + } + else { + return false; + } + } + return false; + } + + /** + * @param $object + * @return bool + */ + protected function validators($object): bool + { + return true; + + } + + + /** + * @param $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/HelpMenu/ControllersLogic/FetchQuestionQALogic.php b/app/Classes/Modules/HelpMenu/ControllersLogic/FetchQuestionQALogic.php new file mode 100644 index 00000000..6b2f9e03 --- /dev/null +++ b/app/Classes/Modules/HelpMenu/ControllersLogic/FetchQuestionQALogic.php @@ -0,0 +1,62 @@ + 'Retrieved Help Menu First Question', + 'message' => 'You have successfully retrieved a Help Menu First Question' + ]; + } + + /** @var CanFetchHelpMenuQuestion */ + private $canFetchHelpMenuQuestion; + + /** @var FetchFirstQuestionQAProcessor */ + private $fetchFirstQuestionQAProcessor; + + /** + * FetchQuestionQALogic constructor. + * @param CanFetchHelpMenuQuestion $canFetchHelpMenuQuestion + * @param FetchFirstQuestionQAProcessor $fetchFirstQuestionQAProcessor + */ + public function __construct(CanFetchHelpMenuQuestion $canFetchHelpMenuQuestion, FetchFirstQuestionQAProcessor $fetchFirstQuestionQAProcessor) + { + $this->canFetchHelpMenuQuestion = $canFetchHelpMenuQuestion; + $this->fetchFirstQuestionQAProcessor = $fetchFirstQuestionQAProcessor; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $this->canFetchHelpMenuQuestion->passes(); + + $userId = Auth::user()->id; + + $query = $this->fetchFirstQuestionQAProcessor->execute($request); + + return $this->resourceResponse(new HelpMenuQuestionResource($query, $userId)); + } + +} diff --git a/app/Classes/Modules/HelpMenu/ControllersLogic/GenerateFeedbackUrlLogic.php b/app/Classes/Modules/HelpMenu/ControllersLogic/GenerateFeedbackUrlLogic.php new file mode 100644 index 00000000..2636dcd1 --- /dev/null +++ b/app/Classes/Modules/HelpMenu/ControllersLogic/GenerateFeedbackUrlLogic.php @@ -0,0 +1,75 @@ + 'Generate Feedback Url', + 'message' => 'You have successfully generated a feedback url' + ]; + } + + /** @var CanGenerateFeedbackUrl */ + private $canGenerateFeedbackUrl; + + /** @var CreatesUrl */ + private $createsUrl; + + /** + * GenerateFeedbackUrlLogic constructor. + * @param CanGenerateFeedbackUrl $canGenerateFeedbackUrl + * @param CreatesUrl $createsUrl + */ + public function __construct(CanGenerateFeedbackUrl $canGenerateFeedbackUrl, CreatesUrl $createsUrl) + { + $this->canGenerateFeedbackUrl = $canGenerateFeedbackUrl; + $this->createsUrl = $createsUrl; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $apiKey = ""; + if($request->get('apiKeyExist')) + { + $apiKey = $request->get('apiKeyExist'); + } + $object = new GenerateFeedbackUrlObject($apiKey, $request->input('system'), $request->input('customer_marking'), $request->input('email'), $request->input('question_set')); + $this->canGenerateFeedbackUrl->passes($object); + + $shortUrl = Str::random(20); + $originalText = $object->getSystem() . '|' . $object->getCustomerMarking(). '|' . $object->getEmail(). '|' . $object->getQuestionSet() . '|' . $shortUrl; + $originalUrl = Crypt::encryptString($originalText); + + + $url = $this->createsUrl->execute(new UrlObject('feedback', $shortUrl, $originalUrl)); + $resource = ['token' => $url->short_url]; + + return $this->response(['data' => $resource]); + } + +} diff --git a/app/Classes/Modules/HelpMenu/ControllersLogic/ListQuestionsAnswersQALogic.php b/app/Classes/Modules/HelpMenu/ControllersLogic/ListQuestionsAnswersQALogic.php new file mode 100644 index 00000000..4b1c0d2b --- /dev/null +++ b/app/Classes/Modules/HelpMenu/ControllersLogic/ListQuestionsAnswersQALogic.php @@ -0,0 +1,60 @@ + 'Retrieved Questions Answers', + 'message' => 'You have successfully retrieved a list of questions and answers' + ]; + } + + /** @var CanListHelpMenuQuestions */ + private $canListHelpMenuQuestions; + + /** @var ListsHelpMenuUserAnswerSelected */ + private $listsHelpMenuUserAnswerSelected; + + /** + * ListQuestionsAnswersQALogic constructor. + * @param CanListHelpMenuQuestions $canListHelpMenuQuestions + * @param ListsHelpMenuUserAnswerSelected $listsHelpMenuUserAnswerSelected + */ + public function __construct(CanListHelpMenuQuestions $canListHelpMenuQuestions, ListsHelpMenuUserAnswerSelected $listsHelpMenuUserAnswerSelected) + { + $this->canListHelpMenuQuestions = $canListHelpMenuQuestions; + $this->listsHelpMenuUserAnswerSelected = $listsHelpMenuUserAnswerSelected; + } + + + /** + * @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 + { + $this->canListHelpMenuQuestions->passes(); + + $query = $this->listsHelpMenuUserAnswerSelected->execute($this->listsHelpMenuUserAnswerSelected->deserializeFilters($request->input('filters'))); + + return $this->collectionResponse(HelpMenuQuestionsAnswersResource::collection($query)); + } + +} diff --git a/app/Classes/Modules/HelpMenu/ControllersLogic/ListQuestionsQALogic.php b/app/Classes/Modules/HelpMenu/ControllersLogic/ListQuestionsQALogic.php new file mode 100644 index 00000000..ca25eeb7 --- /dev/null +++ b/app/Classes/Modules/HelpMenu/ControllersLogic/ListQuestionsQALogic.php @@ -0,0 +1,66 @@ + 'Retrieved Questions', + 'message' => 'You have successfully retrieved a list of Questions' + ]; + } + + /** @var ListsHelpMenuQuestions */ + private $listsHelpMenuQuestions; + + /** @var FetchesUrl */ + private $fetchesUrl; + + /** + * ListQuestionsQALogic constructor. + * @param ListsHelpMenuQuestions $listsHelpMenuQuestions + * @param FetchesUrl $fetchesUrl + */ + public function __construct(ListsHelpMenuQuestions $listsHelpMenuQuestions, FetchesUrl $fetchesUrl) + { + $this->listsHelpMenuQuestions = $listsHelpMenuQuestions; + $this->fetchesUrl = $fetchesUrl; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \App\Classes\Exceptions\RequestValidationException + * @throws \App\Classes\Exceptions\ResourceNotFoundException + */ + public function logic(Request $request) : JsonResponse + { + $url = $this->fetchesUrl->execute(['short_url' => $request->input('token')]); + $token = $url->original_url; + $decriptedToken = Crypt::decryptString($token); + $delimiter = "|"; + $parts = explode($delimiter, $decriptedToken); + $questionSet = $parts[3]; + $query = $this->listsHelpMenuQuestions->execute(['questionnaire_set_id' => $questionSet]); + return $this->collectionResponse(HelpMenuQuestionResource::collection($query)); + } + +} diff --git a/app/Classes/Modules/HelpMenu/ControllersLogic/SubmitQAQuestionsLogic.php b/app/Classes/Modules/HelpMenu/ControllersLogic/SubmitQAQuestionsLogic.php new file mode 100644 index 00000000..047b7add --- /dev/null +++ b/app/Classes/Modules/HelpMenu/ControllersLogic/SubmitQAQuestionsLogic.php @@ -0,0 +1,89 @@ + 'Feedback Submission', + 'message' => 'You have successfully submitted yours answers' + ]; + } + + /** @var SaveAnswerProcessor */ + private $saveAnswerProcessor; + + /** @var UserSourceForQAProcessor */ + private $userSourceForQAProcessor; + + /** @var FetchesUrl */ + private $fetchesUrl; + + /** + * SubmitQAQuestionsLogic constructor. + * @param SaveAnswerProcessor $saveAnswerProcessor + * @param UserSourceForQAProcessor $userSourceForQAProcessor + * @param FetchesUrl $fetchesUrl + */ + public function __construct(SaveAnswerProcessor $saveAnswerProcessor, UserSourceForQAProcessor $userSourceForQAProcessor, FetchesUrl $fetchesUrl) + { + $this->saveAnswerProcessor = $saveAnswerProcessor; + $this->userSourceForQAProcessor = $userSourceForQAProcessor; + $this->fetchesUrl = $fetchesUrl; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $originalToken = ''; + $shortToken = $request->input('token'); + $userId = 0; + $sourceId = 0; + try { + $url = $this->fetchesUrl->execute(['short_url' => $shortToken]); + $originalToken = $url->original_url; + $decriptedToken = Crypt::decryptString($originalToken); + $delimiter = "|"; + $parts = explode($delimiter, $decriptedToken); + $system = $parts[0]; + $customerMarking = $parts[1]; + $email = $parts[2]; + + $result = $this->userSourceForQAProcessor->execute($system, $customerMarking, $email); + $userId = $result['userId']; + $sourceId = $result['sourceId']; + + } catch (\Throwable $e) { + Log::error($e); + } + + $answers = $request->input('answers'); + foreach ($answers as $answer) { + $filesUpload = $request->input('files'); + $this->saveAnswerProcessor->execute($userId, $sourceId, $answer['questionId'], $answer['answer'], $answer['answerId'], $filesUpload, $shortToken); + } + + $response = ['message' => 'Thank you for your feedback.']; + return $this->response(['data' => $response]); + } +} diff --git a/app/Classes/Modules/HelpMenu/ControllersLogic/UpdateNextQuestionQALogic.php b/app/Classes/Modules/HelpMenu/ControllersLogic/UpdateNextQuestionQALogic.php new file mode 100644 index 00000000..ec43ab13 --- /dev/null +++ b/app/Classes/Modules/HelpMenu/ControllersLogic/UpdateNextQuestionQALogic.php @@ -0,0 +1,131 @@ + 'Retrieved Help Menu Next Question', + 'message' => 'You have successfully retrieved a Help Menu Next Question' + ]; + } + + /** @var CanFetchHelpMenuQuestion */ + private $canFetchHelpMenuQuestion; + + /** @var SaveAnswerProcessor */ + private $saveAnswerProcessor; + + /** @var DeleteAnswerQAProcessor */ + private $deleteAnswerQAProcessor; + + /** @var FetchNextQuestionQAProcessor */ + private $fetchNextQuestionQAProcessor; + + /** @var FetchFirstQuestionQAProcessor */ + private $fetchFirstQuestionQAProcessor; + + /** @var CreatesPerfexCRMSupportTicket */ + private $createsPerfexCRMSupportTicket; + + /** @var FetchesPerfexCRMCustomer */ + private $fetchesPerfexCRMCustomer; + + /** + * UpdateNextQuestionQALogic constructor. + * @param CanFetchHelpMenuQuestion $canFetchHelpMenuQuestion + * @param SaveAnswerProcessor $saveAnswerProcessor + * @param FetchNextQuestionQAProcessor $fetchNextQuestionQAProcessor + * @param FetchFirstQuestionQAProcessor $fetchFirstQuestionQAProcessor + * @param DeleteAnswerQAProcessor $deleteAnswerQAProcessor + */ + public function __construct(CanFetchHelpMenuQuestion $canFetchHelpMenuQuestion, SaveAnswerProcessor $saveAnswerProcessor, FetchNextQuestionQAProcessor $fetchNextQuestionQAProcessor, FetchFirstQuestionQAProcessor $fetchFirstQuestionQAProcessor, CreatesPerfexCRMSupportTicket $createsPerfexCRMSupportTicket, FetchesPerfexCRMCustomer $fetchesPerfexCRMCustomer, DeleteAnswerQAProcessor $deleteAnswerQAProcessor) + { + $this->canFetchHelpMenuQuestion = $canFetchHelpMenuQuestion; + $this->saveAnswerProcessor = $saveAnswerProcessor; + $this->fetchNextQuestionQAProcessor = $fetchNextQuestionQAProcessor; + $this->fetchFirstQuestionQAProcessor = $fetchFirstQuestionQAProcessor; + $this->createsPerfexCRMSupportTicket = $createsPerfexCRMSupportTicket; + $this->fetchesPerfexCRMCustomer = $fetchesPerfexCRMCustomer; + $this->deleteAnswerQAProcessor = $deleteAnswerQAProcessor; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws MalformedRequestException + * @throws ResourceNotFoundException + */ + public function logic(Request $request) : JsonResponse + { + $questionId = 0; + $userId = Auth::user()->id; + $currentQuestion = $request->question; + $questionId = $currentQuestion['id']; + $questionType = $currentQuestion['question_type']; + + $this->canFetchHelpMenuQuestion->passes(); + + //Delete answer + $this->deleteAnswerQAProcessor->execute($userId, $questionId, $request); + + //Save answer given by user + if (!$request->has('isPrevious')) { + $filesUpload = $request->input('files'); + $answerOptionId = 0; + if ($request->has('answerObj')) { + $answerOptionId = intval($request->answerObj['id']); + } + $answerInText = $request->answer; + $this->saveAnswerProcessor->execute($userId, 0, $questionId, $answerInText, $answerOptionId, $filesUpload); + } + + //Create ticket at crm + if (!$request->has('isPrevious')) { + if($questionType == QAType::TICKET_CRM){ + $email = Auth::user()->email; + $customer = $this->fetchesPerfexCRMCustomer->execute($email); + $subject = "test subject 3"; + $department = 1; + $contactid = 0; + $userid = 0; + if($customer){ + $contactid = $customer->id; + $userid = $customer->userid; + } + $this->createsPerfexCRMSupportTicket->execute($subject, $department, $contactid, $userid); + } + } + + //Get returned question (previous or next) + $returnQuestion = $this->fetchNextQuestionQAProcessor->execute($request); + //When a questionnaire ended, return back the first question + if(is_null($returnQuestion)){ + $returnQuestion = $this->fetchFirstQuestionQAProcessor->execute($request); + } + + return $this->resourceResponse(new HelpMenuQuestionResource($returnQuestion, $userId)); + } +} diff --git a/app/Classes/Modules/HelpMenu/DataTransferObjects/GenerateFeedbackUrlObject.php b/app/Classes/Modules/HelpMenu/DataTransferObjects/GenerateFeedbackUrlObject.php new file mode 100644 index 00000000..9df7d564 --- /dev/null +++ b/app/Classes/Modules/HelpMenu/DataTransferObjects/GenerateFeedbackUrlObject.php @@ -0,0 +1,79 @@ +apiKey = $apiKey; + $this->system = $system; + $this->customerMarking = $customerMarking; + $this->email = $email; + $this->questionSet = $questionSet; + } + + /** + * @return string + */ + public function getApiKey(): string + { + return $this->apiKey; + } + + /** + * @return string + */ + public function getSystem(): ?string + { + return $this->system; + } + + /** + * @return string + */ + public function getCustomerMarking(): ?string + { + return $this->customerMarking; + } + + /** + * @return string + */ + public function getEmail(): ?string + { + return $this->email; + } + + /** + * @return string + */ + public function getQuestionSet(): ?string + { + return $this->questionSet; + } + +} diff --git a/app/Classes/Modules/HelpMenu/DataTransferObjects/QAUserSourceObject.php b/app/Classes/Modules/HelpMenu/DataTransferObjects/QAUserSourceObject.php new file mode 100644 index 00000000..3c0791c5 --- /dev/null +++ b/app/Classes/Modules/HelpMenu/DataTransferObjects/QAUserSourceObject.php @@ -0,0 +1,55 @@ +system = $system; + $this->marking = $marking; + $this->email = $email; + } + + /** + * @return string + */ + public function getSystem(): string + { + return $this->system; + } + + /** + * @return string + */ + public function getMarking(): string + { + return $this->marking; + } + + /** + * @return string + */ + public function getEmail(): string + { + return $this->email; + } + +} diff --git a/app/Classes/Modules/HelpMenu/DataTransferObjects/UrlObject.php b/app/Classes/Modules/HelpMenu/DataTransferObjects/UrlObject.php new file mode 100644 index 00000000..150e3475 --- /dev/null +++ b/app/Classes/Modules/HelpMenu/DataTransferObjects/UrlObject.php @@ -0,0 +1,55 @@ +type = $type; + $this->shortUrl = $shortUrl; + $this->originalUrl = $originalUrl; + } + + /** + * @return string + */ + public function getType(): string + { + return $this->type; + } + + /** + * @return string + */ + public function getShortUrl(): string + { + return $this->shortUrl; + } + + /** + * @return string + */ + public function getOriginalUrl(): string + { + return $this->originalUrl; + } + +} diff --git a/app/Classes/Modules/HelpMenu/Processors/DeleteAnswerQAProcessor.php b/app/Classes/Modules/HelpMenu/Processors/DeleteAnswerQAProcessor.php new file mode 100644 index 00000000..adac3fe7 --- /dev/null +++ b/app/Classes/Modules/HelpMenu/Processors/DeleteAnswerQAProcessor.php @@ -0,0 +1,59 @@ +fetchesHelpMenuUserAnswerSelected = $fetchesHelpMenuUserAnswerSelected; + $this->listsHelpMenuUserAnswerSelected = $listsHelpMenuUserAnswerSelected; + } + + + /** + * @param int $userId + * @param int $questionId + * @param Request $request + * @return void + * @throws ResourceNotFoundException + */ + public function execute($userId, $questionId, $request){ + if ($request->has('isPrevious')) { + //Get current and previous question's answer + try{ + $selectedAnswer = $this->listsHelpMenuUserAnswerSelected->execute(['user_id' => $userId, 'question_id' => $questionId, 'order_by' => (object)['column' => 'id','DESC' => true]])[0]; + } catch (\Exception $exception){ + $selectedAnswer = null; + } + + if($selectedAnswer) + { + $this->fetchesHelpMenuUserAnswerSelected->execute(['id' => $selectedAnswer['id']])->delete(); + } + } + else{ + //Delete all answer's belongs to the user + $currentQuestion = $request->question; + $isStart = $currentQuestion['is_start']; + if($isStart){ + QAUserAnswerSelected::where('user_id', $userId)->delete(); + } + } + } +} diff --git a/app/Classes/Modules/HelpMenu/Processors/FetchFirstQuestionQAProcessor.php b/app/Classes/Modules/HelpMenu/Processors/FetchFirstQuestionQAProcessor.php new file mode 100644 index 00000000..c4f81f27 --- /dev/null +++ b/app/Classes/Modules/HelpMenu/Processors/FetchFirstQuestionQAProcessor.php @@ -0,0 +1,32 @@ +fetchesHelpMenuQuestion = $fetchesHelpMenuQuestion; + } + + public function execute(Request $request){ + try { + $query = $this->fetchesHelpMenuQuestion->execute(['questionnaire_set_id' => $request->route('set_id')]); + return $query; + } catch (\Exception $exception){ + throw new ErrorException($exception->getMessage(), $exception->getCode()); + } + } +} diff --git a/app/Classes/Modules/HelpMenu/Processors/FetchNextQuestionQAProcessor.php b/app/Classes/Modules/HelpMenu/Processors/FetchNextQuestionQAProcessor.php new file mode 100644 index 00000000..39188cf5 --- /dev/null +++ b/app/Classes/Modules/HelpMenu/Processors/FetchNextQuestionQAProcessor.php @@ -0,0 +1,96 @@ +fetchesHelpMenuQuestion = $fetchesHelpMenuQuestion; + $this->fetchesHelpMenuUserAnswerSelected = $fetchesHelpMenuUserAnswerSelected; + $this->listsHelpMenuUserAnswerSelected = $listsHelpMenuUserAnswerSelected; + } + + public function execute(Request $request){ + $isEnd = 0; + $questionId = 0; + $nextQuestionNumber = 0; + $nextNestedQuestion = 0; + $nextMainQuestion= 0; + $questionnaireSetId = 0; + $currentQuestion = $request->question; + $questionType = QAType::DEFAULT; + $returnQuestion = null; + + if ($currentQuestion && array_key_exists('id', $currentQuestion)) { + $questionId = $currentQuestion['id']; + $isEnd = $currentQuestion['is_end']; + $questionType = $currentQuestion['question_type']; + $nextNestedQuestion = $currentQuestion['next_nested_question']; + $nextMainQuestion = $currentQuestion['next_main_question']; + $questionnaireSetId = $currentQuestion['questionnaire_set_id']; + } + + if ($request->has('answerObj')) { + $nextQuestionNumber = $request->answerObj['next_question_number']; + } + + if ($request->has('isPrevious')) { + $userId = Auth::user()->id; + $previousAnswer = $this->listsHelpMenuUserAnswerSelected->execute(['user_id' => $userId, 'order_by' => (object)['column' => 'id','DESC' => true]])[0]; + + //Get previous question + $previousQuestion = $this->fetchesHelpMenuQuestion->execute(['questionnaire_set_id' => $questionnaireSetId, 'id' => $previousAnswer['question_id']]); + $returnQuestion = $previousQuestion; + } + else{ + //Get next question + $nextQuestion = null; + $question_number = 0; + if($nextQuestionNumber != 0){ + $question_number = $nextQuestionNumber; + } + else if($nextNestedQuestion != 0){ + $question_number = $nextNestedQuestion; + } + else { + $question_number = $nextMainQuestion; + } + + if($isEnd){ + $returnQuestion = null; + } + else if($question_number != 0){ + $nextQuestion = $this->fetchesHelpMenuQuestion->execute(['questionnaire_set_id' => $questionnaireSetId, 'question_number' => $question_number]); + $returnQuestion = $nextQuestion; + } + else if (array_key_exists('id', $request->input('question'))) { + $nextQuestion = $this->fetchesHelpMenuQuestion->execute(['questionnaire_set_id' => $questionnaireSetId, 'id_next' => $questionId, 'next_main_question' => null]); + $returnQuestion = $nextQuestion; + } + } + + return $returnQuestion; + } +} diff --git a/app/Classes/Modules/HelpMenu/Processors/SaveAnswerProcessor.php b/app/Classes/Modules/HelpMenu/Processors/SaveAnswerProcessor.php new file mode 100644 index 00000000..611d3317 --- /dev/null +++ b/app/Classes/Modules/HelpMenu/Processors/SaveAnswerProcessor.php @@ -0,0 +1,65 @@ +fetchesHelpMenuUserAnswerSelected = $fetchesHelpMenuUserAnswerSelected; + $this->uploadDocumentForHelpMenuProcessor = $uploadDocumentForHelpMenuProcessor; + } + + public function execute($userId, $sourceId, $questionId, $answerInText, $answerOptionId, $filesUpload, $reference = null){ + + $answer = null; + // try{ + // // $answer = $this->fetchesHelpMenuUserAnswerSelected->execute(['user_id' => $userId, 'question_id' => $questionId, 'order_by' => ['column' => 'id','DESC' => 1]]); + // $answer = $this->fetchesHelpMenuUserAnswerSelected->execute(['user_id' => $userId, 'user_id' => $sourceId, 'question_id' => $questionId]); + // } catch (\Exception $exception){ + // $answer = null; + // } + + if(is_null($answer)) + { + $answer = new QAUserAnswerSelected; + } + $answer->user_id = $userId; + $answer->source_id = $sourceId; + $answer->question_id = $questionId; + $answer->answer_option_id = intval($answerOptionId); + $answer->free_text_answer = $answerInText; + if($reference){ + $answer->reference = $reference; + } + $answer->save(); + + if($filesUpload){ + $result = $this->uploadDocumentForHelpMenuProcessor->execute($filesUpload, $answer); + $newData = array_map(function ($item) { + return [ + 'document_id' => $item->document_id, + 'file_id' => $item->id, + ]; + }, $result); + $answer->free_text_answer = json_encode($newData); + $answer->save(); + } + } +} diff --git a/app/Classes/Modules/HelpMenu/Processors/UserSourceForQAProcessor.php b/app/Classes/Modules/HelpMenu/Processors/UserSourceForQAProcessor.php new file mode 100644 index 00000000..3ed66deb --- /dev/null +++ b/app/Classes/Modules/HelpMenu/Processors/UserSourceForQAProcessor.php @@ -0,0 +1,70 @@ +fetchesUser = $fetchesUser; + $this->fetchesQAUserSource = $fetchesQAUserSource; + $this->createsQAUserSource = $createsQAUserSource; + } + + public function execute($system, $customerMarking, $email){ + $result = []; + $isFound = false; + if((int)$system === QASystemSourceType::IZYIM){ + try{ + $query = $this->fetchesUser->execute(['email' => $email]); + $result['userId'] = $query->id; + $result['sourceId'] = 0; + $isFound = true; + } catch (ResourceNotFoundException $exception){ + $isFound = false; + } + } + + if(!$isFound){ + try{ + $query = $this->fetchesQAUserSource->execute(['email' => $email]); + $result['userId'] = 0; + $result['sourceId'] = $query->id; + } catch (ResourceNotFoundException $exception){ + $result['sourceId'] = 0; + } + + if($result['sourceId'] === 0){ + $new_object = new QAUserSourceObject($system, $customerMarking, $email); + $query = $this->createsQAUserSource->execute($new_object); + $result['userId'] = 0; + $result['sourceId'] = $query->id; + } + } + + return $result; + } +} diff --git a/app/Classes/Modules/HelpMenu/Services/CreatesQAUserSource.php b/app/Classes/Modules/HelpMenu/Services/CreatesQAUserSource.php new file mode 100644 index 00000000..a55cd6b1 --- /dev/null +++ b/app/Classes/Modules/HelpMenu/Services/CreatesQAUserSource.php @@ -0,0 +1,25 @@ +system = $object->getSystem(); + $model->marking = $object->getMarking(); + $model->email = $object->getEmail(); + + return $this->handler($model); + + } +} diff --git a/app/Classes/Modules/HelpMenu/Services/CreatesUrl.php b/app/Classes/Modules/HelpMenu/Services/CreatesUrl.php new file mode 100644 index 00000000..bf84bacb --- /dev/null +++ b/app/Classes/Modules/HelpMenu/Services/CreatesUrl.php @@ -0,0 +1,25 @@ +type = $object->getType(); + $model->short_url = $object->getShortUrl(); + $model->original_url = $object->getOriginalUrl(); + + return $this->handler($model); + + } +} diff --git a/app/Classes/Modules/HelpMenu/Services/FetchesHelpMenuQuestion.php b/app/Classes/Modules/HelpMenu/Services/FetchesHelpMenuQuestion.php new file mode 100644 index 00000000..8491cb77 --- /dev/null +++ b/app/Classes/Modules/HelpMenu/Services/FetchesHelpMenuQuestion.php @@ -0,0 +1,32 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + public function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} diff --git a/app/Classes/Modules/HelpMenu/Services/FetchesHelpMenuUserAnswerSelected.php b/app/Classes/Modules/HelpMenu/Services/FetchesHelpMenuUserAnswerSelected.php new file mode 100644 index 00000000..32aa2875 --- /dev/null +++ b/app/Classes/Modules/HelpMenu/Services/FetchesHelpMenuUserAnswerSelected.php @@ -0,0 +1,32 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + public function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} diff --git a/app/Classes/Modules/HelpMenu/Services/FetchesQAUserSource.php b/app/Classes/Modules/HelpMenu/Services/FetchesQAUserSource.php new file mode 100644 index 00000000..7c40a0ad --- /dev/null +++ b/app/Classes/Modules/HelpMenu/Services/FetchesQAUserSource.php @@ -0,0 +1,33 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + public function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} diff --git a/app/Classes/Modules/HelpMenu/Services/FetchesUrl.php b/app/Classes/Modules/HelpMenu/Services/FetchesUrl.php new file mode 100644 index 00000000..c13c9da3 --- /dev/null +++ b/app/Classes/Modules/HelpMenu/Services/FetchesUrl.php @@ -0,0 +1,32 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + public function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} diff --git a/app/Classes/Modules/HelpMenu/Services/ListsHelpMenuQuestions.php b/app/Classes/Modules/HelpMenu/Services/ListsHelpMenuQuestions.php new file mode 100644 index 00000000..572197fc --- /dev/null +++ b/app/Classes/Modules/HelpMenu/Services/ListsHelpMenuQuestions.php @@ -0,0 +1,32 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + public function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} diff --git a/app/Classes/Modules/HelpMenu/Services/ListsHelpMenuUserAnswerSelected.php b/app/Classes/Modules/HelpMenu/Services/ListsHelpMenuUserAnswerSelected.php new file mode 100644 index 00000000..96ee660f --- /dev/null +++ b/app/Classes/Modules/HelpMenu/Services/ListsHelpMenuUserAnswerSelected.php @@ -0,0 +1,32 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + public function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} diff --git a/app/Classes/Modules/HelpMenu/Standards/Rules/CanFetchHelpMenuQuestion.php b/app/Classes/Modules/HelpMenu/Standards/Rules/CanFetchHelpMenuQuestion.php new file mode 100644 index 00000000..2a7b7dcb --- /dev/null +++ b/app/Classes/Modules/HelpMenu/Standards/Rules/CanFetchHelpMenuQuestion.php @@ -0,0 +1,38 @@ +feedbackUrlValidation = $feedbackUrlValidation; + } + + /** + * @return bool + */ + protected function authorized($object): bool + { + $user = Auth()->user(); + if($user){ + $roleToCheck = Auth()->user()->type; + if (in_array($roleToCheck, RoleTypes::ADMIN_ROLES)) { + return true; + } + } + else if($object->getApiKey()){ + return true; + } + + return false; + } + + /** + * @param GenerateFeedbackUrlObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->feedbackUrlValidation->validate($object); + } + + /** + * @param $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/HelpMenu/Standards/Rules/CanListHelpMenuQuestions.php b/app/Classes/Modules/HelpMenu/Standards/Rules/CanListHelpMenuQuestions.php new file mode 100644 index 00000000..d88a8d9a --- /dev/null +++ b/app/Classes/Modules/HelpMenu/Standards/Rules/CanListHelpMenuQuestions.php @@ -0,0 +1,45 @@ +user()->type; + if (in_array($roleToCheck, RoleTypes::ADMIN_ROLES)) { + return true; + } else { + return false; + } + } + + /** + * @param $object + * @return bool + */ + protected function validators($object): bool + { + return true; + + } + + + /** + * @param $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/HelpMenu/Standards/Validators/FeedbackUrlValidation.php b/app/Classes/Modules/HelpMenu/Standards/Validators/FeedbackUrlValidation.php new file mode 100644 index 00000000..30eca405 --- /dev/null +++ b/app/Classes/Modules/HelpMenu/Standards/Validators/FeedbackUrlValidation.php @@ -0,0 +1,44 @@ + $object->getSystem(), + 'email' => $object->getEmail(), + 'question_set' => $object->getQuestionSet() + // 'customer_marking' => $object->getCustomerMarking(), + ]; + } + + /** + * @return array + */ + protected function rules(): array { + return [ + 'system' => 'required', + 'email' => 'required', + 'question_set' => 'required', + // 'customer_marking' => 'required', + ]; + } + + /** + * @return array + */ + protected function messages(): array { + return []; + } + +} diff --git a/app/Classes/Modules/Orders/Standards/Rules/CanApproveChangeOrderAddress.php b/app/Classes/Modules/Orders/Standards/Rules/CanApproveChangeOrderAddress.php index 24ce6418..6b022484 100644 --- a/app/Classes/Modules/Orders/Standards/Rules/CanApproveChangeOrderAddress.php +++ b/app/Classes/Modules/Orders/Standards/Rules/CanApproveChangeOrderAddress.php @@ -11,7 +11,7 @@ class CanApproveChangeOrderAddress extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/Orders/Standards/Rules/CanChangeOrderAddress.php b/app/Classes/Modules/Orders/Standards/Rules/CanChangeOrderAddress.php index 1030168b..2ec7d5e9 100644 --- a/app/Classes/Modules/Orders/Standards/Rules/CanChangeOrderAddress.php +++ b/app/Classes/Modules/Orders/Standards/Rules/CanChangeOrderAddress.php @@ -11,7 +11,7 @@ class CanChangeOrderAddress extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/Orders/Standards/Rules/CanConfirmOrder.php b/app/Classes/Modules/Orders/Standards/Rules/CanConfirmOrder.php index 20e5faf7..f12d9b45 100644 --- a/app/Classes/Modules/Orders/Standards/Rules/CanConfirmOrder.php +++ b/app/Classes/Modules/Orders/Standards/Rules/CanConfirmOrder.php @@ -17,7 +17,7 @@ class CanConfirmOrder extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/Orders/Standards/Rules/CanCreateOrder.php b/app/Classes/Modules/Orders/Standards/Rules/CanCreateOrder.php index 2554cea2..6de8a3ee 100644 --- a/app/Classes/Modules/Orders/Standards/Rules/CanCreateOrder.php +++ b/app/Classes/Modules/Orders/Standards/Rules/CanCreateOrder.php @@ -18,7 +18,7 @@ class CanCreateOrder extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -42,4 +42,4 @@ class CanCreateOrder extends AbstractRule { return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Orders/Standards/Rules/CanCreateOrderRole.php b/app/Classes/Modules/Orders/Standards/Rules/CanCreateOrderRole.php index 98b4cd01..5f25fe44 100644 --- a/app/Classes/Modules/Orders/Standards/Rules/CanCreateOrderRole.php +++ b/app/Classes/Modules/Orders/Standards/Rules/CanCreateOrderRole.php @@ -17,7 +17,7 @@ class CanCreateOrderRole extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/Orders/Standards/Rules/CanFetchOrder.php b/app/Classes/Modules/Orders/Standards/Rules/CanFetchOrder.php index a4457e26..7fab29a2 100644 --- a/app/Classes/Modules/Orders/Standards/Rules/CanFetchOrder.php +++ b/app/Classes/Modules/Orders/Standards/Rules/CanFetchOrder.php @@ -12,7 +12,7 @@ class CanFetchOrder extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -39,4 +39,4 @@ class CanFetchOrder extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Orders/Standards/Rules/CanListOrders.php b/app/Classes/Modules/Orders/Standards/Rules/CanListOrders.php index b7d48485..f8375ed5 100644 --- a/app/Classes/Modules/Orders/Standards/Rules/CanListOrders.php +++ b/app/Classes/Modules/Orders/Standards/Rules/CanListOrders.php @@ -12,7 +12,7 @@ class CanListOrders extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/Orders/Standards/Rules/CanUpdateCurrentStep.php b/app/Classes/Modules/Orders/Standards/Rules/CanUpdateCurrentStep.php index d32abe8a..0382860a 100644 --- a/app/Classes/Modules/Orders/Standards/Rules/CanUpdateCurrentStep.php +++ b/app/Classes/Modules/Orders/Standards/Rules/CanUpdateCurrentStep.php @@ -17,7 +17,7 @@ class CanUpdateCurrentStep extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -36,4 +36,4 @@ class CanUpdateCurrentStep extends AbstractRule { return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/CanCreatePackingList.php b/app/Classes/Modules/PackingLists/Standards/Rules/CanCreatePackingList.php index 399a0fae..0a25dd28 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/CanCreatePackingList.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/CanCreatePackingList.php @@ -26,7 +26,7 @@ class CanCreatePackingList extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/CanCreatePackingListPackage.php b/app/Classes/Modules/PackingLists/Standards/Rules/CanCreatePackingListPackage.php index aca44c8b..6ceb62d6 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/CanCreatePackingListPackage.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/CanCreatePackingListPackage.php @@ -26,7 +26,7 @@ class CanCreatePackingListPackage extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/CanDeletePackingList.php b/app/Classes/Modules/PackingLists/Standards/Rules/CanDeletePackingList.php index ac8abc28..83a1a299 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/CanDeletePackingList.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/CanDeletePackingList.php @@ -13,7 +13,7 @@ class CanDeletePackingList extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/CanFetchPackingList.php b/app/Classes/Modules/PackingLists/Standards/Rules/CanFetchPackingList.php index e42b6056..315c89fd 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/CanFetchPackingList.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/CanFetchPackingList.php @@ -13,7 +13,7 @@ class CanFetchPackingList extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/CanListPackingLists.php b/app/Classes/Modules/PackingLists/Standards/Rules/CanListPackingLists.php index fc5ac577..ef3408ff 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/CanListPackingLists.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/CanListPackingLists.php @@ -5,6 +5,7 @@ namespace App\Classes\Modules\PackingLists\Standards\Rules; use App\Classes\General\Abstracts\AbstractRule; use App\Classes\Modules\PackingLists\DataTransferObjects\PackingListObject; +use App\Classes\ValueObjects\Constants\RoleTypes; class CanListPackingLists extends AbstractRule { @@ -13,11 +14,19 @@ class CanListPackingLists extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { - // TODO Set Authorization rules + // if(Auth()->user()){ + // $roleToCheck = Auth()->user()->type; + // if (in_array($roleToCheck, RoleTypes::ADMIN_ROLES)) { + // return true; + // } + // else { + // return false; + // } + // } + // return false; return true; - } /** diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/CanUpdatePackingList.php b/app/Classes/Modules/PackingLists/Standards/Rules/CanUpdatePackingList.php index f43a9408..5fb7b936 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/CanUpdatePackingList.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/CanUpdatePackingList.php @@ -26,7 +26,7 @@ class CanUpdatePackingList extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanCreateContainer.php b/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanCreateContainer.php index f899e7a7..4d2e3252 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanCreateContainer.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanCreateContainer.php @@ -26,7 +26,7 @@ class CanCreateContainer extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanDeleteContainer.php b/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanDeleteContainer.php index d585ecaf..cbc4ae78 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanDeleteContainer.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanDeleteContainer.php @@ -13,7 +13,7 @@ class CanDeleteContainer extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanFetchContainer.php b/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanFetchContainer.php index b9d3392f..e50f1d35 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanFetchContainer.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanFetchContainer.php @@ -13,7 +13,7 @@ class CanFetchContainer extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanListContainers.php b/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanListContainers.php index 73d5ac15..b4aefe30 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanListContainers.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanListContainers.php @@ -13,7 +13,7 @@ class CanListContainers extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanUpdateContainer.php b/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanUpdateContainer.php index 2b119e0f..ac06d663 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanUpdateContainer.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanUpdateContainer.php @@ -26,7 +26,7 @@ class CanUpdateContainer extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanCreatePackage.php b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanCreatePackage.php index 1e6159af..4cb225b5 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanCreatePackage.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanCreatePackage.php @@ -26,7 +26,7 @@ class CanCreatePackage extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanCreatePackageItem.php b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanCreatePackageItem.php index 92eef952..72827a85 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanCreatePackageItem.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanCreatePackageItem.php @@ -27,7 +27,7 @@ class CanCreatePackageItem extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanDeletePackage.php b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanDeletePackage.php index cdf793a8..12eb47d7 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanDeletePackage.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanDeletePackage.php @@ -13,7 +13,7 @@ class CanDeletePackage extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanFetchPackage.php b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanFetchPackage.php index d7e041e9..b593addc 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanFetchPackage.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanFetchPackage.php @@ -13,7 +13,7 @@ class CanFetchPackage extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanListPackages.php b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanListPackages.php index 403f1e8e..63e5eac9 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanListPackages.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanListPackages.php @@ -13,7 +13,7 @@ class CanListPackages extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanUpdatePackage.php b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanUpdatePackage.php index e45ec6d2..c069c4bc 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanUpdatePackage.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanUpdatePackage.php @@ -26,7 +26,7 @@ class CanUpdatePackage extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/Packages/Items/CanCreateItem.php b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/Items/CanCreateItem.php index 7380a84d..fd3cf58d 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/Packages/Items/CanCreateItem.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/Items/CanCreateItem.php @@ -26,7 +26,7 @@ class CanCreateItem extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/Packages/Items/CanDeleteItem.php b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/Items/CanDeleteItem.php index e68a12ec..214b20b3 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/Packages/Items/CanDeleteItem.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/Items/CanDeleteItem.php @@ -13,7 +13,7 @@ class CanDeleteItem extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/Packages/Items/CanFetchItem.php b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/Items/CanFetchItem.php index 4fb9b3cd..4b2b8072 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/Packages/Items/CanFetchItem.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/Items/CanFetchItem.php @@ -13,7 +13,7 @@ class CanFetchItem extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/Packages/Items/CanListItems.php b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/Items/CanListItems.php index 959cd9fb..6922f3fd 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/Packages/Items/CanListItems.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/Items/CanListItems.php @@ -13,7 +13,7 @@ class CanListItems extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/Packages/Items/CanUpdatePackageItem.php b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/Items/CanUpdatePackageItem.php index 60be87d0..88f174f5 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/Packages/Items/CanUpdatePackageItem.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/Items/CanUpdatePackageItem.php @@ -26,7 +26,7 @@ class CanUpdatePackageItem extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMV2Processor.php b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMV2Processor.php index f42156e0..0c3cd511 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMV2Processor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMV2Processor.php @@ -119,13 +119,13 @@ class TransactionToPerfexCRMV2Processor } - private function definePaymentTasks(Transaction $model): array //cief todo: to comfirm what tasks need to be created + private function definePaymentTasks(Transaction $model): array //cief todo: to comfirm what tasks need to be created at crm { $tasks = []; return $tasks; } - private function defineTasks_handleApprovedStatus_handlePaymentApprovedStatus(): array //cief todo: to comfirm what tasks need to be created + private function defineTasks_handleApprovedStatus_handlePaymentApprovedStatus(): array //cief todo: to comfirm what tasks need to be created at crm { $tasks = []; // $tasks = [ diff --git a/app/Classes/Modules/PerfexCRM/Services/ConvertsPerfexCRMLeadToCustomer.php b/app/Classes/Modules/PerfexCRM/Services/ConvertsPerfexCRMLeadToCustomer.php index 3abf292a..0e41b5a7 100644 --- a/app/Classes/Modules/PerfexCRM/Services/ConvertsPerfexCRMLeadToCustomer.php +++ b/app/Classes/Modules/PerfexCRM/Services/ConvertsPerfexCRMLeadToCustomer.php @@ -4,6 +4,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; +use App\Classes\Exceptions\ConnectionErrorException; use Illuminate\Support\Facades\Log; class ConvertsPerfexCRMLeadToCustomer @@ -27,8 +28,13 @@ class ConvertsPerfexCRMLeadToCustomer Log::error('ConvertsPerfexCRMLeadToCustomer: '.$response); return null; } - }catch(\Exception $exception){ - throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage()); + } + catch(\Illuminate\Http\Client\ConnectionException $exception){ + $error = 'Failed to connect to CRM'; + throw new ConnectionErrorException($error, $exception->getMessage(), $email, $exception->getTraceAsString()); + } + catch(\Exception $exception){ + throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage()); } } } diff --git a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMCustomer.php b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMCustomer.php index 289abac5..9555c61b 100644 --- a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMCustomer.php +++ b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMCustomer.php @@ -4,6 +4,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; +use App\Classes\Exceptions\ConnectionErrorException; use Illuminate\Support\Facades\Log; class CreatesPerfexCRMCustomer @@ -30,8 +31,13 @@ class CreatesPerfexCRMCustomer Log::error('CreatesPerfexCRMCustomer: '.$response); return null; } - }catch(\Exception $exception){ - throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage()); + } + catch(\Illuminate\Http\Client\ConnectionException $exception){ + $error = 'Failed to connect to CRM'; + throw new ConnectionErrorException($error, $exception->getMessage(), $companyName, $exception->getTraceAsString()); + } + catch(\Exception $exception){ + throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage()); } } } diff --git a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMCustomerContact.php b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMCustomerContact.php index 1e76a02b..1f5478eb 100644 --- a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMCustomerContact.php +++ b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMCustomerContact.php @@ -5,6 +5,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use App\Classes\Modules\PerfexCRM\DataTransferObjects\CustomerContactObject; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; +use App\Classes\Exceptions\ConnectionErrorException; use Illuminate\Support\Facades\Log; class CreatesPerfexCRMCustomerContact @@ -37,8 +38,13 @@ class CreatesPerfexCRMCustomerContact Log::error('CreatesPerfexCRMCustomerContact: '.$response); return null; } - }catch(\Exception $exception){ - throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage()); + } + catch(\Illuminate\Http\Client\ConnectionException $exception){ + $error = 'Failed to connect to CRM'; + throw new ConnectionErrorException($error, $exception->getMessage(), "", $exception->getTraceAsString()); + } + catch(\Exception $exception){ + throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage()); } } } diff --git a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMCustomerProject.php b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMCustomerProject.php index 33d9c3d2..2b6fa9de 100644 --- a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMCustomerProject.php +++ b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMCustomerProject.php @@ -4,6 +4,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; +use App\Classes\Exceptions\ConnectionErrorException; use Illuminate\Support\Facades\Log; class CreatesPerfexCRMCustomerProject @@ -36,8 +37,13 @@ class CreatesPerfexCRMCustomerProject Log::error('CreatesPerfexCRMCustomerProject: '.$response); return null; } - }catch(\Exception $exception){ - throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage()); + } + catch(\Illuminate\Http\Client\ConnectionException $exception){ + $error = 'Failed to connect to CRM'; + throw new ConnectionErrorException($error, $exception->getMessage(), "", $exception->getTraceAsString()); + } + catch(\Exception $exception){ + throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage()); } } } diff --git a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMInvoice.php b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMInvoice.php index 5991025e..21de87e5 100644 --- a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMInvoice.php +++ b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMInvoice.php @@ -4,6 +4,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; +use App\Classes\Exceptions\ConnectionErrorException; use Illuminate\Support\Facades\Log; use App\Classes\Modules\PerfexCRM\DataTransferObjects\InvoicePerfexCRMObject; @@ -56,8 +57,13 @@ class CreatesPerfexCRMInvoice Log::error('CreatesPerfexCRMInvoice: '.$response); return null; } - }catch(\Exception $exception){ - throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage()); + } + catch(\Illuminate\Http\Client\ConnectionException $exception){ + $error = 'Failed to connect to CRM'; + throw new ConnectionErrorException($error, $exception->getMessage(), "", $exception->getTraceAsString()); + } + catch(\Exception $exception){ + throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage()); } } } diff --git a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMInvoicePayment.php b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMInvoicePayment.php index 05eec8b7..4e58d59f 100644 --- a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMInvoicePayment.php +++ b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMInvoicePayment.php @@ -4,6 +4,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; +use App\Classes\Exceptions\ConnectionErrorException; use Illuminate\Support\Facades\Log; use App\Classes\Modules\PerfexCRM\DataTransferObjects\InvoicePaymentPerfexCRMObject; @@ -36,8 +37,13 @@ class CreatesPerfexCRMInvoicePayment Log::error('CreatesPerfexCRMInvoicePayment: '.$response); return null; } - }catch(\Exception $exception){ - throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage()); + } + catch(\Illuminate\Http\Client\ConnectionException $exception){ + $error = 'Failed to connect to CRM'; + throw new ConnectionErrorException($error, $exception->getMessage(), "", $exception->getTraceAsString()); + } + catch(\Exception $exception){ + throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage()); } } } diff --git a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMLead.php b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMLead.php index ea7b7917..b2ac9c23 100644 --- a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMLead.php +++ b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMLead.php @@ -4,6 +4,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; +use App\Classes\Exceptions\ConnectionErrorException; use Illuminate\Support\Facades\Log; use App\Classes\Modules\PerfexCRM\DataTransferObjects\CreateLeadPerfexCRMObject; @@ -43,8 +44,13 @@ class CreatesPerfexCRMLead Log::error('CreatesPerfexCRMLead: '.$response); return null; } - }catch(\Exception $exception){ - throw new MalformedRequestException('Unable to get correct response from Perfex CRM server ' . $exception->getMessage()); + } + catch(\Illuminate\Http\Client\ConnectionException $exception){ + $error = 'Failed to connect to CRM'; + throw new ConnectionErrorException($error, $exception->getMessage(), "", $exception->getTraceAsString()); + } + catch(\Exception $exception){ + throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage()); } } } diff --git a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMMilestone.php b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMMilestone.php index 27bdf44e..37342882 100644 --- a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMMilestone.php +++ b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMMilestone.php @@ -4,6 +4,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; +use App\Classes\Exceptions\ConnectionErrorException; use Illuminate\Support\Facades\Log; class CreatesPerfexCRMMilestone @@ -39,8 +40,13 @@ class CreatesPerfexCRMMilestone Log::error('CreatesPerfexCRMMilestone: '.$response); return null; } - }catch(\Exception $exception){ - throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage()); + } + catch(\Illuminate\Http\Client\ConnectionException $exception){ + $error = 'Failed to connect to CRM'; + throw new ConnectionErrorException($error, $exception->getMessage(), "", $exception->getTraceAsString()); + } + catch(\Exception $exception){ + throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage()); } } } diff --git a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMSupportTicket.php b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMSupportTicket.php new file mode 100644 index 00000000..b15f09c1 --- /dev/null +++ b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMSupportTicket.php @@ -0,0 +1,52 @@ + $subject, + 'department' => $department, + 'contactid' => $contactid, + 'userid' => $userid, + ]; + + $response = Http::asForm()->withHeaders([ + 'authtoken' => config('perfexcrm.api_key')]) + ->post(config('perfexcrm.base_url').'/api/tickets',$data); + + if($response->successful()){ + $data = $response->json(); + return (object) $data; + }else{ + Log::error($response); + return null; + } + } + catch(\Illuminate\Http\Client\ConnectionException $exception){ + $error = 'Failed to connect to CRM'; + throw new ConnectionErrorException($error, $exception->getMessage(), "", $exception->getTraceAsString()); + } + catch(\Exception $exception){ + $error = 'Support Ticket creation failed'; + Log::error($error. ": ". $exception->getMessage()); + Log::error('Payload: '.json_encode($data)); + throw new MalformedRequestException($error); + } + } +} diff --git a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php index 4c89a3db..1d04ce5e 100644 --- a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php +++ b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php @@ -4,6 +4,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; +use App\Classes\Exceptions\ConnectionErrorException; use Illuminate\Support\Facades\Log; use App\Classes\ValueObjects\Constants\PerfexCRMCustomFields; use App\Classes\Modules\PerfexCRM\DataTransferObjects\CreateTaskPerfexCRMObject; @@ -60,8 +61,13 @@ class CreatesPerfexCRMTask Log::error('CreatesPerfexCRMTask: '.$response); return null; } - }catch(\Exception $exception){ - throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage()); + } + catch(\Illuminate\Http\Client\ConnectionException $exception){ + $error = 'Failed to connect to CRM'; + throw new ConnectionErrorException($error, $exception->getMessage(), "", $exception->getTraceAsString()); + } + catch(\Exception $exception){ + throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage()); } } } diff --git a/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMCustomer.php b/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMCustomer.php index dd5acff1..decc51bc 100644 --- a/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMCustomer.php +++ b/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMCustomer.php @@ -4,6 +4,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; +use App\Classes\Exceptions\ConnectionErrorException; use Illuminate\Support\Facades\Log; class FetchesPerfexCRMCustomer @@ -27,8 +28,15 @@ class FetchesPerfexCRMCustomer Log::error('FetchesPerfexCRMCustomer: '.$response); return null; } - }catch(\Exception $exception){ - throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage()); + } + catch(\Illuminate\Http\Client\ConnectionException $exception){ + $error = 'Failed to connect to CRM'; + throw new ConnectionErrorException($error, $exception->getMessage(), $email, $exception->getTraceAsString()); + } + catch(\Exception $exception){ + $error = 'Unable to get correct response from Perfex CRM server: ' . $exception->getMessage(); + Log::error($error); + throw new MalformedRequestException($error); } } } diff --git a/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMInvoice.php b/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMInvoice.php index 3d4f9222..9104a3a9 100644 --- a/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMInvoice.php +++ b/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMInvoice.php @@ -4,6 +4,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; +use App\Classes\Exceptions\ConnectionErrorException; use Illuminate\Support\Facades\Log; class FetchesPerfexCRMInvoice @@ -29,7 +30,12 @@ class FetchesPerfexCRMInvoice Log::error('FetchesPerfexCRMInvoice: '.$response); return null; } - }catch(\Exception $exception){ + } + catch(\Illuminate\Http\Client\ConnectionException $exception){ + $error = 'Failed to connect to CRM'; + throw new ConnectionErrorException($error, $exception->getMessage(), "", $exception->getTraceAsString()); + } + catch(\Exception $exception){ throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage()); } } diff --git a/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMLead.php b/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMLead.php index 773b602c..09f1af6e 100644 --- a/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMLead.php +++ b/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMLead.php @@ -4,6 +4,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; +use App\Classes\Exceptions\ConnectionErrorException; use Illuminate\Support\Facades\Log; class FetchesPerfexCRMLead @@ -27,7 +28,12 @@ class FetchesPerfexCRMLead Log::error('FetchesPerfexCRMLead: '.$response); return null; } - }catch(\Exception $exception){ + } + catch(\Illuminate\Http\Client\ConnectionException $exception){ + $error = 'Failed to connect to CRM'; + throw new ConnectionErrorException($error, $exception->getMessage(), $email, $exception->getTraceAsString()); + } + catch(\Exception $exception){ throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage()); } } diff --git a/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMMilestone.php b/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMMilestone.php index 6d2ab27f..77433f6e 100644 --- a/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMMilestone.php +++ b/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMMilestone.php @@ -4,6 +4,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; +use App\Classes\Exceptions\ConnectionErrorException; use Illuminate\Support\Facades\Log; class FetchesPerfexCRMMilestone @@ -33,8 +34,13 @@ class FetchesPerfexCRMMilestone Log::error('FetchesPerfexCRMMilestone: '.$response); return null; } - }catch(\Exception $exception){ - throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage()); + } + catch(\Illuminate\Http\Client\ConnectionException $exception){ + $error = 'Failed to connect to CRM'; + throw new ConnectionErrorException($error, $exception->getMessage(), "", $exception->getTraceAsString()); + } + catch(\Exception $exception){ + throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage()); } } } diff --git a/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMProject.php b/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMProject.php index 94797363..a6f43b7e 100644 --- a/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMProject.php +++ b/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMProject.php @@ -4,6 +4,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; +use App\Classes\Exceptions\ConnectionErrorException; use Illuminate\Support\Facades\Log; class FetchesPerfexCRMProject @@ -33,8 +34,13 @@ class FetchesPerfexCRMProject Log::error('FetchesPerfexCRMProject: '.$response); return null; } - }catch(\Exception $exception){ - throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage()); + } + catch(\Illuminate\Http\Client\ConnectionException $exception){ + $error = 'Failed to connect to CRM'; + throw new ConnectionErrorException($error, $exception->getMessage(), "", $exception->getTraceAsString()); + } + catch(\Exception $exception){ + throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage()); } } } diff --git a/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMTask.php b/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMTask.php index 6cd4f052..a83eb112 100644 --- a/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMTask.php +++ b/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMTask.php @@ -4,6 +4,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; +use App\Classes\Exceptions\ConnectionErrorException; use Illuminate\Support\Facades\Log; use App\Classes\General\Helper; @@ -47,8 +48,13 @@ class FetchesPerfexCRMTask Helper::debugLogger($response); return null; } - }catch(\Exception $exception){ - throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage()); + } + catch(\Illuminate\Http\Client\ConnectionException $exception){ + $error = 'Failed to connect to CRM'; + throw new ConnectionErrorException($error, $exception->getMessage(), "", $exception->getTraceAsString()); + } + catch(\Exception $exception){ + throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage()); } } } diff --git a/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMCustomer.php b/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMCustomer.php index 74706e49..193155e3 100644 --- a/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMCustomer.php +++ b/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMCustomer.php @@ -4,6 +4,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; +use App\Classes\Exceptions\ConnectionErrorException; use Illuminate\Support\Facades\Log; use App\Classes\ValueObjects\Constants\PerfexCRMCustomFields; use App\Classes\General\Helper; @@ -41,8 +42,13 @@ class UpdatesPerfexCRMCustomer // Helper::debugLogger($response); return null; } - }catch(\Exception $exception){ - throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage()); + } + catch(\Illuminate\Http\Client\ConnectionException $exception){ + $error = 'Failed to connect to CRM'; + throw new ConnectionErrorException($error, $exception->getMessage(), "", $exception->getTraceAsString()); + } + catch(\Exception $exception){ + throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage()); } } } diff --git a/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMInvoice.php b/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMInvoice.php index d7a467c1..5f21cd32 100644 --- a/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMInvoice.php +++ b/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMInvoice.php @@ -4,6 +4,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; +use App\Classes\Exceptions\ConnectionErrorException; use Illuminate\Support\Facades\Log; class UpdatesPerfexCRMInvoice @@ -63,7 +64,12 @@ class UpdatesPerfexCRMInvoice Log::error('UpdatesPerfexCRMInvoice: '.$response); return null; } - }catch(\Exception $exception){ + } + catch(\Illuminate\Http\Client\ConnectionException $exception){ + $error = 'Failed to connect to CRM'; + throw new ConnectionErrorException($error, $exception->getMessage(), "", $exception->getTraceAsString()); + } + catch(\Exception $exception){ throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage()); } } diff --git a/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMLead.php b/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMLead.php index 0e992c32..6ac332f7 100644 --- a/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMLead.php +++ b/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMLead.php @@ -4,6 +4,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; +use App\Classes\Exceptions\ConnectionErrorException; use Illuminate\Support\Facades\Log; use App\Classes\ValueObjects\Constants\PerfexCRMCustomFields; @@ -44,7 +45,12 @@ class UpdatesPerfexCRMLead Log::error('UpdatesPerfexCRMLead: '.$response); return null; } - }catch(\Exception $exception){ + } + catch(\Illuminate\Http\Client\ConnectionException $exception){ + $error = 'Failed to connect to CRM'; + throw new ConnectionErrorException($error, $exception->getMessage(), "", $exception->getTraceAsString()); + } + catch(\Exception $exception){ throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage()); } } diff --git a/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMProject.php b/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMProject.php index 535f128b..9dceba4c 100644 --- a/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMProject.php +++ b/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMProject.php @@ -4,6 +4,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; +use App\Classes\Exceptions\ConnectionErrorException; use Illuminate\Support\Facades\Log; class UpdatesPerfexCRMProject @@ -36,7 +37,12 @@ class UpdatesPerfexCRMProject Log::error('UpdatesPerfexCRMProject: '.$response); return null; } - }catch(\Exception $exception){ + } + catch(\Illuminate\Http\Client\ConnectionException $exception){ + $error = 'Failed to connect to CRM'; + throw new ConnectionErrorException($error, $exception->getMessage(), "", $exception->getTraceAsString()); + } + catch(\Exception $exception){ throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage()); } } diff --git a/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMTask.php b/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMTask.php index 1c9f047b..1ece3431 100644 --- a/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMTask.php +++ b/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMTask.php @@ -4,6 +4,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; +use App\Classes\Exceptions\ConnectionErrorException; use Illuminate\Support\Facades\Log; class UpdatesPerfexCRMTask @@ -41,8 +42,13 @@ class UpdatesPerfexCRMTask Log::error('UpdatesPerfexCRMTask: '.$response); return null; } - }catch(\Exception $exception){ - throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage()); + } + catch(\Illuminate\Http\Client\ConnectionException $exception){ + $error = 'Failed to connect to CRM'; + throw new ConnectionErrorException($error, $exception->getMessage(), "", $exception->getTraceAsString()); + } + catch(\Exception $exception){ + throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage()); } } } diff --git a/app/Classes/Modules/Receipts/Standards/Rules/CanCreateReceipt.php b/app/Classes/Modules/Receipts/Standards/Rules/CanCreateReceipt.php index ea6b4f02..5589b11a 100644 --- a/app/Classes/Modules/Receipts/Standards/Rules/CanCreateReceipt.php +++ b/app/Classes/Modules/Receipts/Standards/Rules/CanCreateReceipt.php @@ -13,7 +13,7 @@ class CanCreateReceipt extends AbstractRule /** @var ReceiptValidation */ private $receiptValidation; - + public function __construct(ReceiptValidation $receiptValidation) { $this->receiptValidation = $receiptValidation; @@ -23,7 +23,7 @@ class CanCreateReceipt extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -48,4 +48,4 @@ class CanCreateReceipt extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Receipts/Standards/Rules/CanCreateReceiptDetail.php b/app/Classes/Modules/Receipts/Standards/Rules/CanCreateReceiptDetail.php index 71466752..e905dc38 100644 --- a/app/Classes/Modules/Receipts/Standards/Rules/CanCreateReceiptDetail.php +++ b/app/Classes/Modules/Receipts/Standards/Rules/CanCreateReceiptDetail.php @@ -13,7 +13,7 @@ class CanCreateReceiptDetail extends AbstractRule /** @var ReceiptDetailValidation */ private $receiptDetailValidation; - + public function __construct(ReceiptDetailValidation $receiptDetailValidation) { $this->receiptDetailValidation = $receiptDetailValidation; @@ -23,7 +23,7 @@ class CanCreateReceiptDetail extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -48,4 +48,4 @@ class CanCreateReceiptDetail extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Remarks/Standards/Rules/CanCreateRemark.php b/app/Classes/Modules/Remarks/Standards/Rules/CanCreateRemark.php index fc51178f..a7d2e5b1 100644 --- a/app/Classes/Modules/Remarks/Standards/Rules/CanCreateRemark.php +++ b/app/Classes/Modules/Remarks/Standards/Rules/CanCreateRemark.php @@ -26,7 +26,7 @@ class CanCreateRemark extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/Remarks/Standards/Rules/CanDeleteRemark.php b/app/Classes/Modules/Remarks/Standards/Rules/CanDeleteRemark.php index 7ddece31..1c61ac9d 100644 --- a/app/Classes/Modules/Remarks/Standards/Rules/CanDeleteRemark.php +++ b/app/Classes/Modules/Remarks/Standards/Rules/CanDeleteRemark.php @@ -13,7 +13,7 @@ class CanDeleteRemark extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/Remarks/Standards/Rules/CanFetchRemark.php b/app/Classes/Modules/Remarks/Standards/Rules/CanFetchRemark.php index 6642611c..31ae8301 100644 --- a/app/Classes/Modules/Remarks/Standards/Rules/CanFetchRemark.php +++ b/app/Classes/Modules/Remarks/Standards/Rules/CanFetchRemark.php @@ -13,7 +13,7 @@ class CanFetchRemark extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/Remarks/Standards/Rules/CanListRemarks.php b/app/Classes/Modules/Remarks/Standards/Rules/CanListRemarks.php index 4911a53b..b1372049 100644 --- a/app/Classes/Modules/Remarks/Standards/Rules/CanListRemarks.php +++ b/app/Classes/Modules/Remarks/Standards/Rules/CanListRemarks.php @@ -13,7 +13,7 @@ class CanListRemarks extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/Remarks/Standards/Rules/CanUpdateRemark.php b/app/Classes/Modules/Remarks/Standards/Rules/CanUpdateRemark.php index 8a8c10e8..f6fd6587 100644 --- a/app/Classes/Modules/Remarks/Standards/Rules/CanUpdateRemark.php +++ b/app/Classes/Modules/Remarks/Standards/Rules/CanUpdateRemark.php @@ -26,7 +26,7 @@ class CanUpdateRemark extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/Schedules/Standards/Rules/CanCreateSchedule.php b/app/Classes/Modules/Schedules/Standards/Rules/CanCreateSchedule.php index 38dadf18..fb1c5860 100644 --- a/app/Classes/Modules/Schedules/Standards/Rules/CanCreateSchedule.php +++ b/app/Classes/Modules/Schedules/Standards/Rules/CanCreateSchedule.php @@ -26,7 +26,7 @@ class CanCreateSchedule extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/Schedules/Standards/Rules/CanDeleteSchedule.php b/app/Classes/Modules/Schedules/Standards/Rules/CanDeleteSchedule.php index 31b5fb08..e6dc88f9 100644 --- a/app/Classes/Modules/Schedules/Standards/Rules/CanDeleteSchedule.php +++ b/app/Classes/Modules/Schedules/Standards/Rules/CanDeleteSchedule.php @@ -13,7 +13,7 @@ class CanDeleteSchedule extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/Schedules/Standards/Rules/CanFetchSchedule.php b/app/Classes/Modules/Schedules/Standards/Rules/CanFetchSchedule.php index 4bffce34..baddb536 100644 --- a/app/Classes/Modules/Schedules/Standards/Rules/CanFetchSchedule.php +++ b/app/Classes/Modules/Schedules/Standards/Rules/CanFetchSchedule.php @@ -13,7 +13,7 @@ class CanFetchSchedule extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/Schedules/Standards/Rules/CanListSchedules.php b/app/Classes/Modules/Schedules/Standards/Rules/CanListSchedules.php index b837a71e..fa8660ec 100644 --- a/app/Classes/Modules/Schedules/Standards/Rules/CanListSchedules.php +++ b/app/Classes/Modules/Schedules/Standards/Rules/CanListSchedules.php @@ -13,7 +13,7 @@ class CanListSchedules extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/Schedules/Standards/Rules/CanUpdateSchedule.php b/app/Classes/Modules/Schedules/Standards/Rules/CanUpdateSchedule.php index 53cb24a2..93b6540c 100644 --- a/app/Classes/Modules/Schedules/Standards/Rules/CanUpdateSchedule.php +++ b/app/Classes/Modules/Schedules/Standards/Rules/CanUpdateSchedule.php @@ -26,7 +26,7 @@ class CanUpdateSchedule extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/Segments/Standards/Rules/CanCreateConstant.php b/app/Classes/Modules/Segments/Standards/Rules/CanCreateConstant.php index 55f9c61a..3622c71a 100644 --- a/app/Classes/Modules/Segments/Standards/Rules/CanCreateConstant.php +++ b/app/Classes/Modules/Segments/Standards/Rules/CanCreateConstant.php @@ -25,7 +25,7 @@ class CanCreateConstant extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -51,4 +51,4 @@ class CanCreateConstant extends AbstractRule { return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Segments/Standards/Rules/CanCreateSegment.php b/app/Classes/Modules/Segments/Standards/Rules/CanCreateSegment.php index 9c5cdc57..3ce2f890 100644 --- a/app/Classes/Modules/Segments/Standards/Rules/CanCreateSegment.php +++ b/app/Classes/Modules/Segments/Standards/Rules/CanCreateSegment.php @@ -24,7 +24,7 @@ class CanCreateSegment extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -48,4 +48,4 @@ class CanCreateSegment extends AbstractRule { return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Segments/Standards/Rules/CanDeleteSegment.php b/app/Classes/Modules/Segments/Standards/Rules/CanDeleteSegment.php index d78b2429..559dc69a 100644 --- a/app/Classes/Modules/Segments/Standards/Rules/CanDeleteSegment.php +++ b/app/Classes/Modules/Segments/Standards/Rules/CanDeleteSegment.php @@ -10,7 +10,7 @@ class CanDeleteSegment extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -37,4 +37,4 @@ class CanDeleteSegment extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Segments/Standards/Rules/CanFetchSegment.php b/app/Classes/Modules/Segments/Standards/Rules/CanFetchSegment.php index e6756305..b6c064fb 100644 --- a/app/Classes/Modules/Segments/Standards/Rules/CanFetchSegment.php +++ b/app/Classes/Modules/Segments/Standards/Rules/CanFetchSegment.php @@ -13,7 +13,7 @@ class CanFetchSegment extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -40,4 +40,4 @@ class CanFetchSegment extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Segments/Standards/Rules/CanListSegments.php b/app/Classes/Modules/Segments/Standards/Rules/CanListSegments.php index 9d01231d..cc46af53 100644 --- a/app/Classes/Modules/Segments/Standards/Rules/CanListSegments.php +++ b/app/Classes/Modules/Segments/Standards/Rules/CanListSegments.php @@ -10,7 +10,7 @@ class CanListSegments extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { return true; } @@ -35,4 +35,4 @@ class CanListSegments extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Segments/Standards/Rules/CanUpdateConstant.php b/app/Classes/Modules/Segments/Standards/Rules/CanUpdateConstant.php index 650b249c..650792ab 100644 --- a/app/Classes/Modules/Segments/Standards/Rules/CanUpdateConstant.php +++ b/app/Classes/Modules/Segments/Standards/Rules/CanUpdateConstant.php @@ -26,7 +26,7 @@ class CanUpdateConstant extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -51,4 +51,4 @@ class CanUpdateConstant extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Segments/Standards/Rules/CanUpdateSegment.php b/app/Classes/Modules/Segments/Standards/Rules/CanUpdateSegment.php index 58a8c0ca..0ad12f01 100644 --- a/app/Classes/Modules/Segments/Standards/Rules/CanUpdateSegment.php +++ b/app/Classes/Modules/Segments/Standards/Rules/CanUpdateSegment.php @@ -26,7 +26,7 @@ class CanUpdateSegment extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules @@ -56,4 +56,4 @@ class CanUpdateSegment extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/ServiceTypes/Standards/Rules/CanCreateServiceType.php b/app/Classes/Modules/ServiceTypes/Standards/Rules/CanCreateServiceType.php index 0fb57c32..4a024d96 100644 --- a/app/Classes/Modules/ServiceTypes/Standards/Rules/CanCreateServiceType.php +++ b/app/Classes/Modules/ServiceTypes/Standards/Rules/CanCreateServiceType.php @@ -26,7 +26,7 @@ class CanCreateServiceType extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -54,4 +54,4 @@ class CanCreateServiceType extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/ServiceTypes/Standards/Rules/CanDeleteServiceType.php b/app/Classes/Modules/ServiceTypes/Standards/Rules/CanDeleteServiceType.php index 1a832257..c07e7bd8 100644 --- a/app/Classes/Modules/ServiceTypes/Standards/Rules/CanDeleteServiceType.php +++ b/app/Classes/Modules/ServiceTypes/Standards/Rules/CanDeleteServiceType.php @@ -13,7 +13,7 @@ class CanDeleteServiceType extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -40,4 +40,4 @@ class CanDeleteServiceType extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/ServiceTypes/Standards/Rules/CanFetchServiceType.php b/app/Classes/Modules/ServiceTypes/Standards/Rules/CanFetchServiceType.php index e76497c8..8123455b 100644 --- a/app/Classes/Modules/ServiceTypes/Standards/Rules/CanFetchServiceType.php +++ b/app/Classes/Modules/ServiceTypes/Standards/Rules/CanFetchServiceType.php @@ -13,7 +13,7 @@ class CanFetchServiceType extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -40,4 +40,4 @@ class CanFetchServiceType extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/ServiceTypes/Standards/Rules/CanListServiceTypes.php b/app/Classes/Modules/ServiceTypes/Standards/Rules/CanListServiceTypes.php index 44dc0e8b..315f6e4a 100644 --- a/app/Classes/Modules/ServiceTypes/Standards/Rules/CanListServiceTypes.php +++ b/app/Classes/Modules/ServiceTypes/Standards/Rules/CanListServiceTypes.php @@ -13,7 +13,7 @@ class CanListServiceTypes extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -40,4 +40,4 @@ class CanListServiceTypes extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/ServiceTypes/Standards/Rules/CanUpdateServiceType.php b/app/Classes/Modules/ServiceTypes/Standards/Rules/CanUpdateServiceType.php index 0e066109..0d1fe2d4 100644 --- a/app/Classes/Modules/ServiceTypes/Standards/Rules/CanUpdateServiceType.php +++ b/app/Classes/Modules/ServiceTypes/Standards/Rules/CanUpdateServiceType.php @@ -26,7 +26,7 @@ class CanUpdateServiceType extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -54,4 +54,4 @@ class CanUpdateServiceType extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Steps/Standards/Rules/CanCreateStep.php b/app/Classes/Modules/Steps/Standards/Rules/CanCreateStep.php index b7778830..b9343620 100644 --- a/app/Classes/Modules/Steps/Standards/Rules/CanCreateStep.php +++ b/app/Classes/Modules/Steps/Standards/Rules/CanCreateStep.php @@ -17,7 +17,7 @@ class CanCreateStep extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -38,4 +38,4 @@ class CanCreateStep extends AbstractRule //Contract created on Unity return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Steps/Standards/Rules/CanUpdateStep.php b/app/Classes/Modules/Steps/Standards/Rules/CanUpdateStep.php index 42f53932..0cc6be73 100644 --- a/app/Classes/Modules/Steps/Standards/Rules/CanUpdateStep.php +++ b/app/Classes/Modules/Steps/Standards/Rules/CanUpdateStep.php @@ -17,7 +17,7 @@ class CanUpdateStep extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -36,4 +36,4 @@ class CanUpdateStep extends AbstractRule { return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Transactions/ControllersLogic/CreatePaymentTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/CreatePaymentTransactionLogic.php index 4b4a31a4..ae10403a 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/CreatePaymentTransactionLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/CreatePaymentTransactionLogic.php @@ -47,7 +47,7 @@ class CreatePaymentTransactionLogic extends AbstractControllerLogic $payment_transaction = $this->createPaymentTransactionProcessor->execute($invoice_transaction, $payment_method , $request->input('bank_code')); - //cief todo: at exchange there is a transition step + //cief todo: at exchange there is a transition step - starts // if(PaymentMethodType::PAYMENT_METHODS[$request->input('payment_method')] == PaymentMethodType::PAYMENT_GATEWAY){ // $this->updatesTransactionStatus->execute($transaction, ApprovalStatus::PENDING_VERIFICATION); // } @@ -59,7 +59,7 @@ class CreatePaymentTransactionLogic extends AbstractControllerLogic //To use //ApprovalStatus::PENDING_VERIFICATION; //use this to trigger $this->transactionToPerfexCRMV2Processor->execute > defineTasks > defineTasks_handlePendingVerificationStatus > definePaymentTasks - + //cief todo: at exchange there is a transition step - ends return $this->resourceResponse(new TransactionResource($payment_transaction)); } diff --git a/app/Classes/Modules/Transactions/Standards/Rules/CanCreateTransaction.php b/app/Classes/Modules/Transactions/Standards/Rules/CanCreateTransaction.php index 39fdd05a..4acdc002 100644 --- a/app/Classes/Modules/Transactions/Standards/Rules/CanCreateTransaction.php +++ b/app/Classes/Modules/Transactions/Standards/Rules/CanCreateTransaction.php @@ -13,7 +13,7 @@ class CanCreateTransaction extends AbstractRule /** @var TransactionValidation */ private $transactionValidation; - + public function __construct(TransactionValidation $transactionValidation) { $this->transactionValidation = $transactionValidation; @@ -23,7 +23,7 @@ class CanCreateTransaction extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -48,4 +48,4 @@ class CanCreateTransaction extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Transactions/Standards/Rules/CanCreateTransactionDetail.php b/app/Classes/Modules/Transactions/Standards/Rules/CanCreateTransactionDetail.php index 2669ffbf..8c0fa497 100644 --- a/app/Classes/Modules/Transactions/Standards/Rules/CanCreateTransactionDetail.php +++ b/app/Classes/Modules/Transactions/Standards/Rules/CanCreateTransactionDetail.php @@ -13,7 +13,7 @@ class CanCreateTransactionDetail extends AbstractRule /** @var TransactionDetailValidation */ private $transactionDetailValidation; - + public function __construct(TransactionDetailValidation $transactionDetailValidation) { $this->transactionDetailValidation = $transactionDetailValidation; @@ -23,7 +23,7 @@ class CanCreateTransactionDetail extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -48,4 +48,4 @@ class CanCreateTransactionDetail extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Transports/Standards/Rules/CanCreateTransport.php b/app/Classes/Modules/Transports/Standards/Rules/CanCreateTransport.php index a7e41ea1..48af9247 100644 --- a/app/Classes/Modules/Transports/Standards/Rules/CanCreateTransport.php +++ b/app/Classes/Modules/Transports/Standards/Rules/CanCreateTransport.php @@ -26,7 +26,7 @@ class CanCreateTransport extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/Transports/Standards/Rules/CanDeleteTransport.php b/app/Classes/Modules/Transports/Standards/Rules/CanDeleteTransport.php index 1d1e94ab..195f60c1 100644 --- a/app/Classes/Modules/Transports/Standards/Rules/CanDeleteTransport.php +++ b/app/Classes/Modules/Transports/Standards/Rules/CanDeleteTransport.php @@ -13,7 +13,7 @@ class CanDeleteTransport extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/Transports/Standards/Rules/CanFetchTransport.php b/app/Classes/Modules/Transports/Standards/Rules/CanFetchTransport.php index 05ef9121..3c58f75d 100644 --- a/app/Classes/Modules/Transports/Standards/Rules/CanFetchTransport.php +++ b/app/Classes/Modules/Transports/Standards/Rules/CanFetchTransport.php @@ -13,7 +13,7 @@ class CanFetchTransport extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/Transports/Standards/Rules/CanListTransports.php b/app/Classes/Modules/Transports/Standards/Rules/CanListTransports.php index 2a056f5c..01b1bd85 100644 --- a/app/Classes/Modules/Transports/Standards/Rules/CanListTransports.php +++ b/app/Classes/Modules/Transports/Standards/Rules/CanListTransports.php @@ -13,7 +13,7 @@ class CanListTransports extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/Transports/Standards/Rules/CanUpdateTransport.php b/app/Classes/Modules/Transports/Standards/Rules/CanUpdateTransport.php index 05fd4484..ad4656fe 100644 --- a/app/Classes/Modules/Transports/Standards/Rules/CanUpdateTransport.php +++ b/app/Classes/Modules/Transports/Standards/Rules/CanUpdateTransport.php @@ -26,7 +26,7 @@ class CanUpdateTransport extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/Wallets/Standards/Rules/CanCreateCompanyWallet.php b/app/Classes/Modules/Wallets/Standards/Rules/CanCreateCompanyWallet.php index 0f1dd065..920d3539 100644 --- a/app/Classes/Modules/Wallets/Standards/Rules/CanCreateCompanyWallet.php +++ b/app/Classes/Modules/Wallets/Standards/Rules/CanCreateCompanyWallet.php @@ -26,7 +26,7 @@ class CanCreateCompanyWallet extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -52,4 +52,4 @@ class CanCreateCompanyWallet extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Wallets/Standards/Rules/CanCreateWalletTransaction.php b/app/Classes/Modules/Wallets/Standards/Rules/CanCreateWalletTransaction.php index 8beafb37..1cff2551 100644 --- a/app/Classes/Modules/Wallets/Standards/Rules/CanCreateWalletTransaction.php +++ b/app/Classes/Modules/Wallets/Standards/Rules/CanCreateWalletTransaction.php @@ -13,7 +13,7 @@ class CanCreateWalletTransaction extends AbstractRule /** @var WalletTransactionValidation */ private $walletTransactionValidation; - + public function __construct(WalletTransactionValidation $walletTransactionValidation) { $this->walletTransactionValidation = $walletTransactionValidation; @@ -23,7 +23,7 @@ class CanCreateWalletTransaction extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; @@ -48,4 +48,4 @@ class CanCreateWalletTransaction extends AbstractRule return true; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Wallets/Standards/Rules/CanListWallet.php b/app/Classes/Modules/Wallets/Standards/Rules/CanListWallet.php index c87cb316..de944f61 100644 --- a/app/Classes/Modules/Wallets/Standards/Rules/CanListWallet.php +++ b/app/Classes/Modules/Wallets/Standards/Rules/CanListWallet.php @@ -23,7 +23,7 @@ class CanListWallet extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/Wallets/Standards/Rules/CanTopUpWallet.php b/app/Classes/Modules/Wallets/Standards/Rules/CanTopUpWallet.php index 9a005498..0f3cbc64 100644 --- a/app/Classes/Modules/Wallets/Standards/Rules/CanTopUpWallet.php +++ b/app/Classes/Modules/Wallets/Standards/Rules/CanTopUpWallet.php @@ -23,7 +23,7 @@ class CanTopUpWallet extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/Modules/Wallets/Standards/Rules/CanWithdrawWallet.php b/app/Classes/Modules/Wallets/Standards/Rules/CanWithdrawWallet.php index 6fb4019d..a2cd3b6a 100644 --- a/app/Classes/Modules/Wallets/Standards/Rules/CanWithdrawWallet.php +++ b/app/Classes/Modules/Wallets/Standards/Rules/CanWithdrawWallet.php @@ -23,7 +23,7 @@ class CanWithdrawWallet extends AbstractRule /** * @return bool */ - protected function authorized(): bool + protected function authorized($object): bool { // TODO Set Authorization rules return true; diff --git a/app/Classes/ValueObjects/Constants/QASystemSourceType.php b/app/Classes/ValueObjects/Constants/QASystemSourceType.php new file mode 100644 index 00000000..b2cd5402 --- /dev/null +++ b/app/Classes/ValueObjects/Constants/QASystemSourceType.php @@ -0,0 +1,25 @@ +execute($request); + } +} diff --git a/app/Http/Controllers/Exports/ExportPendingArrangementPackingListV2Controller.php b/app/Http/Controllers/Exports/ExportPendingArrangementPackingListV2Controller.php new file mode 100644 index 00000000..2829b8a6 --- /dev/null +++ b/app/Http/Controllers/Exports/ExportPendingArrangementPackingListV2Controller.php @@ -0,0 +1,28 @@ +headers->set('PendingArrangement', true); + return $logic->execute($request); + } + + /** + * @param Request $request + * @param ExportPackingListLogic $logic + * @return BinaryFileResponse + */ + public function onHold(Request $request, ExportPackingListLogic $logic) { + $request->headers->set('OnHold', true); + return $logic->execute($request); + } +} diff --git a/app/Http/Controllers/HelpMenu/FetchQuestionQAController.php b/app/Http/Controllers/HelpMenu/FetchQuestionQAController.php new file mode 100644 index 00000000..22ebb169 --- /dev/null +++ b/app/Http/Controllers/HelpMenu/FetchQuestionQAController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/HelpMenu/GenerateFeedbackUrlController.php b/app/Http/Controllers/HelpMenu/GenerateFeedbackUrlController.php new file mode 100644 index 00000000..d5ceef3a --- /dev/null +++ b/app/Http/Controllers/HelpMenu/GenerateFeedbackUrlController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/HelpMenu/ListQuestionsAnswersQAController.php b/app/Http/Controllers/HelpMenu/ListQuestionsAnswersQAController.php new file mode 100644 index 00000000..68825164 --- /dev/null +++ b/app/Http/Controllers/HelpMenu/ListQuestionsAnswersQAController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/HelpMenu/ListQuestionsQAController.php b/app/Http/Controllers/HelpMenu/ListQuestionsQAController.php new file mode 100644 index 00000000..d1beced6 --- /dev/null +++ b/app/Http/Controllers/HelpMenu/ListQuestionsQAController.php @@ -0,0 +1,19 @@ +execute($request); + } +} diff --git a/app/Http/Controllers/HelpMenu/SubmitQAQuestionsController.php b/app/Http/Controllers/HelpMenu/SubmitQAQuestionsController.php new file mode 100644 index 00000000..6cd03d9b --- /dev/null +++ b/app/Http/Controllers/HelpMenu/SubmitQAQuestionsController.php @@ -0,0 +1,19 @@ +execute($request); + } +} diff --git a/app/Http/Controllers/HelpMenu/UpdateNextQuestionQAController.php b/app/Http/Controllers/HelpMenu/UpdateNextQuestionQAController.php new file mode 100644 index 00000000..bb1d42a7 --- /dev/null +++ b/app/Http/Controllers/HelpMenu/UpdateNextQuestionQAController.php @@ -0,0 +1,19 @@ +execute($request); + } +} diff --git a/app/Http/Middleware/TokenCheckerMiddleware.php b/app/Http/Middleware/TokenCheckerMiddleware.php index 480ea348..d6d6abfe 100644 --- a/app/Http/Middleware/TokenCheckerMiddleware.php +++ b/app/Http/Middleware/TokenCheckerMiddleware.php @@ -26,6 +26,9 @@ class TokenCheckerMiddleware // Check if the api_key is valid $apiKey = $request->query('api-key'); $personalAccessToken = PersonalAccessTokens::where('token', $apiKey)->first(); + if($personalAccessToken){ + $request->merge(['apiKeyExist' => $personalAccessToken->token]); + } if (!$personalAccessToken) { return response()->json(['error' => 'Unauthorized'], 401); diff --git a/app/Http/Resources/HelpMenuAnswerOptionsResource.php b/app/Http/Resources/HelpMenuAnswerOptionsResource.php new file mode 100644 index 00000000..e250c435 --- /dev/null +++ b/app/Http/Resources/HelpMenuAnswerOptionsResource.php @@ -0,0 +1,26 @@ + $this->id, + 'display_text' => $this->display_text, + 'value' => $this->value, + 'order' => $this->order, + 'question_number' => $this->question_number, + 'next_question_number' => $this->next_question_number, + ]; + } +} diff --git a/app/Http/Resources/HelpMenuQuestionResource.php b/app/Http/Resources/HelpMenuQuestionResource.php new file mode 100644 index 00000000..e41aeb53 --- /dev/null +++ b/app/Http/Resources/HelpMenuQuestionResource.php @@ -0,0 +1,53 @@ +question = $question; + $this->userId = $userId; + } + /** + * Transform the resource into an array. + * + * @param \Illuminate\Http\Request $request + * @return array + */ + public function toArray($request) + { + if($this->question){ + $q = (object)$this->question; + return [ + 'id' => $q->id, + 'question_number' => $q->question_number, + 'question_text' => $q->question_text, + 'question_type' => $q->question_type, + 'question_answers' => HelpMenuAnswerOptionsResource::collection(QAAnswerOptions::where('question_number', $q->question_number)->where('questionnaire_set_id', $q->questionnaire_set_id)->get()), + 'questionnaire_set_id' => $q->questionnaire_set_id, + 'next_nested_question' => $q->next_nested_question, + 'next_main_question' => $q->next_main_question, + 'is_start' => $q->is_start, + 'is_end' => $q->is_end, + 'end_text' => $q->end_text, + 'order' => $q->order, + 'answer' => QAUserAnswerSelected::where('question_id', $q->id)->where('user_id', $this->userId)->first(), + 'questionnaire_answers' => $q->is_end ? HelpMenuQuestionnaireAnswersResource::collection(QAUserAnswerSelected::where('user_id', $this->userId)->get()) : null, + ]; + } + else{ + return []; + } + } +} diff --git a/app/Http/Resources/HelpMenuQuestionnaireAnswersResource.php b/app/Http/Resources/HelpMenuQuestionnaireAnswersResource.php new file mode 100644 index 00000000..b65e690c --- /dev/null +++ b/app/Http/Resources/HelpMenuQuestionnaireAnswersResource.php @@ -0,0 +1,24 @@ +question_id)->first(); + return [ + 'question_text' => $question ? $question->question_text : null, + 'free_text_answer' => $this->free_text_answer + ]; + } +} diff --git a/app/Http/Resources/HelpMenuQuestionnaireSetsResource.php b/app/Http/Resources/HelpMenuQuestionnaireSetsResource.php new file mode 100644 index 00000000..7c629a1d --- /dev/null +++ b/app/Http/Resources/HelpMenuQuestionnaireSetsResource.php @@ -0,0 +1,23 @@ + $this->name, + 'description' => $this->description, + 'group' => $this->group, + ]; + } +} diff --git a/app/Http/Resources/HelpMenuQuestionsAnswersResource.php b/app/Http/Resources/HelpMenuQuestionsAnswersResource.php new file mode 100644 index 00000000..98314a16 --- /dev/null +++ b/app/Http/Resources/HelpMenuQuestionsAnswersResource.php @@ -0,0 +1,41 @@ +question_id)->first(); + $source = new HelpMenuUserSourceResource($this->userSource); + $user = $this->source_id === 0 ? new UserResource($this->user) : null; + + $user_marking = ''; + if($user){ + $companyModule = $user->companyModule()->first(); + $user_marking = $companyModule ? $companyModule->inviters()->withPivot('invitee_reference')->first()->pivot->invitee_reference : ""; + } + + return [ + 'question_id' => $this->question_id, + 'questionnaire' => new HelpMenuQuestionnaireSetsResource($this->question->questionnaire), + 'question_text' => $question ? $question->question_text : null, + 'free_text_answer' => $this->free_text_answer, + 'source_system' => $user ? QASystemSourceType::getText(QASystemSourceType::IZYIM) : QASystemSourceType::getText($source->system), + 'source_marking' => $user ? $user_marking : $source->marking, + 'source_email' => $user ? $user->email : $source->email, + 'created_at' => Carbon::parse($this->created_at)->format('d-m-Y'), + ]; + } +} diff --git a/app/Http/Resources/HelpMenuUserSourceResource.php b/app/Http/Resources/HelpMenuUserSourceResource.php new file mode 100644 index 00000000..e02d35ff --- /dev/null +++ b/app/Http/Resources/HelpMenuUserSourceResource.php @@ -0,0 +1,23 @@ + $this->system, + 'email' => $this->email, + 'marking' => $this->marking, + ]; + } +} diff --git a/app/Http/Resources/WalletResource.php b/app/Http/Resources/WalletResource.php index b2ff7934..7ce4d80b 100644 --- a/app/Http/Resources/WalletResource.php +++ b/app/Http/Resources/WalletResource.php @@ -23,7 +23,7 @@ class WalletResource extends JsonResource 'amount' => (double) $this->amount, 'company_id' => (int) $this->owner->id, 'transactions' => $this->whenLoaded('transactions', WalletTransactionResource::collection($this->transactions()->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])->orderBy('id', 'DESC')->get()), []), - 'top_up_records' => $this->whenLoaded('transactions', WalletTransactionResource::collection($this->transactions()->whereIn('type', [TransactionType::TOP_UP])->orderBy('id', 'DESC')->get()), []), + 'top_up_records' => $this->whenLoaded('transactions', WalletTransactionResource::collection($this->transactions()->whereIn('type', [TransactionType::TOP_UP, TransactionType::GROUP_PAYMENT])->orderBy('id', 'DESC')->get()), []), 'company_module_marking' => $this->owner->connections->first()->invitee_reference, ]; } diff --git a/app/Http/Resources/WalletTransactionResource.php b/app/Http/Resources/WalletTransactionResource.php index e5b8d1ce..0d643d1d 100644 --- a/app/Http/Resources/WalletTransactionResource.php +++ b/app/Http/Resources/WalletTransactionResource.php @@ -41,6 +41,9 @@ class WalletTransactionResource extends JsonResource case 11: $description = 'Debit Voucher for '.$this->payment_reference; break; + case 15: + $description = (double) $this->amount.' Credit Top up'; + break; } diff --git a/app/Models/QAAnswerOptions.php b/app/Models/QAAnswerOptions.php new file mode 100644 index 00000000..cd2eca79 --- /dev/null +++ b/app/Models/QAAnswerOptions.php @@ -0,0 +1,9 @@ +BelongsTo(QAQuestionnaireSet::class, 'questionnaire_set_id', 'id'); + } +} diff --git a/app/Models/QAUserAnswerSelected.php b/app/Models/QAUserAnswerSelected.php new file mode 100644 index 00000000..e85296aa --- /dev/null +++ b/app/Models/QAUserAnswerSelected.php @@ -0,0 +1,49 @@ +morphMany(Document::class, 'owner'); + } + + /** + * @return BelongsTo + */ + public function userSource(): BelongsTo + { + return $this->BelongsTo(QAUserSource::class, 'source_id', 'id'); + } + + /** + * @return BelongsTo + */ + public function user(): BelongsTo + { + return $this->BelongsTo(User::class, 'user_id', 'id'); + } + + /** + * @return BelongsTo + */ + public function question(): BelongsTo + { + return $this->BelongsTo(QAQuestions::class, 'question_id', 'id'); + } + +} diff --git a/app/Models/QAUserSource.php b/app/Models/QAUserSource.php new file mode 100644 index 00000000..21401df5 --- /dev/null +++ b/app/Models/QAUserSource.php @@ -0,0 +1,9 @@ +id(); + $table->string('name'); + $table->string('description')->nullable(); + $table->string('group')->nullable(); + $table->unsignedBigInteger('order')->default(0); + $table->unsignedBigInteger('next_set')->nullable(); + $table->unsignedBigInteger('version')->default(1); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('qa_questionnaire_sets'); + } +} diff --git a/database/migrations/2023_02_20_134124_create_qa_questions_table.php b/database/migrations/2023_02_20_134124_create_qa_questions_table.php new file mode 100644 index 00000000..881085aa --- /dev/null +++ b/database/migrations/2023_02_20_134124_create_qa_questions_table.php @@ -0,0 +1,45 @@ +id(); + $table->unsignedBigInteger('question_number'); + $table->text('question_text'); + $table->unsignedBigInteger('questionnaire_set_id'); + $table->unsignedBigInteger('next_nested_question')->nullable(); + $table->unsignedBigInteger('next_main_question')->nullable(); + $table->unsignedBigInteger('question_type'); + $table->tinyInteger('is_start'); + $table->tinyInteger('is_end'); + $table->string('end_text')->nullable(); + $table->unsignedBigInteger('order')->default(0); + $table->timestamps(); + $table->softDeletes(); + + $table->foreign('questionnaire_set_id')->references('id')->on('qa_questionnaire_sets'); + + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('qa_questions'); + } +} diff --git a/database/migrations/2023_02_21_091314_create_qa_answer_options_table.php b/database/migrations/2023_02_21_091314_create_qa_answer_options_table.php new file mode 100644 index 00000000..7c9fcc39 --- /dev/null +++ b/database/migrations/2023_02_21_091314_create_qa_answer_options_table.php @@ -0,0 +1,41 @@ +id(); + $table->text('display_text'); + $table->string('value'); + $table->unsignedBigInteger('order')->default(0); + $table->unsignedBigInteger('question_number'); + $table->unsignedBigInteger('next_question_number')->nullable(); + $table->unsignedBigInteger('questionnaire_set_id'); + $table->timestamps(); + $table->softDeletes(); + + $table->foreign('questionnaire_set_id')->references('id')->on('qa_questionnaire_sets'); + + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('qa_answer_options'); + } +} diff --git a/database/migrations/2023_09_19_154120_create_qa_user_source_table.php b/database/migrations/2023_09_19_154120_create_qa_user_source_table.php new file mode 100644 index 00000000..638a8d44 --- /dev/null +++ b/database/migrations/2023_09_19_154120_create_qa_user_source_table.php @@ -0,0 +1,34 @@ +id(); + $table->string('system'); + $table->string('email'); + $table->string('marking'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('qa_user_source'); + } +} diff --git a/database/migrations/2023_09_19_164120_create_qa_user_answer_selected_table.php b/database/migrations/2023_09_19_164120_create_qa_user_answer_selected_table.php new file mode 100644 index 00000000..5325614b --- /dev/null +++ b/database/migrations/2023_09_19_164120_create_qa_user_answer_selected_table.php @@ -0,0 +1,43 @@ +id(); + $table->unsignedBigInteger('user_id')->default(0); + $table->unsignedBigInteger('source_id')->default(0); + $table->unsignedBigInteger('question_id'); + $table->unsignedBigInteger('answer_option_id')->default(0); + $table->string('free_text_answer')->nullable(); + $table->string('reference')->nullable(); + $table->timestamps(); + $table->softDeletes(); + + $table->foreign('question_id')->references('id')->on('qa_questions'); + // $table->foreign('answer_option_id')->references('id')->on('qa_answer_options'); + // $table->foreign('user_id')->references('id')->on('users'); + // $table->foreign('source_id')->references('id')->on('qa_user_source'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('qa_user_answer_selected'); + } +} diff --git a/database/migrations/2023_10_03_230901_create_urls_table.php b/database/migrations/2023_10_03_230901_create_urls_table.php new file mode 100644 index 00000000..5e62e784 --- /dev/null +++ b/database/migrations/2023_10_03_230901_create_urls_table.php @@ -0,0 +1,34 @@ +id(); + $table->string('type'); + $table->string('short_url'); + $table->text('original_url'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('urls'); + } +} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index cf9474f7..ed1872de 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -21,5 +21,12 @@ class DatabaseSeeder extends Seeder $this->call(SegmentConstantsTableSeeder::class); $this->call(DummyDataSeeder::class); + + + // $this->call(QAQuestionsDemoSeeder::class); //DEMO POC + // $this->call(QAAnswerOptionsDemoSeeder::class); //DEMO POC + + // $this->call(QAQuestionsSeeder::class); + // $this->call(QAAnswerOptionsSeeder::class); } } diff --git a/database/seeders/QAAnswerOptionsDemoSeeder.php b/database/seeders/QAAnswerOptionsDemoSeeder.php new file mode 100644 index 00000000..34007228 --- /dev/null +++ b/database/seeders/QAAnswerOptionsDemoSeeder.php @@ -0,0 +1,193 @@ +display_text = "Billing"; + $answerOption->value = "Billing"; + $answerOption->question_number = 10; + $answerOption->next_question_number = 100; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 2 for Question 10 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Shipping"; + $answerOption->value = "Shipping"; + $answerOption->question_number = 10; + $answerOption->next_question_number = 100; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 3 for Question 10 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Returns"; + $answerOption->value = "Returns"; + $answerOption->question_number = 10; + $answerOption->next_question_number = 100; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 4 for Question 10 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Product Information"; + $answerOption->value = "Product Information"; + $answerOption->question_number = 10; + $answerOption->next_question_number = 100; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 5 for Question 10 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Technical Support"; + $answerOption->value = "Technical Support"; + $answerOption->question_number = 10; + $answerOption->next_question_number = 100; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 6 for Question 10 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Shipping Fee Calculation"; + $answerOption->value = "Shipping Fee Calculation"; + $answerOption->question_number = 10; + $answerOption->next_question_number = 600; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 7 for Question 10 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Error-in Measurements"; + $answerOption->value = "Error-in Measurements"; + $answerOption->question_number = 10; + $answerOption->next_question_number = 700; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 8 for Question 10 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Contact Us"; + $answerOption->value = "Contact Us"; + $answerOption->question_number = 10; + $answerOption->next_question_number = 800; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 1 for Question 20 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Option 1 for Question 20"; + $answerOption->value = "Option 1 for Question 20"; + $answerOption->question_number = 20; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 2 for Question 20 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Option 2 for Question 20"; + $answerOption->value = "Option 2 for Question 20"; + $answerOption->question_number = 20; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 1 for Question 100 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Option 1 for Question 100"; + $answerOption->value = "Option 1 for Question 100"; + $answerOption->question_number = 100; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 2 for Question 100 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Option 2 for Question 100"; + $answerOption->value = "Option 2 for Question 100"; + $answerOption->question_number = 100; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 1 for Question 30 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Option 1 for Question 30"; + $answerOption->value = "Option 1 for Question 30"; + $answerOption->question_number = 30; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 2 for Question 30 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Option 2 for Question 30"; + $answerOption->value = "Option 2 for Question 30"; + $answerOption->question_number = 30; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 3 for Question 30 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Option 3 for Question 30"; + $answerOption->value = "Option 3 for Question 30"; + $answerOption->question_number = 30; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + + // Option 1 for Question 300 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Option 1 for Question 300"; + $answerOption->value = "Option 1 for Question 300"; + $answerOption->question_number = 300; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 2 for Question 300 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Option 2 for Question 300"; + $answerOption->value = "Option 2 for Question 300"; + $answerOption->question_number = 300; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 3 for Question 300 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Option 3 for Question 300"; + $answerOption->value = "Option 3 for Question 300"; + $answerOption->question_number = 300; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 1 for Question 600 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = '
Lorem ipsum dolor sit amet. Est corporis voluptas et repudiandae libero Aut quis! Est aperiam voluptatum eum quidem rerumnam deserunt sit internos possimus non dolore voluptate. Vel explicabo aliquam Sit sunt ut maxime voluptatibus non vero libero ad ratione dolore.
Et adipisci illo et laborum internos Nam aperiam est ipsa nisi non quia architecto ut itaque autem. Eos maiores sunt Et voluptas aut expedita quidem aut odio repellendus eum neque voluptate et iusto nisi vel consequatur quos. Sit doloribus omnis in minima illoQui soluta est omnis quasi vel officia reiciendis qui aliquid quis! Sed odit esse aut sint laborumEa internos et magni amet sed dolores omnis hic totam temporibus ut quia numquam.
Aut quos libero Et explicabo qui enim libero id rerum ipsa. Est quod tempora est soluta enimaut quasi aut eligendi fugit et fugit Quis.
+ '; + $answerOption->value = "Answer"; + $answerOption->question_number = 600; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + + // Set 2 + // Option 1 for Question 10 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Yes"; + $answerOption->value = "Yes"; + $answerOption->question_number = 10; + $answerOption->questionnaire_set_id = 3; + $answerOption->save(); + + // Option 2 for Question 10 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "No"; + $answerOption->value = "No"; + $answerOption->question_number = 10; + $answerOption->questionnaire_set_id = 3; + $answerOption->save(); + } +} diff --git a/database/seeders/QAAnswerOptionsSeeder.php b/database/seeders/QAAnswerOptionsSeeder.php new file mode 100644 index 00000000..da9ec8a1 --- /dev/null +++ b/database/seeders/QAAnswerOptionsSeeder.php @@ -0,0 +1,356 @@ +display_text = "1 (Very Dissatisfied)"; + $answerOption->value = "1"; + $answerOption->question_number = 10; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 2 for Question 10 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "2 (Dissatisfied)"; + $answerOption->value = "2"; + $answerOption->question_number = 10; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 3 for Question 10 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "3 (Neutral)"; + $answerOption->value = "3"; + $answerOption->question_number = 10; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 4 for Question 10 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "4 (Satisfied)"; + $answerOption->value = "4"; + $answerOption->question_number = 10; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 5 for Question 10 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "5 (Very Satisfied)"; + $answerOption->value = "5"; + $answerOption->question_number = 10; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + + + // Set 1 + // Option 1 for Question 20 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Yes"; + $answerOption->value = "Yes"; + $answerOption->question_number = 20; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 2 for Question 20 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Partially"; + $answerOption->value = "Partially"; + $answerOption->question_number = 20; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 3 for Question 20 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "No"; + $answerOption->value = "No"; + $answerOption->question_number = 20; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + + + // Set 1 + // Option 1 for Question 30 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Very Clear"; + $answerOption->value = "Very Clear"; + $answerOption->question_number = 30; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 2 for Question 30 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Clear"; + $answerOption->value = "Clear"; + $answerOption->question_number = 30; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 3 for Question 30 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Neutral"; + $answerOption->value = "Neutral"; + $answerOption->question_number = 30; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 4 for Question 30 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Unclear"; + $answerOption->value = "Unclear"; + $answerOption->question_number = 30; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + // Option 5 for Question 30 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Very Unclear"; + $answerOption->value = "Very Unclear"; + $answerOption->question_number = 30; + $answerOption->questionnaire_set_id = 1; + $answerOption->save(); + + + + + + // Set 2 + // Option 1 for Question 10 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Yes"; + $answerOption->value = "Yes"; + $answerOption->question_number = 10; + $answerOption->questionnaire_set_id = 2; + $answerOption->save(); + + // Option 2 for Question 10 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Somewhat"; + $answerOption->value = "Somewhat"; + $answerOption->question_number = 10; + $answerOption->questionnaire_set_id = 2; + $answerOption->save(); + + // Option 3 for Question 10 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "No"; + $answerOption->value = "No"; + $answerOption->question_number = 10; + $answerOption->questionnaire_set_id = 2; + $answerOption->save(); + + + + // Set 2 + // Option 1 for Question 20 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Exceeded Expectations"; + $answerOption->value = "Exceeded Expectations"; + $answerOption->question_number = 20; + $answerOption->questionnaire_set_id = 2; + $answerOption->save(); + + // Option 2 for Question 20 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Met Expectations"; + $answerOption->value = "Met Expectations"; + $answerOption->question_number = 20; + $answerOption->questionnaire_set_id = 2; + $answerOption->save(); + + // Option 3 for Question 20 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Below Expectations"; + $answerOption->value = "Below Expectations"; + $answerOption->question_number = 20; + $answerOption->questionnaire_set_id = 2; + $answerOption->save(); + + + + // Set 2 + // Option 1 for Question 30 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "1 (Very Dissatisfied)"; + $answerOption->value = "1"; + $answerOption->question_number = 30; + $answerOption->questionnaire_set_id = 2; + $answerOption->save(); + + // Option 2 for Question 30 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "2 (Dissatisfied)"; + $answerOption->value = "2"; + $answerOption->question_number = 30; + $answerOption->questionnaire_set_id = 2; + $answerOption->save(); + + // Option 3 for Question 30 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "3 (Neutral)"; + $answerOption->value = "3"; + $answerOption->question_number = 30; + $answerOption->questionnaire_set_id = 2; + $answerOption->save(); + + // Option 4 for Question 30 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "4 (Satisfied)"; + $answerOption->value = "4"; + $answerOption->question_number = 30; + $answerOption->questionnaire_set_id = 2; + $answerOption->save(); + + // Option 5 for Question 30 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "5 (Very Satisfied)"; + $answerOption->value = "5"; + $answerOption->question_number = 30; + $answerOption->questionnaire_set_id = 2; + $answerOption->save(); + + + + + + // Set 3 + // Option 1 for Question 10 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Immediately"; + $answerOption->value = "Immediately"; + $answerOption->question_number = 10; + $answerOption->questionnaire_set_id = 3; + $answerOption->save(); + + // Option 2 for Question 10 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Within a few hours"; + $answerOption->value = "Within a few hours"; + $answerOption->question_number = 10; + $answerOption->questionnaire_set_id = 3; + $answerOption->save(); + + // Option 3 for Question 10 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Within a day"; + $answerOption->value = "Within a day"; + $answerOption->question_number = 10; + $answerOption->questionnaire_set_id = 3; + $answerOption->save(); + + // Option 4 for Question 10 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "More than a day"; + $answerOption->value = "More than a day"; + $answerOption->question_number = 10; + $answerOption->questionnaire_set_id = 3; + $answerOption->save(); + + // Option 5 for Question 10 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Never received a response"; + $answerOption->value = "Never received a response"; + $answerOption->question_number = 10; + $answerOption->questionnaire_set_id = 3; + $answerOption->save(); + + + + // Set 3 + // Option 1 for Question 20 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Very Clear"; + $answerOption->value = "Very Clear"; + $answerOption->question_number = 20; + $answerOption->questionnaire_set_id = 3; + $answerOption->save(); + + // Option 2 for Question 20 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Clear"; + $answerOption->value = "Clear"; + $answerOption->question_number = 20; + $answerOption->questionnaire_set_id = 3; + $answerOption->save(); + + // Option 3 for Question 20 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Neutral"; + $answerOption->value = "Neutral"; + $answerOption->question_number = 20; + $answerOption->questionnaire_set_id = 3; + $answerOption->save(); + + // Option 4 for Question 20 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Unclear"; + $answerOption->value = "Unclear"; + $answerOption->question_number = 20; + $answerOption->questionnaire_set_id = 3; + $answerOption->save(); + + // Option 5 for Question 20 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Very Unclear"; + $answerOption->value = "Very Unclear"; + $answerOption->question_number = 20; + $answerOption->questionnaire_set_id = 3; + $answerOption->save(); + + + + // Set 3 + // Option 1 for Question 30 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Very Likely"; + $answerOption->value = "Very Likely"; + $answerOption->question_number = 30; + $answerOption->questionnaire_set_id = 3; + $answerOption->save(); + + // Option 2 for Question 30 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Likely"; + $answerOption->value = "Likely"; + $answerOption->question_number = 30; + $answerOption->questionnaire_set_id = 3; + $answerOption->save(); + + // Option 3 for Question 30 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Neutral"; + $answerOption->value = "Neutral"; + $answerOption->question_number = 30; + $answerOption->questionnaire_set_id = 3; + $answerOption->save(); + + // Option 4 for Question 30 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Unlikely"; + $answerOption->value = "Unlikely"; + $answerOption->question_number = 30; + $answerOption->questionnaire_set_id = 3; + $answerOption->save(); + + // Option 5 for Question 30 + $answerOption = new QAAnswerOptions; + $answerOption->display_text = "Very Unlikely"; + $answerOption->value = "Very Unlikely"; + $answerOption->question_number = 30; + $answerOption->questionnaire_set_id = 3; + $answerOption->save(); + + + + } +} diff --git a/database/seeders/QAQuestionsDemoSeeder.php b/database/seeders/QAQuestionsDemoSeeder.php new file mode 100644 index 00000000..bdcdd298 --- /dev/null +++ b/database/seeders/QAQuestionsDemoSeeder.php @@ -0,0 +1,247 @@ + 'Set 1', + 'description' => 'This is set 1 questions', + ], + [ + 'name' => 'Set 2', + 'description' => 'Customer Service Satisfaction Questions', + ], + [ + 'name' => 'Set 3', + 'description' => 'Survey Before conservation with BD ends', + ], + [ + 'name' => 'Set 4', + 'description' => 'After First Order', + ], + ]; + + foreach ($questionnaireSets as $set) { + $questionnaireSet = QAQuestionnaireSet::create([ + 'name' => $set['name'], + 'description' => $set['description'], + ]); + + $questions = []; + + switch ($set['name']) { + case 'Set 1': + $questions = [ + [ + 'question_number' => 10, + 'question_text' => 'Please select one', + 'question_type' => QAType::MULTIPLE_CHOICES, + 'is_start' => true, + 'is_end' => false, + ], + [ + 'question_number' => 20, + 'question_text' => 'Question text for question number 20?', + 'question_type' => QAType::MULTIPLE_CHOICES, + 'is_start' => false, + 'is_end' => false, + ], + [ + 'question_number' => 30, + 'question_text' => 'Question text for question number 30?', + 'question_type' => QAType::MULTIPLE_CHOICES, + 'next_nested_question' => 300, + 'is_start' => false, + 'is_end' => false, + ], + [ + 'question_number' => 40, + 'question_text' => 'What is your name?', + 'question_type' => QAType::FREE_TEXT, + 'is_start' => false, + 'is_end' => false, + ], + [ + 'question_number' => 50, + 'question_text' => 'The End', + 'question_type' => QAType::ANSWER, + 'is_start' => false, + 'is_end' => true, + ], + [ + 'question_number' => 60, + 'question_text' => 'We have received your request and will response as soon as possible.', + 'question_type' => QAType::TICKET_CRM, + 'is_start' => false, + 'is_end' => true, + ], + [ + 'question_number' => 100, + 'question_text' => 'Question text for question number 100?', + 'question_type' => QAType::MULTIPLE_CHOICES, + 'next_nested_question' => 110, //200 //3 digits - first level + 'next_main_question' => 20, + 'is_start' => false, + 'is_end' => false, + ], + [ + 'question_number' => 110, + 'question_text' => 'Question text for question number 110?', + 'question_type' => QAType::FREE_TEXT, + 'next_nested_question' => 1000, //1000 //4 digits - second level + 'next_main_question' => 20, + 'is_start' => false, + 'is_end' => false, + ], + [ + 'question_number' => 300, + 'question_text' => 'Question text for question number 300?', + 'question_type' => QAType::MULTIPLE_CHOICES, + 'next_main_question' => 40, + 'is_start' => false, + 'is_end' => false, + ], + [ + 'question_number' => 600, + 'question_text' => 'Shipping Fee Calculations', + 'question_type' => QAType::ANSWER, + 'is_start' => false, + 'is_end' => true, + ], + [ + 'question_number' => 700, + 'question_text' => 'Please enter your measurements', + 'question_type' => QAType::FREE_TEXT, + 'next_nested_question' => 710, + 'next_main_question' => 20, + 'is_start' => false, + 'is_end' => false, + ], + [ + 'question_number' => 710, + 'question_text' => 'Please upload the photo proof', + 'question_type' => QAType::DOCUMENT_UPLOAD, + 'next_main_question' => 60, + 'is_start' => false, + 'is_end' => false, + ], + [ + 'question_number' => 800, + 'question_text' => 'What is your name?', + 'question_type' => QAType::FREE_TEXT, + 'next_nested_question' => 810, + 'is_start' => false, + 'is_end' => false, + ], + [ + 'question_number' => 810, + 'question_text' => 'Click Next to speak to our customer service', + 'question_type' => QAType::FREE_TEXT, + 'is_start' => false, + 'is_end' => true, + 'end_text' => 'We have received your request and will response as soon as possible.', + ], + [ + 'question_number' => 1000, + 'question_text' => 'Question text for question number 1000?', + 'question_type' => QAType::FREE_TEXT, + 'next_nested_question' => 10000, //10000 - 5 digits - 3rd level + 'next_main_question' => 20, + 'is_start' => false, + 'is_end' => false, + ], + [ + 'question_number' => 10000, + 'question_text' => 'Question text for question number 10000?', + 'question_type' => QAType::FREE_TEXT, + 'next_main_question' => 20, + 'is_start' => false, + 'is_end' => false, + ], + + ]; + break; + case 'Set 2': + $questions = [ + [ + 'question_number' => 10, + 'question_text' => 'How helpful is our agent towards resolving your issue?', + 'question_type' => QAType::RATING_5_STARS, + 'is_start' => true, + 'is_end' => false, + ], + [ + 'question_number' => 20, + 'question_text' => 'How would you rate our customer service experience?', + 'question_type' => QAType::RATING_5_STARS, + 'is_start' => false, + 'is_end' => true, + ] + ]; + break; + case 'Set 3': + $questions = [ + [ + 'question_number' => 10, + 'question_text' => 'Is our service suite for you?', + 'question_type' => QAType::MULTIPLE_CHOICES, + 'is_start' => true, + 'is_end' => false, + ], + [ + 'question_number' => 20, + 'question_text' => 'Can you rate our sales agent performance whether you comfortable when chatting with them', + 'question_type' => QAType::RATING_5_STARS, + 'is_start' => false, + 'is_end' => true, + ] + ]; + break; + case 'Set 4': + $questions = [ + [ + 'question_number' => 10, + 'question_text' => 'How satisfy you are after your first order?', + 'question_type' => QAType::RATING_5_STARS, + 'is_start' => true, + 'is_end' => false, + ] + ]; + break; + } + + foreach ($questions as $key => $questionData) { + $question = new QAQuestions; + $question->question_number = $questionData['question_number']; + $question->question_text = $questionData['question_text']; + $question->question_type = $questionData['question_type']; + $question->questionnaire_set_id = $questionnaireSet->id; + + if (isset($questionData['next_nested_question'])) { + $question->next_nested_question = $questionData['next_nested_question']; + } + if (isset($questionData['next_main_question'])) { + $question->next_main_question = $questionData['next_main_question']; + } + + $question->is_start = $questionData['is_start']; + $question->is_end = $questionData['is_end']; + if (isset($questionData['end_text'])) { + $question->end_text = $questionData['end_text']; + } + + $question->order = $key + 1; + $question->save(); + } + } + } +} diff --git a/database/seeders/QAQuestionsSeeder.php b/database/seeders/QAQuestionsSeeder.php new file mode 100644 index 00000000..50ed86e5 --- /dev/null +++ b/database/seeders/QAQuestionsSeeder.php @@ -0,0 +1,144 @@ + 'Set 1', + 'description' => 'Customer Support Satisfaction Survey', + 'group' => 'feedback' + ], + [ + 'name' => 'Set 2', + 'description' => 'First Order Experience Feedback', + 'group' => 'feedback' + ], + [ + 'name' => 'Set 3', + 'description' => 'Sales Inquiry Experience', + 'group' => 'feedback' + ], + ]; + + foreach ($questionnaireSets as $set) { + $questionnaireSet = QAQuestionnaireSet::create([ + 'name' => $set['name'], + 'description' => $set['description'], + 'group' => $set['group'], + ]); + + $questions = []; + + switch ($set['name']) { + case 'Set 1': + $questions = [ + [ + 'question_number' => 10, + 'question_text' => 'On a scale of 1 to 5, how satisfied are you with the time it took to receive a response?', + 'question_type' => QAType::MULTIPLE_CHOICES, + 'is_start' => true, + 'is_end' => false, + ], + [ + 'question_number' => 20, + 'question_text' => 'Was your issue resolved during this interaction?', + 'question_type' => QAType::MULTIPLE_CHOICES, + 'is_start' => false, + 'is_end' => false, + ], + [ + 'question_number' => 30, + 'question_text' => 'How clear and understandable was the communication from the support team?', + 'question_type' => QAType::MULTIPLE_CHOICES, + 'is_start' => false, + 'is_end' => true, + ] + ]; + break; + case 'Set 2': + $questions = [ + [ + 'question_number' => 10, + 'question_text' => 'Did you find what you were looking for without any issues?', + 'question_type' => QAType::MULTIPLE_CHOICES, + 'is_start' => true, + 'is_end' => false, + ], + [ + 'question_number' => 20, + 'question_text' => 'Did the service meet your expectations?', + 'question_type' => QAType::MULTIPLE_CHOICES, + 'is_start' => false, + 'is_end' => false, + ], + [ + 'question_number' => 30, + 'question_text' => 'On a scale of 1 to 5, how satisfied are you with the delivery time?', + 'question_type' => QAType::MULTIPLE_CHOICES, + 'is_start' => false, + 'is_end' => true, + ] + ]; + break; + case 'Set 3': + $questions = [ + [ + 'question_number' => 10, + 'question_text' => 'How quickly did our sales team respond to your inquiry?', + 'question_type' => QAType::MULTIPLE_CHOICES, + 'is_start' => true, + 'is_end' => false, + ], + [ + 'question_number' => 20, + 'question_text' => 'Was the information provided by our sales team clear and easy to understand?', + 'question_type' => QAType::MULTIPLE_CHOICES, + 'is_start' => false, + 'is_end' => false, + ], + [ + 'question_number' => 30, + 'question_text' => 'After interacting with our sales team, how likely are you to use our service?', + 'question_type' => QAType::MULTIPLE_CHOICES, + 'is_start' => false, + 'is_end' => true, + ] + ]; + break; + } + + foreach ($questions as $key => $questionData) { + $question = new QAQuestions; + $question->question_number = $questionData['question_number']; + $question->question_text = $questionData['question_text']; + $question->question_type = $questionData['question_type']; + $question->questionnaire_set_id = $questionnaireSet->id; + + if (isset($questionData['next_nested_question'])) { + $question->next_nested_question = $questionData['next_nested_question']; + } + if (isset($questionData['next_main_question'])) { + $question->next_main_question = $questionData['next_main_question']; + } + + $question->is_start = $questionData['is_start']; + $question->is_end = $questionData['is_end']; + if (isset($questionData['end_text'])) { + $question->end_text = $questionData['end_text']; + } + + $question->order = $key + 1; + $question->save(); + } + } + } +} diff --git a/resources/assets/vue/components/feedback/elements/QuestionAnswerComponent.vue b/resources/assets/vue/components/feedback/elements/QuestionAnswerComponent.vue new file mode 100644 index 00000000..1ad87455 --- /dev/null +++ b/resources/assets/vue/components/feedback/elements/QuestionAnswerComponent.vue @@ -0,0 +1,17 @@ + +{{ item.question_text }}
Your rating: {{ single_answer.answer }} stars
+
+
+ |
+
+
+
+ CIEF WORLDWIDE SDN BHD
+
+
+ (1134596-M) + No. 72-3, Jalan Jalil 1, + The Earth Bukit Jalil, + 57000 Kuala Lumpur + Tel: 03-8082 1252 + |
+
+
+
+ Packing List Measurements
+
+
+
+ Date: {{ $invoice_transaction->created_at }}
+ |
+
| No | +Description | +Measurement | +CBM | +Quantity | +Total CBM | +
|---|---|---|---|---|---|
| {{ $key + 1 }} | +{!! $package->description !!} | ++ {!! $measurement !!} + | ++ {{ round($itemCBM, 5) }} + | +{{ $package->quantity }} | ++ {{ round($itemTotalCBM, 5) }} + | +
| + | Total | ++ {{ $totalQty }} + | ++ {{ round($totalCBM, 5) }} + | +||
| '.$companyMarking.' | '; + echo ''.$wallet->amount.' | '; + echo '