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