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'),