diff --git a/addons/default/visiosoft/advs-module/resources/js/currency_format.js b/addons/default/visiosoft/advs-module/resources/js/currency_format.js new file mode 100644 index 000000000..5a28e4909 --- /dev/null +++ b/addons/default/visiosoft/advs-module/resources/js/currency_format.js @@ -0,0 +1,8 @@ +$("input[data-type='currency']").on('blur', function() { + const value = this.value.replace(/,/g, ''); + this.value = parseFloat(value).toLocaleString('en-US', { + style: 'decimal', + maximumFractionDigits: 2, + minimumFractionDigits: 2 + }); +}); \ No newline at end of file diff --git a/addons/default/visiosoft/advs-module/resources/views/list/partials/price-filter.twig b/addons/default/visiosoft/advs-module/resources/views/list/partials/price-filter.twig index 66919ed56..b62dff2d0 100644 --- a/addons/default/visiosoft/advs-module/resources/views/list/partials/price-filter.twig +++ b/addons/default/visiosoft/advs-module/resources/views/list/partials/price-filter.twig @@ -19,12 +19,14 @@
@@ -41,4 +43,5 @@ + {{ asset_script('visiosoft.module.advs::js/currency_format.js') }} {% endif %} \ No newline at end of file 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/resources/assets/js/education.js b/addons/default/visiosoft/profile-module/resources/assets/js/education.js new file mode 100644 index 000000000..f54877dbb --- /dev/null +++ b/addons/default/visiosoft/profile-module/resources/assets/js/education.js @@ -0,0 +1,31 @@ +$(() => { + $.ajax({ + url: '/api/getEducation', + success: ((res)=>{ + $.each(res['education-part'], function (key, value) { + var selected = "" + if (res.user.education_part == value.id){ selected = 'selected'; } + $('#education_part').append('') + }) + }) + }) + + $('#education').on('change', () => { + $.ajax({ + url: '/api/changeEducation', + data: { + info: 'education', + education: $('#education').val() + },beforeSend: function (){ + $('#education_part').html(''); + },success: function (response) { + $('#education_part').html('') + $.each(response.data, function (key, value) { + $('#education_part').append( + '' + ) + }) + } + }); + }) +}) \ No newline at end of file diff --git a/addons/default/visiosoft/profile-module/resources/config/permissions.php b/addons/default/visiosoft/profile-module/resources/config/permissions.php index af2857e38..934599af3 100644 --- a/addons/default/visiosoft/profile-module/resources/config/permissions.php +++ b/addons/default/visiosoft/profile-module/resources/config/permissions.php @@ -6,4 +6,14 @@ return [ 'write', 'delete', ], + 'education' => [ + 'read', + 'write', + 'delete', + ], + 'education_part' => [ + '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..1d8634703 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,6 @@ return [ 'personal' => 'Personal', 'corporate' => 'Corporate', 'export' => 'Export', + 'new_education' => 'New Education', + 'new_education_part' => 'New Education part', ]; diff --git a/addons/default/visiosoft/profile-module/resources/lang/en/field.php b/addons/default/visiosoft/profile-module/resources/lang/en/field.php index 5ac8fe1d6..90e22a8eb 100644 --- a/addons/default/visiosoft/profile-module/resources/lang/en/field.php +++ b/addons/default/visiosoft/profile-module/resources/lang/en/field.php @@ -121,6 +121,9 @@ return [ 'user' => [ 'name' => 'User' ], + 'name' => [ + 'name' => 'Name' + ], /*Menu Button*/ 'profile' => [ @@ -476,4 +479,8 @@ return [ 'personal' => [ 'name' => 'Personal' ], + + 'education_part' => [ + 'name' => 'State of Education' + ], ]; 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..f4631292c 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,20 @@ return [ 'delete' => 'Can delete adress?', ], ], + '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?', + ], + ], ]; 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..6a5bce6b9 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,10 @@ return [ ], 'general_setting' => 'General Settings', 'recaptcha' => 'reCAPTCHA', + 'education' => [ + 'title' => 'Education', + ], + 'education_part' => [ + 'title' => 'Education part', + ], ]; 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..7f43711b2 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,10 @@ return [ 'adress' => [ 'name' => 'Address', ], + 'education' => [ + 'name' => 'Education', + ], + 'education_part' => [ + 'name' => 'Education part', + ], ]; 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..0d76779e4 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.setPlaceholder(trans('visiosoft.module.profile::field.choose_an_option')).input|raw }}
-
+
- + {{ profileForm.fields.education_part.setPlaceholder(trans('visiosoft.module.profile::field.choose_an_option')).input|raw }}
@@ -246,6 +221,7 @@
{{ profileForm.close()|raw }}
+ + {% endblock %} {% endembed %} + {{ asset_script("visiosoft.module.profile::assets/js/education.js") }} {{ 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 @@ +render(); + } + + /** + * Create a new entry. + * + * @param EducationFormBuilder $form + * @return \Symfony\Component\HttpFoundation\Response + */ + public function create(EducationFormBuilder $form) + { + return $form->render(); + } + + /** + * Edit an existing entry. + * + * @param EducationFormBuilder $form + * @param $id + * @return \Symfony\Component\HttpFoundation\Response + */ + public function edit(EducationFormBuilder $form, $id) + { + return $form->render($id); + } +} diff --git a/addons/default/visiosoft/profile-module/src/Http/Controller/Admin/EducationPartController.php b/addons/default/visiosoft/profile-module/src/Http/Controller/Admin/EducationPartController.php new file mode 100644 index 000000000..60f997a23 --- /dev/null +++ b/addons/default/visiosoft/profile-module/src/Http/Controller/Admin/EducationPartController.php @@ -0,0 +1,43 @@ +render(); + } + + /** + * Create a new entry. + * + * @param EducationPartFormBuilder $form + * @return \Symfony\Component\HttpFoundation\Response + */ + public function create(EducationPartFormBuilder $form) + { + return $form->render(); + } + + /** + * Edit an existing entry. + * + * @param EducationPartFormBuilder $form + * @param $id + * @return \Symfony\Component\HttpFoundation\Response + */ + public function edit(EducationPartFormBuilder $form, $id) + { + return $form->render($id); + } +} diff --git a/addons/default/visiosoft/profile-module/src/Http/Controller/MyProfileController.php b/addons/default/visiosoft/profile-module/src/Http/Controller/MyProfileController.php index 241a90b33..01920904c 100644 --- a/addons/default/visiosoft/profile-module/src/Http/Controller/MyProfileController.php +++ b/addons/default/visiosoft/profile-module/src/Http/Controller/MyProfileController.php @@ -24,6 +24,9 @@ use Visiosoft\PackagesModule\User\UserModel; use Visiosoft\ProfileModule\Adress\AdressModel; use Visiosoft\ProfileModule\Adress\Contract\AdressRepositoryInterface; use Visiosoft\ProfileModule\Adress\Form\AdressFormBuilder; +use Visiosoft\ProfileModule\Education\EducationModel; +use Visiosoft\ProfileModule\EducationPart\EducationPartModel; +use Visiosoft\ProfileModule\EducationPartOption\EducationPartOptionModel; use Visiosoft\ProfileModule\Profile\Form\ProfileFormBuilder; use Illuminate\Contracts\Events\Dispatcher; @@ -246,4 +249,19 @@ class MyProfileController extends PublicController return response()->json(['status' => 'success', 'data' => $profile]); } + public function getEducation(Request $request) + { + $user = $this->userRepository->find(auth()->id()); + $education = EducationModel::all(); + $educationPart = EducationPartModel::query()->where('education_id', $user->education)->get(); + return response()->json(['user' => $user, 'education' => $education, 'education-part' => $educationPart], 200); + } + + public function changeEducation(Request $request) + { + if ($request->info == 'education') { + $education = EducationPartModel::query()->where('education_id', $request->education)->get(); + } + return response()->json(['data' => $education], 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/Profile/Profile/ProfileFormHandler.php b/addons/default/visiosoft/profile-module/src/Profile/Profile/ProfileFormHandler.php index ed0775c78..15e0e832c 100644 --- a/addons/default/visiosoft/profile-module/src/Profile/Profile/ProfileFormHandler.php +++ b/addons/default/visiosoft/profile-module/src/Profile/Profile/ProfileFormHandler.php @@ -30,7 +30,7 @@ class ProfileFormHandler if (setting_value('visiosoft.module.profile::show_education_profession')) { $parameters = array_merge($parameters, [ 'education' => $builder->getPostValue('education'), - 'state_of_education' => $builder->getPostValue('state_of_education'), + 'education_part' => $builder->getPostValue('education_part'), 'profession' => $builder->getPostValue('profession'), ]); } diff --git a/addons/default/visiosoft/profile-module/src/ProfileModule.php b/addons/default/visiosoft/profile-module/src/ProfileModule.php index 69b94033e..20ec78a93 100644 --- a/addons/default/visiosoft/profile-module/src/ProfileModule.php +++ b/addons/default/visiosoft/profile-module/src/ProfileModule.php @@ -30,6 +30,16 @@ class ProfileModule extends Module 'new_adress', ], ], + 'education' => [ + 'buttons' => [ + 'new_education', + ] + ], + 'education_part' => [ + 'buttons' => [ + 'new_education_part', + ] + ], ]; } diff --git a/addons/default/visiosoft/profile-module/src/ProfileModuleServiceProvider.php b/addons/default/visiosoft/profile-module/src/ProfileModuleServiceProvider.php index bbedeac27..15d9efa83 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; @@ -101,6 +105,8 @@ class ProfileModuleServiceProvider extends AddonServiceProvider ], 'profile/notification' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@notification', 'ajax/update-user-info' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@updateAjaxProfile', + 'api/changeEducation' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@changeEducation', + 'api/getEducation' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@getEducation', // UserAuthenticator 'login-in' => 'Visiosoft\ProfileModule\Http\Controller\UserAuthenticator@attempt', @@ -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..497108c1e 100644 --- a/addons/default/visiosoft/profile-module/src/Seed/UsersFieldsSeeder.php +++ b/addons/default/visiosoft/profile-module/src/Seed/UsersFieldsSeeder.php @@ -124,21 +124,26 @@ class UsersFieldsSeeder extends Seeder "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.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.select', + ], + [ + 'name' => trans('visiosoft.module.profile::field.education_part.name'), + 'slug' => 'education_part', + 'type' => 'anomaly.field_type.select', + ], [ 'name' => trans('visiosoft.module.profile::field.facebook_address.name'), 'slug' => 'facebook_address',