From 8ba84f68c78500809498c14199a0e5bb02f2cd63 Mon Sep 17 00:00:00 2001 From: Asif Takavala Date: Tue, 15 Feb 2022 06:10:04 +0000 Subject: [PATCH] fixed uploaded attachment not removed --- .../V1/Admin/Settings/CompanyController.php | 6 +++++ .../V1/Customer/General/ProfileController.php | 3 +++ app/Models/Expense.php | 11 +++++---- resources/scripts/admin/stores/expense.js | 9 ++++---- .../scripts/admin/views/expenses/Create.vue | 9 ++++++-- .../admin/views/settings/AccountSetting.vue | 11 +++++++-- .../views/settings/CompanyInfoSettings.vue | 23 ++++++++++++------- .../components/base/BaseFileUploader.vue | 2 ++ .../views/settings/CustomerSettings.vue | 5 ++++ 9 files changed, 59 insertions(+), 20 deletions(-) diff --git a/app/Http/Controllers/V1/Admin/Settings/CompanyController.php b/app/Http/Controllers/V1/Admin/Settings/CompanyController.php index 5998f312..25381299 100644 --- a/app/Http/Controllers/V1/Admin/Settings/CompanyController.php +++ b/app/Http/Controllers/V1/Admin/Settings/CompanyController.php @@ -71,6 +71,9 @@ class CompanyController extends Controller $data = json_decode($request->company_logo); + if (isset($request->is_company_logo_removed) && (bool) $request->is_company_logo_removed) { + $company->clearMediaCollection('logo'); + } if ($data) { $company = Company::find($request->header('company')); @@ -98,6 +101,9 @@ class CompanyController extends Controller { $user = auth()->user(); + if (isset($request->is_admin_avatar_removed) && (bool) $request->is_admin_avatar_removed) { + $user->clearMediaCollection('admin_avatar'); + } if ($user && $request->hasFile('admin_avatar')) { $user->clearMediaCollection('admin_avatar'); diff --git a/app/Http/Controllers/V1/Customer/General/ProfileController.php b/app/Http/Controllers/V1/Customer/General/ProfileController.php index a80c7706..711e120c 100644 --- a/app/Http/Controllers/V1/Customer/General/ProfileController.php +++ b/app/Http/Controllers/V1/Customer/General/ProfileController.php @@ -17,6 +17,9 @@ class ProfileController extends Controller $customer->update($request->validated()); + if (isset($request->is_customer_avatar_removed) && (bool) $request->is_customer_avatar_removed) { + $customer->clearMediaCollection('customer_avatar'); + } if ($customer && $request->hasFile('customer_avatar')) { $customer->clearMediaCollection('customer_avatar'); diff --git a/app/Models/Expense.php b/app/Models/Expense.php index de02cc91..d5f69d0d 100644 --- a/app/Models/Expense.php +++ b/app/Models/Expense.php @@ -126,14 +126,14 @@ class Expense extends Model implements HasMedia { foreach (explode(' ', $search) as $term) { $query->whereHas('category', function ($query) use ($term) { - $query->where('name', 'LIKE', '%'.$term.'%'); + $query->where('name', 'LIKE', '%' . $term . '%'); }); } } public function scopeWhereNotes($query, $search) { - $query->where('notes', 'LIKE', '%'.$search.'%'); + $query->where('notes', 'LIKE', '%' . $search . '%'); } public function scopeWhereCategory($query, $categoryId) @@ -188,9 +188,9 @@ class Expense extends Model implements HasMedia { foreach (explode(' ', $search) as $term) { $query->whereHas('category', function ($query) use ($term) { - $query->where('name', 'LIKE', '%'.$term.'%'); + $query->where('name', 'LIKE', '%' . $term . '%'); }) - ->orWhere('notes', 'LIKE', '%'.$term.'%'); + ->orWhere('notes', 'LIKE', '%' . $term . '%'); } } @@ -262,6 +262,9 @@ class Expense extends Model implements HasMedia ExchangeRateLog::addExchangeRateLog($this); } + if (isset($request->is_attachment_receipt_removed) && (bool) $request->is_attachment_receipt_removed) { + $this->clearMediaCollection('receipts'); + } if ($request->hasFile('attachment_receipt')) { $this->clearMediaCollection('receipts'); $this->addMediaFromRequest('attachment_receipt')->toMediaCollection('receipts'); diff --git a/resources/scripts/admin/stores/expense.js b/resources/scripts/admin/stores/expense.js index 7543b12a..706762f2 100644 --- a/resources/scripts/admin/stores/expense.js +++ b/resources/scripts/admin/stores/expense.js @@ -61,15 +61,15 @@ export const useExpenseStore = (useWindow = false) => { Object.assign(this.currentExpense, response.data.data) this.currentExpense.selectedCurrency = response.data.data.currency - - if (response.data.data.attachment_receipt) { + this.currentExpense.attachment_receipt = null + if (response.data.data.attachment_receipt_url) { if ( utils.isImageFile( response.data.data.attachment_receipt_meta.mime_type ) ) { this.currentExpense.receiptFiles = [ - { image: `/expenses/${id}/receipt` }, + { image: `/reports/expenses/${id}/receipt?${response.data.data.attachment_receipt_meta.uuid}` }, ] } else { this.currentExpense.receiptFiles = [ @@ -118,12 +118,13 @@ export const useExpenseStore = (useWindow = false) => { }) }, - updateExpense({ id, data }) { + updateExpense({ id, data, isAttachmentReceiptRemoved }) { const notificationStore = useNotificationStore() const formData = utils.toFormData(data) formData.append('_method', 'PUT') + formData.append('is_attachment_receipt_removed', isAttachmentReceiptRemoved) return new Promise((resolve) => { axios.post(`/api/v1/expenses/${id}`, formData).then((response) => { diff --git a/resources/scripts/admin/views/expenses/Create.vue b/resources/scripts/admin/views/expenses/Create.vue index ca36c8ad..d79ade62 100644 --- a/resources/scripts/admin/views/expenses/Create.vue +++ b/resources/scripts/admin/views/expenses/Create.vue @@ -21,7 +21,7 @@