From 4e56768c20d7b22f68017719805207c5e29976b5 Mon Sep 17 00:00:00 2001 From: Muammer Top Date: Mon, 14 Dec 2020 18:49:07 +0300 Subject: [PATCH] profile education form edit (half) --- ...odule.profile__create_education_stream.php | 46 +++++++++++++ ....profile__create_education_part_stream.php | 59 +++++++++++++++++ ...e__create_education_part_option_stream.php | 60 +++++++++++++++++ .../resources/config/permissions.php | 20 ++++++ .../resources/lang/en/button.php | 4 ++ .../resources/lang/en/permission.php | 32 +++++++++ .../resources/lang/en/section.php | 12 ++++ .../resources/lang/en/stream.php | 12 ++++ .../resources/views/profile/detail.twig | 66 +++++++++++-------- .../Education/Contract/EducationInterface.php | 8 +++ .../Contract/EducationRepositoryInterface.php | 8 +++ .../src/Education/EducationCollection.php | 8 +++ .../src/Education/EducationCriteria.php | 8 +++ .../src/Education/EducationModel.php | 9 +++ .../src/Education/EducationObserver.php | 8 +++ .../src/Education/EducationPresenter.php | 8 +++ .../src/Education/EducationRepository.php | 25 +++++++ .../src/Education/EducationRouter.php | 8 +++ .../src/Education/EducationSeeder.php | 15 +++++ .../Education/Form/EducationFormBuilder.php | 66 +++++++++++++++++++ .../Education/Table/EducationTableBuilder.php | 61 +++++++++++++++++ .../Contract/EducationPartInterface.php | 8 +++ .../EducationPartRepositoryInterface.php | 8 +++ .../EducationPart/EducationPartCollection.php | 8 +++ .../EducationPart/EducationPartCriteria.php | 8 +++ .../src/EducationPart/EducationPartModel.php | 9 +++ .../EducationPart/EducationPartObserver.php | 8 +++ .../EducationPart/EducationPartPresenter.php | 8 +++ .../EducationPart/EducationPartRepository.php | 25 +++++++ .../src/EducationPart/EducationPartRouter.php | 8 +++ .../src/EducationPart/EducationPartSeeder.php | 15 +++++ .../Form/EducationPartFormBuilder.php | 66 +++++++++++++++++++ .../Table/EducationPartTableBuilder.php | 61 +++++++++++++++++ .../Contract/EducationPartOptionInterface.php | 8 +++ ...EducationPartOptionRepositoryInterface.php | 8 +++ .../EducationPartOptionCollection.php | 8 +++ .../EducationPartOptionCriteria.php | 8 +++ .../EducationPartOptionModel.php | 9 +++ .../EducationPartOptionObserver.php | 8 +++ .../EducationPartOptionPresenter.php | 8 +++ .../EducationPartOptionRepository.php | 25 +++++++ .../EducationPartOptionRouter.php | 8 +++ .../EducationPartOptionSeeder.php | 15 +++++ .../Form/EducationPartOptionFormBuilder.php | 66 +++++++++++++++++++ .../Table/EducationPartOptionTableBuilder.php | 61 +++++++++++++++++ .../Http/Controller/MyProfileController.php | 16 +++++ .../src/OptionHandler/EducationOptions.php | 21 ++++++ .../Profile/Profile/ProfileFormBuilder.php | 9 ++- .../profile-module/src/ProfileModule.php | 15 +++++ .../src/ProfileModuleServiceProvider.php | 8 +++ .../src/Seed/UsersFieldsSeeder.php | 15 ----- 51 files changed, 1045 insertions(+), 46 deletions(-) create mode 100644 addons/default/visiosoft/profile-module/migrations/2020_12_14_160016_visiosoft.module.profile__create_education_stream.php create mode 100644 addons/default/visiosoft/profile-module/migrations/2020_12_14_160654_visiosoft.module.profile__create_education_part_stream.php create mode 100644 addons/default/visiosoft/profile-module/migrations/2020_12_14_161536_visiosoft.module.profile__create_education_part_option_stream.php create mode 100644 addons/default/visiosoft/profile-module/src/Education/Contract/EducationInterface.php create mode 100644 addons/default/visiosoft/profile-module/src/Education/Contract/EducationRepositoryInterface.php create mode 100644 addons/default/visiosoft/profile-module/src/Education/EducationCollection.php create mode 100644 addons/default/visiosoft/profile-module/src/Education/EducationCriteria.php create mode 100644 addons/default/visiosoft/profile-module/src/Education/EducationModel.php create mode 100644 addons/default/visiosoft/profile-module/src/Education/EducationObserver.php create mode 100644 addons/default/visiosoft/profile-module/src/Education/EducationPresenter.php create mode 100644 addons/default/visiosoft/profile-module/src/Education/EducationRepository.php create mode 100644 addons/default/visiosoft/profile-module/src/Education/EducationRouter.php create mode 100644 addons/default/visiosoft/profile-module/src/Education/EducationSeeder.php create mode 100644 addons/default/visiosoft/profile-module/src/Education/Form/EducationFormBuilder.php create mode 100644 addons/default/visiosoft/profile-module/src/Education/Table/EducationTableBuilder.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPart/Contract/EducationPartInterface.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPart/Contract/EducationPartRepositoryInterface.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPart/EducationPartCollection.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPart/EducationPartCriteria.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPart/EducationPartModel.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPart/EducationPartObserver.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPart/EducationPartPresenter.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPart/EducationPartRepository.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPart/EducationPartRouter.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPart/EducationPartSeeder.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPart/Form/EducationPartFormBuilder.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPart/Table/EducationPartTableBuilder.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPartOption/Contract/EducationPartOptionInterface.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPartOption/Contract/EducationPartOptionRepositoryInterface.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPartOption/EducationPartOptionCollection.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPartOption/EducationPartOptionCriteria.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPartOption/EducationPartOptionModel.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPartOption/EducationPartOptionObserver.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPartOption/EducationPartOptionPresenter.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPartOption/EducationPartOptionRepository.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPartOption/EducationPartOptionRouter.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPartOption/EducationPartOptionSeeder.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPartOption/Form/EducationPartOptionFormBuilder.php create mode 100644 addons/default/visiosoft/profile-module/src/EducationPartOption/Table/EducationPartOptionTableBuilder.php create mode 100644 addons/default/visiosoft/profile-module/src/OptionHandler/EducationOptions.php diff --git a/addons/default/visiosoft/profile-module/migrations/2020_12_14_160016_visiosoft.module.profile__create_education_stream.php b/addons/default/visiosoft/profile-module/migrations/2020_12_14_160016_visiosoft.module.profile__create_education_stream.php new file mode 100644 index 000000000..8320e2da6 --- /dev/null +++ b/addons/default/visiosoft/profile-module/migrations/2020_12_14_160016_visiosoft.module.profile__create_education_stream.php @@ -0,0 +1,46 @@ + 'education', + 'title_column' => 'name', + 'translatable' => true, + 'versionable' => false, + 'trashable' => false, + 'searchable' => false, + 'sortable' => false, + ]; + + /** + * The stream assignments. + * + * @var array + */ + protected $assignments = [ + 'name' => [ + 'translatable' => true, + 'required' => true, + ], + 'slug' => [ + 'unique' => true, + 'required' => true, + ], + ]; +} diff --git a/addons/default/visiosoft/profile-module/migrations/2020_12_14_160654_visiosoft.module.profile__create_education_part_stream.php b/addons/default/visiosoft/profile-module/migrations/2020_12_14_160654_visiosoft.module.profile__create_education_part_stream.php new file mode 100644 index 000000000..3ad4d9d96 --- /dev/null +++ b/addons/default/visiosoft/profile-module/migrations/2020_12_14_160654_visiosoft.module.profile__create_education_part_stream.php @@ -0,0 +1,59 @@ + 'education_part', + 'title_column' => 'name', + 'translatable' => true, + 'versionable' => false, + 'trashable' => false, + 'searchable' => false, + 'sortable' => false, + ]; + + /** + * The stream assignments. + * + * @var array + */ + protected $assignments = [ + 'education' => [ + 'required' => true, + ], + 'name' => [ + 'translatable' => true, + 'required' => true, + ], + 'slug' => [ + 'unique' => true, + 'required' => true, + ], + ]; + + protected $fields = [ + 'education' => [ + 'type' => 'anomaly.field_type.relationship', + 'config' => [ + 'related' => EducationModel::class, + ] + ] + ]; +} diff --git a/addons/default/visiosoft/profile-module/migrations/2020_12_14_161536_visiosoft.module.profile__create_education_part_option_stream.php b/addons/default/visiosoft/profile-module/migrations/2020_12_14_161536_visiosoft.module.profile__create_education_part_option_stream.php new file mode 100644 index 000000000..a6d14710e --- /dev/null +++ b/addons/default/visiosoft/profile-module/migrations/2020_12_14_161536_visiosoft.module.profile__create_education_part_option_stream.php @@ -0,0 +1,60 @@ + 'education_part_option', + 'title_column' => 'name', + 'translatable' => true, + 'versionable' => false, + 'trashable' => false, + 'searchable' => false, + 'sortable' => false, + ]; + + /** + * The stream assignments. + * + * @var array + */ + protected $assignments = [ + 'education_part' => [ + 'required' => true, + ], + 'name' => [ + 'translatable' => true, + 'required' => true, + ], + 'slug' => [ + 'unique' => true, + 'required' => true, + ], + ]; + + protected $fields = [ + 'education_part' => [ + 'type' => 'anomaly.field_type.relationship', + 'config' => [ + 'related' => EducationPartModel::class, + ] + ] + ]; + +} diff --git a/addons/default/visiosoft/profile-module/resources/config/permissions.php b/addons/default/visiosoft/profile-module/resources/config/permissions.php index af2857e38..e4abd05b1 100644 --- a/addons/default/visiosoft/profile-module/resources/config/permissions.php +++ b/addons/default/visiosoft/profile-module/resources/config/permissions.php @@ -6,4 +6,24 @@ return [ 'write', 'delete', ], + 'education' => [ + 'read', + 'write', + 'delete', + ], + 'education' => [ + 'read', + 'write', + 'delete', + ], + 'education_part' => [ + 'read', + 'write', + 'delete', + ], + 'education_part_option' => [ + 'read', + 'write', + 'delete', + ], ]; diff --git a/addons/default/visiosoft/profile-module/resources/lang/en/button.php b/addons/default/visiosoft/profile-module/resources/lang/en/button.php index 11c564faa..a8af9e732 100644 --- a/addons/default/visiosoft/profile-module/resources/lang/en/button.php +++ b/addons/default/visiosoft/profile-module/resources/lang/en/button.php @@ -15,4 +15,8 @@ return [ 'personal' => 'Personal', 'corporate' => 'Corporate', 'export' => 'Export', + 'new_education' => 'New Education', + 'new_education' => 'New Education', + 'new_education_part' => 'New Education part', + 'new_education_part_option' => 'New Education part option', ]; diff --git a/addons/default/visiosoft/profile-module/resources/lang/en/permission.php b/addons/default/visiosoft/profile-module/resources/lang/en/permission.php index b9351ead9..c7ddc6128 100644 --- a/addons/default/visiosoft/profile-module/resources/lang/en/permission.php +++ b/addons/default/visiosoft/profile-module/resources/lang/en/permission.php @@ -17,4 +17,36 @@ return [ 'delete' => 'Can delete adress?', ], ], + 'education' => [ + 'name' => 'Education', + 'option' => [ + 'read' => 'Can read education?', + 'write' => 'Can create/edit education?', + 'delete' => 'Can delete education?', + ], + ], + 'education' => [ + 'name' => 'Education', + 'option' => [ + 'read' => 'Can read education?', + 'write' => 'Can create/edit education?', + 'delete' => 'Can delete education?', + ], + ], + 'education_part' => [ + 'name' => 'Education part', + 'option' => [ + 'read' => 'Can read education part?', + 'write' => 'Can create/edit education part?', + 'delete' => 'Can delete education part?', + ], + ], + 'education_part_option' => [ + 'name' => 'Education part option', + 'option' => [ + 'read' => 'Can read education part option?', + 'write' => 'Can create/edit education part option?', + 'delete' => 'Can delete education part option?', + ], + ], ]; diff --git a/addons/default/visiosoft/profile-module/resources/lang/en/section.php b/addons/default/visiosoft/profile-module/resources/lang/en/section.php index 33c358b85..b6df27826 100644 --- a/addons/default/visiosoft/profile-module/resources/lang/en/section.php +++ b/addons/default/visiosoft/profile-module/resources/lang/en/section.php @@ -9,4 +9,16 @@ return [ ], 'general_setting' => 'General Settings', 'recaptcha' => 'reCAPTCHA', + 'education' => [ + 'title' => 'Education', + ], + 'education' => [ + 'title' => 'Education', + ], + 'education_part' => [ + 'title' => 'Education part', + ], + 'education_part_option' => [ + 'title' => 'Education part option', + ], ]; diff --git a/addons/default/visiosoft/profile-module/resources/lang/en/stream.php b/addons/default/visiosoft/profile-module/resources/lang/en/stream.php index 80f666dd3..30aa34db7 100644 --- a/addons/default/visiosoft/profile-module/resources/lang/en/stream.php +++ b/addons/default/visiosoft/profile-module/resources/lang/en/stream.php @@ -7,4 +7,16 @@ return [ 'adress' => [ 'name' => 'Address', ], + 'education' => [ + 'name' => 'Education', + ], + 'education' => [ + 'name' => 'Education', + ], + 'education_part' => [ + 'name' => 'Education part', + ], + 'education_part_option' => [ + 'name' => 'Education part option', + ], ]; diff --git a/addons/default/visiosoft/profile-module/resources/views/profile/detail.twig b/addons/default/visiosoft/profile-module/resources/views/profile/detail.twig index 8b733d248..d0f656ba1 100644 --- a/addons/default/visiosoft/profile-module/resources/views/profile/detail.twig +++ b/addons/default/visiosoft/profile-module/resources/views/profile/detail.twig @@ -171,40 +171,15 @@ - {{ profileForm.fields.education.value.input|raw }} - + {{ profileForm.fields.education.input|raw }}
-
+
- + {{ profileForm.fields.education_part.input|raw }}
@@ -283,5 +258,38 @@ {% endblock %} {% endembed %} + {{ asset_add("scripts.js", "visiosoft.module.profile::assets/js/profile.js") }} {% endblock %} \ No newline at end of file diff --git a/addons/default/visiosoft/profile-module/src/Education/Contract/EducationInterface.php b/addons/default/visiosoft/profile-module/src/Education/Contract/EducationInterface.php new file mode 100644 index 000000000..25cde7990 --- /dev/null +++ b/addons/default/visiosoft/profile-module/src/Education/Contract/EducationInterface.php @@ -0,0 +1,8 @@ +model = $model; + } +} diff --git a/addons/default/visiosoft/profile-module/src/Education/EducationRouter.php b/addons/default/visiosoft/profile-module/src/Education/EducationRouter.php new file mode 100644 index 000000000..ffc70a9fc --- /dev/null +++ b/addons/default/visiosoft/profile-module/src/Education/EducationRouter.php @@ -0,0 +1,8 @@ +model = $model; + } +} diff --git a/addons/default/visiosoft/profile-module/src/EducationPart/EducationPartRouter.php b/addons/default/visiosoft/profile-module/src/EducationPart/EducationPartRouter.php new file mode 100644 index 000000000..331061459 --- /dev/null +++ b/addons/default/visiosoft/profile-module/src/EducationPart/EducationPartRouter.php @@ -0,0 +1,8 @@ +model = $model; + } +} diff --git a/addons/default/visiosoft/profile-module/src/EducationPartOption/EducationPartOptionRouter.php b/addons/default/visiosoft/profile-module/src/EducationPartOption/EducationPartOptionRouter.php new file mode 100644 index 000000000..414126e89 --- /dev/null +++ b/addons/default/visiosoft/profile-module/src/EducationPartOption/EducationPartOptionRouter.php @@ -0,0 +1,8 @@ +json(['status' => 'success', 'data' => $profile]); } + public function getEducation(Request $request) + { + $user = $this->userRepository->find(auth()->user()->getAuthIdentifier()); + $education = EducationModel::all(); + $educationPart = EducationPartModel::all(); + return response()->json(['user' => $user, 'education' => $education, 'education-part' => $educationPart], 200); + } + + public function setEducation(Request $request) + { + $user = $this->userRepository->find(auth()->user()->getAuthIdentifier())->update(['education' => $request->education]); + $education_part = EducationPartModel::query()->where('education_id', $request->education)->get(); + return response()->json(['messages' => $user, 'data' => $education_part], 200); + } } diff --git a/addons/default/visiosoft/profile-module/src/OptionHandler/EducationOptions.php b/addons/default/visiosoft/profile-module/src/OptionHandler/EducationOptions.php new file mode 100644 index 000000000..7c8554979 --- /dev/null +++ b/addons/default/visiosoft/profile-module/src/OptionHandler/EducationOptions.php @@ -0,0 +1,21 @@ +educationRepository = $repository; + } + + public function handle(SelectFieldType $fieldType) + { + $educations = $this->educationRepository->all(); + $options = $educations->pluck('name', 'id')->all(); + $fieldType->setOptions($options); + } +} \ No newline at end of file diff --git a/addons/default/visiosoft/profile-module/src/Profile/Profile/ProfileFormBuilder.php b/addons/default/visiosoft/profile-module/src/Profile/Profile/ProfileFormBuilder.php index d93408d68..4f98e00aa 100644 --- a/addons/default/visiosoft/profile-module/src/Profile/Profile/ProfileFormBuilder.php +++ b/addons/default/visiosoft/profile-module/src/Profile/Profile/ProfileFormBuilder.php @@ -13,8 +13,13 @@ class ProfileFormBuilder extends FormBuilder 'office_phone', 'land_phone', 'identification_number', - 'education', - 'state_of_education', + 'education' => [ + 'type' => 'anomaly.field_type.select', + 'config' => [ + 'handler' => 'Visiosoft\ProfileModule\OptionHandler\EducationOptions@handle', + ] + ], + 'education_part' => 'anomaly.field_type.select', 'profession', 'birthday', 'register_type', diff --git a/addons/default/visiosoft/profile-module/src/ProfileModule.php b/addons/default/visiosoft/profile-module/src/ProfileModule.php index 69b94033e..81f00785b 100644 --- a/addons/default/visiosoft/profile-module/src/ProfileModule.php +++ b/addons/default/visiosoft/profile-module/src/ProfileModule.php @@ -30,6 +30,21 @@ class ProfileModule extends Module 'new_adress', ], ], + 'education' => [ + 'buttons' => [ + 'new_education', + ] + ], + 'education_part' => [ + 'buttons' => [ + 'new_education', + ] + ], + 'education_part_option' => [ + 'buttons' => [ + 'new_education', + ] + ] ]; } diff --git a/addons/default/visiosoft/profile-module/src/ProfileModuleServiceProvider.php b/addons/default/visiosoft/profile-module/src/ProfileModuleServiceProvider.php index bbedeac27..6d1817c5b 100644 --- a/addons/default/visiosoft/profile-module/src/ProfileModuleServiceProvider.php +++ b/addons/default/visiosoft/profile-module/src/ProfileModuleServiceProvider.php @@ -2,6 +2,7 @@ use Anomaly\Streams\Platform\Addon\AddonCollection; use Anomaly\Streams\Platform\Addon\AddonServiceProvider; +use Anomaly\Streams\Platform\Model\Profile\ProfileEducationEntryModel; use Maatwebsite\Excel\ExcelServiceProvider; use Maatwebsite\Excel\Facades\Excel; use Visiosoft\ProfileModule\Adress\Contract\AdressRepositoryInterface; @@ -10,6 +11,9 @@ use Anomaly\Streams\Platform\Model\Profile\ProfileAdressEntryModel; use Visiosoft\ProfileModule\Adress\AdressModel; use Visiosoft\ProfileModule\Adress\Form\AdressFormBuilder; use Visiosoft\ProfileModule\Adress\FormCompany\AddressCompanyFormBuilder; +use Visiosoft\ProfileModule\Education\Contract\EducationRepositoryInterface; +use Visiosoft\ProfileModule\Education\EducationModel; +use Visiosoft\ProfileModule\Education\EducationRepository; use Visiosoft\ProfileModule\Http\Middleware\authCheck; use Visiosoft\ProfileModule\Profile\Password\ForgotPassFormBuilder; use Visiosoft\ProfileModule\Profile\Password\PasswordFormBuilder; @@ -139,6 +143,8 @@ class ProfileModuleServiceProvider extends AddonServiceProvider // CacheController 'ajax/get-user-info' => 'Visiosoft\ProfileModule\Http\Controller\CacheController@getUserInfo', + 'ajax/setEducation' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@setEducation', + 'ajax/getEducation' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@getEducation', ]; /** @@ -201,6 +207,7 @@ class ProfileModuleServiceProvider extends AddonServiceProvider 'address' => AdressFormBuilder::class, 'addressCompany' => AddressCompanyFormBuilder::class, ProfileAdressEntryModel::class => AdressModel::class, + ProfileEducationEntryModel::class => EducationModel::class, ]; /** @@ -210,6 +217,7 @@ class ProfileModuleServiceProvider extends AddonServiceProvider */ protected $singletons = [ AdressRepositoryInterface::class => AdressRepository::class, + EducationRepositoryInterface::class => EducationRepository::class, 'register2' => Register2FormBuilder::class, 'sites' => SitesFormBuilder::class, 'forgot_pass' => ForgotPassFormBuilder::class, diff --git a/addons/default/visiosoft/profile-module/src/Seed/UsersFieldsSeeder.php b/addons/default/visiosoft/profile-module/src/Seed/UsersFieldsSeeder.php index cf4271066..1d0301bbc 100644 --- a/addons/default/visiosoft/profile-module/src/Seed/UsersFieldsSeeder.php +++ b/addons/default/visiosoft/profile-module/src/Seed/UsersFieldsSeeder.php @@ -123,21 +123,6 @@ class UsersFieldsSeeder extends Seeder "mode" => "date", "picker" => true, ] - ], - [ - 'name' => trans('visiosoft.module.profile::field.education.name'), - 'slug' => 'education', - 'type' => 'anomaly.field_type.text', - ], - [ - 'name' => trans('visiosoft.module.profile::field.state_of_education.name'), - 'slug' => 'state_of_education', - 'type' => 'anomaly.field_type.text', - ], - [ - 'name' => trans('visiosoft.module.profile::field.profession.name'), - 'slug' => 'profession', - 'type' => 'anomaly.field_type.text', ], [ 'name' => trans('visiosoft.module.profile::field.facebook_address.name'),