From a25073f06fa8bbd540e8d812159aa1095448f380 Mon Sep 17 00:00:00 2001 From: hazim Date: Tue, 19 Mar 2019 10:22:04 +0800 Subject: [PATCH] Account - active & invite user --- .../Services/DeletesUserInvitation.php | 39 +++++++++++ .../Accounts/Services/ListsUserInvitation.php | 40 +++++++++++ .../Accounts/DeleteUserInvitationLogic.php | 34 ++++++++++ .../Accounts/ListUserInvitationLogic.php | 33 +++++++++ .../Account/DeleteInviteUserController.php | 21 ++++++ .../Account/ListInviteUserController.php | 21 ++++++ app/Http/Resources/UserInvitation.php | 18 +++++ database/factories/UserInvitationFactory.php | 13 ++++ database/seeds/UserInvitationsTableSeeder.php | 16 +++++ .../elements/AccountInviteComponent.vue | 67 +++++++++++++++++++ .../forms/InviteAccountFormComponent.vue | 7 +- .../lists/AccountsInviteListComponent.vue | 51 ++++++++++++++ .../vue/components/common/ModalComponent.vue | 10 +++ .../views/pages/accounts/index.blade.php | 3 +- 14 files changed, 367 insertions(+), 6 deletions(-) create mode 100644 app/Classes/Modules/Accounts/Services/DeletesUserInvitation.php create mode 100644 app/Classes/Modules/Accounts/Services/ListsUserInvitation.php create mode 100644 app/Classes/Modules/ControllersLogic/Accounts/DeleteUserInvitationLogic.php create mode 100644 app/Classes/Modules/ControllersLogic/Accounts/ListUserInvitationLogic.php create mode 100644 app/Http/Controllers/Account/DeleteInviteUserController.php create mode 100644 app/Http/Controllers/Account/ListInviteUserController.php create mode 100644 app/Http/Resources/UserInvitation.php create mode 100644 database/factories/UserInvitationFactory.php create mode 100644 database/seeds/UserInvitationsTableSeeder.php create mode 100644 resources/assets/vue/components/account/elements/AccountInviteComponent.vue create mode 100644 resources/assets/vue/components/account/lists/AccountsInviteListComponent.vue diff --git a/app/Classes/Modules/Accounts/Services/DeletesUserInvitation.php b/app/Classes/Modules/Accounts/Services/DeletesUserInvitation.php new file mode 100644 index 0000000..264b9f3 --- /dev/null +++ b/app/Classes/Modules/Accounts/Services/DeletesUserInvitation.php @@ -0,0 +1,39 @@ +repository = $repository; + } + + + public function execute(int $id ){ + + $userInvitation = $this->repository->findOrFail($id); + + $userInvitation -> delete(); + + + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Accounts/Services/ListsUserInvitation.php b/app/Classes/Modules/Accounts/Services/ListsUserInvitation.php new file mode 100644 index 0000000..04ca137 --- /dev/null +++ b/app/Classes/Modules/Accounts/Services/ListsUserInvitation.php @@ -0,0 +1,40 @@ +repository = $repository; + } + + + public function execute(){ + + $userInvitation = $this->repository->where('is_complete', 0)->paginate(10); + + return UserInvitationResources::collection($userInvitation); + + + + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/ControllersLogic/Accounts/DeleteUserInvitationLogic.php b/app/Classes/Modules/ControllersLogic/Accounts/DeleteUserInvitationLogic.php new file mode 100644 index 0000000..14623f9 --- /dev/null +++ b/app/Classes/Modules/ControllersLogic/Accounts/DeleteUserInvitationLogic.php @@ -0,0 +1,34 @@ +DeletesUserInvitation = $DeletesUserInvitation; + } + + public function execute(int $id){ + + return $this->DeletesUserInvitation->execute($id); + + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/ControllersLogic/Accounts/ListUserInvitationLogic.php b/app/Classes/Modules/ControllersLogic/Accounts/ListUserInvitationLogic.php new file mode 100644 index 0000000..2e15b0c --- /dev/null +++ b/app/Classes/Modules/ControllersLogic/Accounts/ListUserInvitationLogic.php @@ -0,0 +1,33 @@ +ListsUserInvitation = $ListsUserInvitation; + } + + public function execute(){ + return $this->ListsUserInvitation->execute(); + } + + +} \ No newline at end of file diff --git a/app/Http/Controllers/Account/DeleteInviteUserController.php b/app/Http/Controllers/Account/DeleteInviteUserController.php new file mode 100644 index 0000000..0514178 --- /dev/null +++ b/app/Http/Controllers/Account/DeleteInviteUserController.php @@ -0,0 +1,21 @@ +execute($id); + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Account/ListInviteUserController.php b/app/Http/Controllers/Account/ListInviteUserController.php new file mode 100644 index 0000000..797385f --- /dev/null +++ b/app/Http/Controllers/Account/ListInviteUserController.php @@ -0,0 +1,21 @@ +execute(); + } + +} \ No newline at end of file diff --git a/app/Http/Resources/UserInvitation.php b/app/Http/Resources/UserInvitation.php new file mode 100644 index 0000000..2b50789 --- /dev/null +++ b/app/Http/Resources/UserInvitation.php @@ -0,0 +1,18 @@ + $this->id, + 'email' => $this->email, + 'created_at' =>Carbon::parse($this->created_at)->format('d/m/Y') + ]; + } + +} \ No newline at end of file diff --git a/database/factories/UserInvitationFactory.php b/database/factories/UserInvitationFactory.php new file mode 100644 index 0000000..8de6e04 --- /dev/null +++ b/database/factories/UserInvitationFactory.php @@ -0,0 +1,13 @@ +define(\App\Models\UserInvitation::class, function (Faker $faker) { + return [ + 'email' => $faker->email, + 'hash' => $faker->randomNumber(), + 'role_id' => 1, + 'sender_id' => 1, + 'is_complete' => 0 + ]; +}); diff --git a/database/seeds/UserInvitationsTableSeeder.php b/database/seeds/UserInvitationsTableSeeder.php new file mode 100644 index 0000000..4a64fd0 --- /dev/null +++ b/database/seeds/UserInvitationsTableSeeder.php @@ -0,0 +1,16 @@ +create(); + } +} diff --git a/resources/assets/vue/components/account/elements/AccountInviteComponent.vue b/resources/assets/vue/components/account/elements/AccountInviteComponent.vue new file mode 100644 index 0000000..032789f --- /dev/null +++ b/resources/assets/vue/components/account/elements/AccountInviteComponent.vue @@ -0,0 +1,67 @@ + + diff --git a/resources/assets/vue/components/account/forms/InviteAccountFormComponent.vue b/resources/assets/vue/components/account/forms/InviteAccountFormComponent.vue index a8fb4a2..f93b4ea 100644 --- a/resources/assets/vue/components/account/forms/InviteAccountFormComponent.vue +++ b/resources/assets/vue/components/account/forms/InviteAccountFormComponent.vue @@ -55,13 +55,12 @@ headers: { 'content-type': 'application/json' } - }).then((response) => { - this.clearForm(); + }).catch(error => console.log(error)); - //turn off loading animation + this.clearForm(); + Event.$emit('updateInviteList'); this.isLoading = false; - }) }, clearForm(){ this.invite.email = '' diff --git a/resources/assets/vue/components/account/lists/AccountsInviteListComponent.vue b/resources/assets/vue/components/account/lists/AccountsInviteListComponent.vue new file mode 100644 index 0000000..ab88974 --- /dev/null +++ b/resources/assets/vue/components/account/lists/AccountsInviteListComponent.vue @@ -0,0 +1,51 @@ + + + + diff --git a/resources/assets/vue/components/common/ModalComponent.vue b/resources/assets/vue/components/common/ModalComponent.vue index 4382f48..402aef9 100644 --- a/resources/assets/vue/components/common/ModalComponent.vue +++ b/resources/assets/vue/components/common/ModalComponent.vue @@ -26,6 +26,16 @@ type: String, default: "stick-up" } + }, + mounted() { + Event.$on('closeModal', () => { + this.closeModal(); + }); + }, + methods: { + closeModal() { + $(this.$el).find('.modal').modal('hide'); + } } } diff --git a/resources/views/pages/accounts/index.blade.php b/resources/views/pages/accounts/index.blade.php index 4324e07..92193fe 100644 --- a/resources/views/pages/accounts/index.blade.php +++ b/resources/views/pages/accounts/index.blade.php @@ -65,10 +65,9 @@
- +
-