From b479c8939902fb75bb908d5d25a038dd2db353a8 Mon Sep 17 00:00:00 2001 From: Diatrex Date: Thu, 19 Nov 2020 17:43:14 +0300 Subject: [PATCH 1/2] #2677 store module imp. --- .../base-theme/resources/js/visiosoft.js | 2 +- .../src/Http/Controller/AjaxController.php | 42 +++++++++++++++++++ .../src/LocationModuleServiceProvider.php | 5 +++ 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/addons/default/visiosoft/base-theme/resources/js/visiosoft.js b/addons/default/visiosoft/base-theme/resources/js/visiosoft.js index 80c116700..52283e3c1 100644 --- a/addons/default/visiosoft/base-theme/resources/js/visiosoft.js +++ b/addons/default/visiosoft/base-theme/resources/js/visiosoft.js @@ -1,4 +1,4 @@ -function crudAjax(params, url, type, callback, async = false) { +function crudAjax(params, url, type, callback = () => {}, async = false) { return $.ajax({ type: type, data: params, diff --git a/addons/default/visiosoft/location-module/src/Http/Controller/AjaxController.php b/addons/default/visiosoft/location-module/src/Http/Controller/AjaxController.php index 09f26662d..0d804293c 100644 --- a/addons/default/visiosoft/location-module/src/Http/Controller/AjaxController.php +++ b/addons/default/visiosoft/location-module/src/Http/Controller/AjaxController.php @@ -1,6 +1,9 @@ orderBy($sorting_column, $sorting_type)->get(); } + + public function findLocation() + { + try { + $validator = Validator::make(request()->all(), [ + 'type' => [ + 'required', + Rule::in(['countries', 'cities', 'districts', 'neighborhoods', 'village']) + ], + 'id' => 'required|exists:location_' . request()->type, + ]); + + if ($validator->fails()) { + throw new \Exception($validator->messages()->first()); + } + + $dBName = 'location_' . request()->type; + $location = DB::table($dBName) + ->join( + $dBName . '_translations as location_trans', + $dBName . '.id', + '=', + 'location_trans.entry_id' + ) + ->where($dBName . '.id', request()->id) + ->first(); + + return [ + 'success' => true, + 'data' => $location + ]; + } catch (\Exception $e) { + return [ + 'success' => false, + 'msg' => $e->getMessage() + ]; + } + + } } \ No newline at end of file diff --git a/addons/default/visiosoft/location-module/src/LocationModuleServiceProvider.php b/addons/default/visiosoft/location-module/src/LocationModuleServiceProvider.php index 05667e097..d26365f34 100644 --- a/addons/default/visiosoft/location-module/src/LocationModuleServiceProvider.php +++ b/addons/default/visiosoft/location-module/src/LocationModuleServiceProvider.php @@ -76,6 +76,7 @@ class LocationModuleServiceProvider extends AddonServiceProvider 'admin/location/neighborhoods/create' => 'Visiosoft\LocationModule\Http\Controller\Admin\NeighborhoodsController@create', 'admin/location/neighborhoods/edit/{id}' => 'Visiosoft\LocationModule\Http\Controller\Admin\NeighborhoodsController@edit', + // AjaxController 'ajax/getCountry' => [ 'as' => 'location::getCountry', 'uses' => 'Visiosoft\LocationModule\Http\Controller\AjaxController@getCountries' @@ -97,6 +98,10 @@ class LocationModuleServiceProvider extends AddonServiceProvider 'as' => 'location::getVillage', 'uses' => 'Visiosoft\LocationModule\Http\Controller\AjaxController@getVillage' ], + 'api/find-location' => [ + 'as' => 'visiosoft.module.location::api_find_location', + 'uses' => 'Visiosoft\LocationModule\Http\Controller\AjaxController@findLocation' + ], ]; /** From e405d95fef4015595adb1cc89d73bc7f1ef7d250 Mon Sep 17 00:00:00 2001 From: Diatrex Date: Mon, 23 Nov 2020 11:30:09 +0300 Subject: [PATCH 2/2] #2661 Profile education field error --- ...eate_profession_and_educational_fields.php | 64 ---------- .../src/Seed/UsersFieldsSeeder.php | 113 ++++++++---------- 2 files changed, 50 insertions(+), 127 deletions(-) delete mode 100644 addons/default/visiosoft/profile-module/migrations/2020_11_06_154603_visiosoft.module.profile__create_profession_and_educational_fields.php diff --git a/addons/default/visiosoft/profile-module/migrations/2020_11_06_154603_visiosoft.module.profile__create_profession_and_educational_fields.php b/addons/default/visiosoft/profile-module/migrations/2020_11_06_154603_visiosoft.module.profile__create_profession_and_educational_fields.php deleted file mode 100644 index 425ce5ae6..000000000 --- a/addons/default/visiosoft/profile-module/migrations/2020_11_06_154603_visiosoft.module.profile__create_profession_and_educational_fields.php +++ /dev/null @@ -1,64 +0,0 @@ -streams()->findBySlugAndNamespace('users', 'users')) { - $fields = [ - [ - 'name' => trans('visiosoft.module.profile::field.education.name'), - 'slug' => 'education', - ], - [ - 'name' => trans('visiosoft.module.profile::field.state_of_education.name'), - 'slug' => 'state_of_education', - ], - [ - 'name' => trans('visiosoft.module.profile::field.profession.name'), - 'slug' => 'profession', - ], - ]; - - foreach ($fields as $field) { - $exists = $this->fields() - ->newQuery() - ->where('slug', $field['slug']) - ->where('namespace', 'users') - ->first(); - - if (!$exists) { - $userField = $this->fields()->create([ - 'name' => $field['name'], - 'namespace' => 'users', - 'slug' => $field['slug'], - 'type' => 'anomaly.field_type.text', - 'locked' => 0, - ]); - - $this->assignments()->create([ - 'stream_id' => $stream->id, - 'field_id' => $userField->id - ]); - } - } - } - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - /* - * I never go back on my word! - * That's my nindo: my ninja way! - * NARUTO - */ - } -} diff --git a/addons/default/visiosoft/profile-module/src/Seed/UsersFieldsSeeder.php b/addons/default/visiosoft/profile-module/src/Seed/UsersFieldsSeeder.php index 7b2f4c51a..39da2b576 100644 --- a/addons/default/visiosoft/profile-module/src/Seed/UsersFieldsSeeder.php +++ b/addons/default/visiosoft/profile-module/src/Seed/UsersFieldsSeeder.php @@ -1,29 +1,17 @@ findBySlugAndNamespace('users', 'users'); $customFields = [ - 0 => [ + [ 'name' => 'File', 'slug' => 'file', 'type' => 'visiosoft.field_type.singlefile', @@ -40,7 +28,7 @@ class UsersFieldsSeeder extends Seeder 'mode' => 'upload', ] ], - 1 => [ + [ 'name' => 'Country', 'slug' => 'country', 'type' => 'anomaly.field_type.relationship', @@ -49,7 +37,7 @@ class UsersFieldsSeeder extends Seeder "default_value" => 0, ], ], - 2 => [ + [ 'name' => 'City', 'slug' => 'city', 'type' => 'anomaly.field_type.select', @@ -57,7 +45,7 @@ class UsersFieldsSeeder extends Seeder "options" => [], ] ], - 3 => [ + [ 'name' => 'District', 'slug' => 'district', 'type' => 'anomaly.field_type.select', @@ -65,7 +53,7 @@ class UsersFieldsSeeder extends Seeder "options" => [], ] ], - 4 => [ + [ 'name' => 'Neighborhood', 'slug' => 'neighborhood', 'type' => 'anomaly.field_type.select', @@ -73,7 +61,7 @@ class UsersFieldsSeeder extends Seeder "options" => [], ] ], - 5 => [ + [ 'name' => 'Village', 'slug' => 'village', 'type' => 'anomaly.field_type.select', @@ -81,22 +69,22 @@ class UsersFieldsSeeder extends Seeder "options" => [], ] ], - 6 => [ + [ 'name' => 'Gsm Phone', 'slug' => 'gsm_phone', 'type' => 'anomaly.field_type.text', ], - 7 => [ + [ 'name' => 'Land Phone', 'slug' => 'land_phone', 'type' => 'anomaly.field_type.text', ], - 8 => [ + [ 'name' => 'Office Phone', 'slug' => 'office_phone', 'type' => 'anomaly.field_type.text', ], - 9 => [ + [ 'name' => 'Register Type', 'slug' => 'register_type', 'type' => 'anomaly.field_type.select', @@ -107,12 +95,12 @@ class UsersFieldsSeeder extends Seeder ], ] ], - 10 => [ + [ 'name' => 'Identification Number', 'slug' => 'identification_number', 'type' => 'anomaly.field_type.text', ], - 11 => [ + [ 'name' => 'Notified New Updates', 'slug' => 'notified_new_updates', 'type' => 'anomaly.field_type.select', @@ -122,7 +110,7 @@ class UsersFieldsSeeder extends Seeder 'separator' => ':', ] ], - 12 => [ + [ 'name' => 'Notified About Ads', 'slug' => 'notified_about_ads', 'type' => 'anomaly.field_type.select', @@ -132,7 +120,7 @@ class UsersFieldsSeeder extends Seeder 'separator' => ':', ] ], - 13 => [ + [ 'name' => 'Receive Messages Email', 'slug' => 'receive_messages_email', 'type' => 'anomaly.field_type.select', @@ -142,7 +130,7 @@ class UsersFieldsSeeder extends Seeder 'separator' => ':', ] ], - 14 => [ + [ 'name' => trans('visiosoft.module.profile::field.birthday.name'), 'slug' => 'birthday', 'type' => 'anomaly.field_type.datetime', @@ -151,50 +139,49 @@ 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', + ], ]; foreach ($customFields as $customField) { - $fields = $fieldRepository + $field = $fieldRepository ->newQuery() ->where('slug', $customField['slug']) ->where('namespace', $namespace) - ->get(); + ->first(); - if ($fields) { - foreach ($fields as $field) { - $fieldModelTranslation->newQuery()->where('field_id', $field->id)->delete(); - - $assignment = $assignmentRepository - ->newQuery() - ->where('stream_id', $stream->id) - ->where('field_id', $field->id) - ->first(); - if ($assignment) { - $assignmentModelTranslation->newQuery()->where('assignment_id', $assignment->id)->delete(); - $assignment->delete(); - } - - $field->delete(); + if (!$field) { + $data = [ + 'name' => $customField['name'], + 'namespace' => $namespace, + 'slug' => $customField['slug'], + 'type' => $customField['type'], + 'locked' => $locked + ]; + if (isset($customField['config'])) { + $data['config'] = $customField['config']; } + + $field = $fieldRepository->create($data); + + $assignmentRepository->create([ + 'stream_id' => $stream->id, + 'field_id' => $field->id + ]); } - - $data = [ - 'name' => $customField['name'], - 'namespace' => $namespace, - 'slug' => $customField['slug'], - 'type' => $customField['type'], - 'locked' => $locked - ]; - if (isset($customField['config'])) { - $data['config'] = $customField['config']; - } - - $field = $fieldRepository->create($data); - - $assignmentRepository->create([ - 'stream_id' => $stream->id, - 'field_id' => $field->id - ]); } } }