From f389efa6afc2f03e0c5e58e0cc71f41f3070bd06 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Tue, 30 Jan 2024 00:07:31 +0800 Subject: [PATCH] add permits edit --- .../ImportPermitsReminderController.php | 2 +- .../CreatePermitsReminderController.php | 2 +- .../UpdatePermitsReminderController.php | 51 +++++++++++++++++++ app/Models/PermitsReminder.php | 6 +-- .../elements/PermitsReminderComponent.vue | 11 +++- .../elements/PermitsReminderItemComponent.vue | 8 +++ .../forms/AddPermitsReminderFormComponent.vue | 20 ++++++-- resources/views/pages/settings.blade.php | 2 +- routes/permits_reminder.php | 1 + 9 files changed, 92 insertions(+), 11 deletions(-) create mode 100644 app/Http/Controllers/PermitsReminder/UpdatePermitsReminderController.php diff --git a/app/Http/Controllers/Imports/ImportPermitsReminderController.php b/app/Http/Controllers/Imports/ImportPermitsReminderController.php index bceaad37..2f82b628 100644 --- a/app/Http/Controllers/Imports/ImportPermitsReminderController.php +++ b/app/Http/Controllers/Imports/ImportPermitsReminderController.php @@ -40,7 +40,7 @@ class ImportPermitsReminderController $row['reminder_date'] = $this->changeExcelDate($row['reminder_date']); $validator = Validator::make($row, [ - 'model' => 'required', + 'model' => 'required|unique:permits_reminders,model', 'expiry_date' => 'required|date|after_or_equal:today', 'reminder_date' => 'required|date|after_or_equal:today', ]); diff --git a/app/Http/Controllers/PermitsReminder/CreatePermitsReminderController.php b/app/Http/Controllers/PermitsReminder/CreatePermitsReminderController.php index 388f8007..0e093b04 100644 --- a/app/Http/Controllers/PermitsReminder/CreatePermitsReminderController.php +++ b/app/Http/Controllers/PermitsReminder/CreatePermitsReminderController.php @@ -19,7 +19,7 @@ class CreatePermitsReminderController { // Define validation rules $rules = [ - 'model' => 'required', + 'model' => 'required|unique:permits_reminders,model', 'expiry_date' => 'required|date|after_or_equal:today', 'reminder_date' => 'required|date|after_or_equal:today', ]; diff --git a/app/Http/Controllers/PermitsReminder/UpdatePermitsReminderController.php b/app/Http/Controllers/PermitsReminder/UpdatePermitsReminderController.php new file mode 100644 index 00000000..14bcec7b --- /dev/null +++ b/app/Http/Controllers/PermitsReminder/UpdatePermitsReminderController.php @@ -0,0 +1,51 @@ + 'required|unique:permits_reminders,model,' . $request->route('id'), + 'expiry_date' => 'required|date|after_or_equal:today', + 'reminder_date' => 'required|date|after_or_equal:today', + ]; + + $validator = Validator::make($request->all(), $rules); + + if ($validator->fails()) { + $validationErrors = $validator->errors()->all(); + $validationError = implode("
", $validationErrors); + + return response()->json([ + 'title' => 'Update Permits Reminder Failed', + 'message' => $validationError, + "payload" => [] + ], 422); + } + + $record = PermitsReminder::findOrFail($request->route('id')); + + $record->model = $request->input('model'); + $record->expiry_date = Carbon::parse($request->input('expiry_date'))->format('Y-m-d'); + $record->reminder_date = Carbon::parse($request->input('reminder_date'))->format('Y-m-d'); + $record->save(); + + return response()->json([ + 'title' => 'Permits Reminder Updated', + 'message' => 'The permits reminder has been successfully updated.', + "payload" => $record + ]); + } +} diff --git a/app/Models/PermitsReminder.php b/app/Models/PermitsReminder.php index be494559..1f9762a9 100644 --- a/app/Models/PermitsReminder.php +++ b/app/Models/PermitsReminder.php @@ -18,16 +18,16 @@ class PermitsReminder extends Model public function getExpiryDateAttribute($value) { - return Carbon::parse($this->created_at)->format('d-m-Y'); + return $this->attributes['expiry_date'] === null ? NULL : Carbon::parse($this->attributes['expiry_date'])->format('d-m-Y'); } public function getReminderDateAttribute($value) { - return Carbon::parse($this->created_at)->format('d-m-Y'); + return $this->attributes['reminder_date'] === null ? NULL : Carbon::parse($this->attributes['reminder_date'])->format('d-m-Y'); } public function getCreatedAtAttribute($value) { - return Carbon::parse($value)->format('d-m-Y'); + return $this->attributes['created_at'] === null ? NULL : Carbon::parse($this->attributes['created_at'])->format('d-m-Y'); } } diff --git a/resources/assets/vue/components/settings/elements/PermitsReminderComponent.vue b/resources/assets/vue/components/settings/elements/PermitsReminderComponent.vue index b6846b55..c247096a 100644 --- a/resources/assets/vue/components/settings/elements/PermitsReminderComponent.vue +++ b/resources/assets/vue/components/settings/elements/PermitsReminderComponent.vue @@ -16,6 +16,7 @@ +
@@ -83,9 +84,14 @@ import { required } from "vuelidate/lib/validators"; export default { + props: { + section: { + type: String, + required: true + } + }, data() { return { - section: 'orderProfileSection', files: [], parameters: {}, returnData: null, @@ -112,7 +118,7 @@ export default { this.parameters = { files: this.files, }; - this.submit(this.route('api.permits_reminder.upload'), 'post', this.section, false, true); + this.submit(this.route('api.permits_reminder.upload'), 'post', this.section, true, true); }, errorHandler(error) { console.log(error); @@ -123,6 +129,7 @@ export default { }, refreshData() { this.returnData = null; + this.isUploadingCsv = false; this.key++; } }, diff --git a/resources/assets/vue/components/settings/elements/PermitsReminderItemComponent.vue b/resources/assets/vue/components/settings/elements/PermitsReminderItemComponent.vue index 692af867..07624dac 100644 --- a/resources/assets/vue/components/settings/elements/PermitsReminderItemComponent.vue +++ b/resources/assets/vue/components/settings/elements/PermitsReminderItemComponent.vue @@ -87,6 +87,14 @@ :section="section"> +
+ +
+ + +
diff --git a/resources/assets/vue/components/settings/forms/AddPermitsReminderFormComponent.vue b/resources/assets/vue/components/settings/forms/AddPermitsReminderFormComponent.vue index 934522bc..3f694063 100644 --- a/resources/assets/vue/components/settings/forms/AddPermitsReminderFormComponent.vue +++ b/resources/assets/vue/components/settings/forms/AddPermitsReminderFormComponent.vue @@ -3,7 +3,7 @@
-
Add PERMITS REMINDER
+
{{ existingData ? 'Update' : 'Add' }} PERMITS REMINDER
@@ -53,6 +53,11 @@ import FormHandler from '../../../general/mixins/formHandler'; import { required } from "vuelidate/lib/validators"; export default { + props: { + existingData: { + type: Object, + } + }, data() { return { parameters: { @@ -62,6 +67,13 @@ export default { }, }; }, + mounted() { + if (this.existingData) { + this.parameters.expiry_date = this.existingData.expiry_date; + this.parameters.reminder_date = this.existingData.reminder_date; + this.parameters.model = this.existingData.model; + } + }, validations: { parameters: { expiry_date: { required }, @@ -71,10 +83,12 @@ export default { }, methods: { submitForm() { - this.submit(this.route('api.permits_reminder.create'), 'post', this.section, true, true) + var apiRoute = this.existingData ? this.route('api.permits_reminder.update', this.existingData.id) : this.route('api.permits_reminder.create'); + this.submit(apiRoute, 'post', this.section, true, true); }, errorHandler(error) { - this.formHandler(error.message); + // this.formHandler(error.message); + console.log(error); }, successHandler() { this.closeModal(); diff --git a/resources/views/pages/settings.blade.php b/resources/views/pages/settings.blade.php index 8f493630..039fa0c7 100644 --- a/resources/views/pages/settings.blade.php +++ b/resources/views/pages/settings.blade.php @@ -457,7 +457,7 @@
- +
diff --git a/routes/permits_reminder.php b/routes/permits_reminder.php index fc4338c5..ee254349 100644 --- a/routes/permits_reminder.php +++ b/routes/permits_reminder.php @@ -6,5 +6,6 @@ Route::group(['prefix' => 'permits-reminder', 'as' => 'permits_reminder.', 'name Route::get('/list', 'ListPermitsReminderController@list')->name('list'); Route::post('/create', 'CreatePermitsReminderController@create')->name('create'); Route::delete('/{id}/delete', 'DeletePermitsReminderController@delete')->name('delete'); + Route::post('/{id}/update', 'UpdatePermitsReminderController@update')->name('update'); });