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 }}
-
@@ -246,6 +221,7 @@
{{ profileForm.close()|raw }}
+
{% set passwordForm = form('updatePassword').get() %}
@@ -280,8 +256,12 @@
+
{% 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',