diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index bd958e4b6..7cd66486d 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -91,5 +91,9 @@ class Kernel extends HttpKernel 'install' => \App\Http\Middleware\CanInstall::class, 'company.settings' => \App\Http\Middleware\LoadSettings::class, 'company.currencies' => \App\Http\Middleware\LoadCurrencies::class, + 'dateformat.paid_at' => \App\Http\Middleware\DateFormatPaidAt::class, + 'dateformat.due_at' => \App\Http\Middleware\DateFormatDueAt::class, + 'dateformat.billed_at' => \App\Http\Middleware\DateFormatBilledAt::class, + 'dateformat.invoiced_at' => \App\Http\Middleware\DateFormatInvoicedAt::class, ]; } diff --git a/app/Http/Middleware/DateFormatBilledAt.php b/app/Http/Middleware/DateFormatBilledAt.php new file mode 100644 index 000000000..d85efed4f --- /dev/null +++ b/app/Http/Middleware/DateFormatBilledAt.php @@ -0,0 +1,29 @@ +method() == 'POST' || $request->method() == 'PATCH') { + $date = Date::parse($request->get('billed_at'))->format('Y-m-d'); + + $date_time = $date . ' ' . Date::now()->format('H:i:s'); + + $request->request->set('billed_at', $date_time); + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/DateFormatDueAt.php b/app/Http/Middleware/DateFormatDueAt.php new file mode 100644 index 000000000..c90ba5f78 --- /dev/null +++ b/app/Http/Middleware/DateFormatDueAt.php @@ -0,0 +1,29 @@ +method() == 'POST' || $request->method() == 'PATCH') { + $date = Date::parse($request->get('due_at'))->format('Y-m-d'); + + $date_time = $date . ' ' . Date::now()->format('H:i:s'); + + $request->request->set('due_at', $date_time); + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/DateFormatInvoicedAt.php b/app/Http/Middleware/DateFormatInvoicedAt.php new file mode 100644 index 000000000..6bc08d653 --- /dev/null +++ b/app/Http/Middleware/DateFormatInvoicedAt.php @@ -0,0 +1,29 @@ +method() == 'POST' || $request->method() == 'PATCH') { + $date = Date::parse($request->get('invoiced_at'))->format('Y-m-d'); + + $date_time = $date . ' ' . Date::now()->format('H:i:s'); + + $request->request->set('invoiced_at', $date_time); + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/DateFormatPaidAt.php b/app/Http/Middleware/DateFormatPaidAt.php new file mode 100644 index 000000000..8b8e59fe1 --- /dev/null +++ b/app/Http/Middleware/DateFormatPaidAt.php @@ -0,0 +1,29 @@ +method() == 'POST' || $request->method() == 'PATCH') { + $date = Date::parse($request->get('paid_at'))->format('Y-m-d'); + + $date_time = $date . ' ' . Date::now()->format('H:i:s'); + + $request->request->set('paid_at', $date_time); + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/LoadCurrencies.php b/app/Http/Middleware/LoadCurrencies.php index e79caef62..b71a6b48b 100644 --- a/app/Http/Middleware/LoadCurrencies.php +++ b/app/Http/Middleware/LoadCurrencies.php @@ -26,5 +26,4 @@ class LoadCurrencies return $next($request); } - -} \ No newline at end of file +} diff --git a/app/Http/Requests/Expense/Bill.php b/app/Http/Requests/Expense/Bill.php index 840f094a8..3b41c242f 100644 --- a/app/Http/Requests/Expense/Bill.php +++ b/app/Http/Requests/Expense/Bill.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\Expense; use App\Http\Requests\Request; +use Date; class Bill extends Request { @@ -47,4 +48,16 @@ class Bill extends Request 'attachment' => 'mimes:' . setting('general.file_types') . '|between:0,' . setting('general.file_size') * 1024, ]; } + + public function withValidator($validator) + { + if ($validator->errors()->count()) { + // Set date + $billed_at = Date::parse($this->request->get('billed_at'))->format('Y-m-d'); + $due_at = Date::parse($this->request->get('due_at'))->format('Y-m-d'); + + $this->request->set('billed_at', $billed_at); + $this->request->set('due_at', $due_at); + } + } } diff --git a/app/Http/Requests/Expense/BillPayment.php b/app/Http/Requests/Expense/BillPayment.php index dbbd6396f..0fc691b32 100644 --- a/app/Http/Requests/Expense/BillPayment.php +++ b/app/Http/Requests/Expense/BillPayment.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\Expense; use App\Http\Requests\Request; +use Date; class BillPayment extends Request { @@ -32,4 +33,13 @@ class BillPayment extends Request 'attachment' => 'mimes:' . setting('general.file_types', 'pdf,jpeg,jpg,png'), ]; } + + public function withValidator($validator) + { + if ($validator->errors()->count()) { + $paid_at = Date::parse($this->request->get('paid_at'))->format('Y-m-d'); + + $this->request->set('paid_at', $paid_at); + } + } } diff --git a/app/Http/Requests/Expense/Payment.php b/app/Http/Requests/Expense/Payment.php index e14198d30..84cdc4fc5 100644 --- a/app/Http/Requests/Expense/Payment.php +++ b/app/Http/Requests/Expense/Payment.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\Expense; use App\Http\Requests\Request; +use Date; class Payment extends Request { @@ -35,4 +36,13 @@ class Payment extends Request 'attachment' => 'mimes:' . setting('general.file_types') . '|between:0,' . setting('general.file_size') * 1024, ]; } + + public function withValidator($validator) + { + if ($validator->errors()->count()) { + $paid_at = Date::parse($this->request->get('paid_at'))->format('Y-m-d'); + + $this->request->set('paid_at', $paid_at); + } + } } diff --git a/app/Http/Requests/Income/Invoice.php b/app/Http/Requests/Income/Invoice.php index 332d6d3d4..f26ba911f 100644 --- a/app/Http/Requests/Income/Invoice.php +++ b/app/Http/Requests/Income/Invoice.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\Income; use App\Http\Requests\Request; +use Date; class Invoice extends Request { @@ -47,4 +48,16 @@ class Invoice extends Request 'attachment' => 'mimes:' . setting('general.file_types') . '|between:0,' . setting('general.file_size') * 1024, ]; } + + public function withValidator($validator) + { + if ($validator->errors()->count()) { + // Set date + $invoiced_at = Date::parse($this->request->get('invoiced_at'))->format('Y-m-d'); + $due_at = Date::parse($this->request->get('due_at'))->format('Y-m-d'); + + $this->request->set('invoiced_at', $invoiced_at); + $this->request->set('due_at', $due_at); + } + } } diff --git a/app/Http/Requests/Income/InvoicePayment.php b/app/Http/Requests/Income/InvoicePayment.php index 37b9ced27..e5cf458c8 100644 --- a/app/Http/Requests/Income/InvoicePayment.php +++ b/app/Http/Requests/Income/InvoicePayment.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\Income; use App\Http\Requests\Request; +use Date; class InvoicePayment extends Request { @@ -32,4 +33,13 @@ class InvoicePayment extends Request 'attachment' => 'mimes:jpeg,jpg,png,pdf', ]; } + + public function withValidator($validator) + { + if ($validator->errors()->count()) { + $paid_at = Date::parse($this->request->get('paid_at'))->format('Y-m-d'); + + $this->request->set('paid_at', $paid_at); + } + } } diff --git a/app/Http/Requests/Income/Revenue.php b/app/Http/Requests/Income/Revenue.php index f6cb5666f..2e86ead7a 100644 --- a/app/Http/Requests/Income/Revenue.php +++ b/app/Http/Requests/Income/Revenue.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\Income; use App\Http\Requests\Request; +use Date; class Revenue extends Request { @@ -35,4 +36,13 @@ class Revenue extends Request 'attachment' => 'mimes:' . setting('general.file_types') . '|between:0,' . setting('general.file_size') * 1024, ]; } + + public function withValidator($validator) + { + if ($validator->errors()->count()) { + $paid_at = Date::parse($this->request->get('paid_at'))->format('Y-m-d'); + + $this->request->set('paid_at', $paid_at); + } + } } diff --git a/app/Models/Expense/Bill.php b/app/Models/Expense/Bill.php index d8a3019ed..ec883c64a 100644 --- a/app/Models/Expense/Bill.php +++ b/app/Models/Expense/Bill.php @@ -159,28 +159,6 @@ class Bill extends Model $this->attributes['currency_rate'] = (double) $value; } - /** - * Convert billed_at to datetime. - * - * @param string $value - * @return void - */ - public function setBilledAtAttribute($value) - { - $this->attributes['billed_at'] = $value . ' ' . Date::now()->format('H:i:s'); - } - - /** - * Convert due_at to datetime. - * - * @param string $value - * @return void - */ - public function setDueAtAttribute($value) - { - $this->attributes['due_at'] = $value . ' ' . Date::now()->format('H:i:s'); - } - /** * Get the current balance. * diff --git a/app/Models/Expense/BillPayment.php b/app/Models/Expense/BillPayment.php index f6d5100ae..243208039 100644 --- a/app/Models/Expense/BillPayment.php +++ b/app/Models/Expense/BillPayment.php @@ -86,17 +86,6 @@ class BillPayment extends Model return $query->sum('amount'); } - /** - * Convert paid_at to datetime. - * - * @param string $value - * @return void - */ - public function setPaidAtAttribute($value) - { - $this->attributes['paid_at'] = $value . ' ' . Date::now()->format('H:i:s'); - } - /** * Get the current balance. * diff --git a/app/Models/Expense/Payment.php b/app/Models/Expense/Payment.php index 1548b2dcc..29b639f2e 100644 --- a/app/Models/Expense/Payment.php +++ b/app/Models/Expense/Payment.php @@ -132,17 +132,6 @@ class Payment extends Model return $query->orderBy('paid_at', 'desc'); } - /** - * Convert paid_at to datetime. - * - * @param string $value - * @return void - */ - public function setPaidAtAttribute($value) - { - $this->attributes['paid_at'] = $value . ' ' . Date::now()->format('H:i:s'); - } - /** * Get the current balance. * diff --git a/app/Models/Income/Invoice.php b/app/Models/Income/Invoice.php index 177915ef0..50896611f 100644 --- a/app/Models/Income/Invoice.php +++ b/app/Models/Income/Invoice.php @@ -161,28 +161,6 @@ class Invoice extends Model $this->attributes['currency_rate'] = (double) $value; } - /** - * Convert invoiced_at to datetime. - * - * @param string $value - * @return void - */ - public function setInvoicedAtAttribute($value) - { - $this->attributes['invoiced_at'] = $value . ' ' . Date::now()->format('H:i:s'); - } - - /** - * Convert due_at to datetime. - * - * @param string $value - * @return void - */ - public function setDueAtAttribute($value) - { - $this->attributes['due_at'] = $value . ' ' . Date::now()->format('H:i:s'); - } - /** * Get the current balance. * diff --git a/app/Models/Income/InvoicePayment.php b/app/Models/Income/InvoicePayment.php index 8fc582f98..2d5943361 100644 --- a/app/Models/Income/InvoicePayment.php +++ b/app/Models/Income/InvoicePayment.php @@ -86,17 +86,6 @@ class InvoicePayment extends Model return $query->sum('amount'); } - /** - * Convert paid_at to datetime. - * - * @param string $value - * @return void - */ - public function setPaidAtAttribute($value) - { - $this->attributes['paid_at'] = $value . ' ' . Date::now()->format('H:i:s'); - } - /** * Get the current balance. * diff --git a/app/Models/Income/Revenue.php b/app/Models/Income/Revenue.php index 14b364904..1d23b9ff9 100644 --- a/app/Models/Income/Revenue.php +++ b/app/Models/Income/Revenue.php @@ -133,17 +133,6 @@ class Revenue extends Model $this->attributes['currency_rate'] = (double) $value; } - /** - * Convert paid_at to datetime. - * - * @param string $value - * @return void - */ - public function setPaidAtAttribute($value) - { - $this->attributes['paid_at'] = $value . ' ' . Date::now()->format('H:i:s'); - } - public function scopeLatest($query) { return $query->orderBy('paid_at', 'desc'); diff --git a/routes/web.php b/routes/web.php index c2cba9697..588a86f32 100644 --- a/routes/web.php +++ b/routes/web.php @@ -53,15 +53,15 @@ Route::group(['middleware' => 'language'], function () { Route::get('invoices/{invoice}/print', 'Incomes\Invoices@printInvoice'); Route::get('invoices/{invoice}/pdf', 'Incomes\Invoices@pdfInvoice'); Route::get('invoices/{invoice}/duplicate', 'Incomes\Invoices@duplicate'); - Route::post('invoices/payment', 'Incomes\Invoices@payment')->name('invoice.payment'); + Route::post('invoices/payment', 'Incomes\Invoices@payment')->middleware(['dateformat.paid_at'])->name('invoice.payment'); Route::delete('invoices/payment/{payment}', 'Incomes\Invoices@paymentDestroy'); Route::post('invoices/import', 'Incomes\Invoices@import')->name('invoices.import'); Route::get('invoices/export', 'Incomes\Invoices@export')->name('invoices.export'); - Route::resource('invoices', 'Incomes\Invoices'); + Route::resource('invoices', 'Incomes\Invoices', ['middleware' => ['dateformat.invoiced_at', 'dateformat.due_at']]); Route::get('revenues/{revenue}/duplicate', 'Incomes\Revenues@duplicate'); Route::post('revenues/import', 'Incomes\Revenues@import')->name('revenues.import'); Route::get('revenues/export', 'Incomes\Revenues@export')->name('revenues.export'); - Route::resource('revenues', 'Incomes\Revenues'); + Route::resource('revenues', 'Incomes\Revenues', ['middleware' => ['dateformat.paid_at']]); Route::get('customers/currency', 'Incomes\Customers@currency'); Route::get('customers/{customer}/duplicate', 'Incomes\Customers@duplicate'); Route::post('customers/customer', 'Incomes\Customers@customer'); @@ -78,15 +78,15 @@ Route::group(['middleware' => 'language'], function () { Route::get('bills/{bill}/print', 'Expenses\Bills@printBill'); Route::get('bills/{bill}/pdf', 'Expenses\Bills@pdfBill'); Route::get('bills/{bill}/duplicate', 'Expenses\Bills@duplicate'); - Route::post('bills/payment', 'Expenses\Bills@payment')->name('bill.payment'); + Route::post('bills/payment', 'Expenses\Bills@payment')->middleware(['dateformat.paid_at'])->name('bill.payment'); Route::delete('bills/payment/{payment}', 'Expenses\Bills@paymentDestroy'); Route::post('bills/import', 'Expenses\Bills@import')->name('bills.import'); Route::get('bills/export', 'Expenses\Bills@export')->name('bills.export'); - Route::resource('bills', 'Expenses\Bills'); + Route::resource('bills', 'Expenses\Bills', ['middleware' => ['dateformat.billed_at', 'dateformat.due_at']]); Route::get('payments/{payment}/duplicate', 'Expenses\Payments@duplicate'); Route::post('payments/import', 'Expenses\Payments@import')->name('payments.import'); Route::get('payments/export', 'Expenses\Payments@export')->name('payments.export'); - Route::resource('payments', 'Expenses\Payments'); + Route::resource('payments', 'Expenses\Payments', ['middleware' => ['dateformat.paid_at']]); Route::get('vendors/currency', 'Expenses\Vendors@currency'); Route::get('vendors/{vendor}/duplicate', 'Expenses\Vendors@duplicate'); Route::post('vendors/vendor', 'Expenses\Vendors@vendor');