diff --git a/app/Http/Requests/Banking/Account.php b/app/Http/Requests/Banking/Account.php index e2e9c176f..bbc16d74b 100644 --- a/app/Http/Requests/Banking/Account.php +++ b/app/Http/Requests/Banking/Account.php @@ -26,7 +26,7 @@ class Account extends Request return [ 'name' => 'required|string', 'number' => 'required|string', - 'currency_code' => 'required|string', + 'currency_code' => 'required|string|currency', 'opening_balance' => 'required', ]; } diff --git a/app/Http/Requests/Expense/Bill.php b/app/Http/Requests/Expense/Bill.php index 75484218e..840f094a8 100644 --- a/app/Http/Requests/Expense/Bill.php +++ b/app/Http/Requests/Expense/Bill.php @@ -39,7 +39,7 @@ class Bill extends Request 'billed_at' => 'required|date', 'due_at' => 'required|date', 'amount' => 'required', - 'currency_code' => 'required|string', + 'currency_code' => 'required|string|currency', 'currency_rate' => 'required', 'vendor_id' => 'required|integer', 'vendor_name' => 'required|string', diff --git a/app/Http/Requests/Expense/BillPayment.php b/app/Http/Requests/Expense/BillPayment.php index 23d1b4cb9..dbbd6396f 100644 --- a/app/Http/Requests/Expense/BillPayment.php +++ b/app/Http/Requests/Expense/BillPayment.php @@ -27,7 +27,7 @@ class BillPayment extends Request 'account_id' => 'required|integer', 'paid_at' => 'required|date', 'amount' => 'required', - 'currency_code' => 'required|string', + 'currency_code' => 'required|string|currency', 'payment_method' => 'required|string', 'attachment' => 'mimes:' . setting('general.file_types', 'pdf,jpeg,jpg,png'), ]; diff --git a/app/Http/Requests/Expense/Payment.php b/app/Http/Requests/Expense/Payment.php index b283972ad..75a32a2ec 100644 --- a/app/Http/Requests/Expense/Payment.php +++ b/app/Http/Requests/Expense/Payment.php @@ -27,7 +27,7 @@ class Payment extends Request 'account_id' => 'required|integer', 'paid_at' => 'required|date', 'amount' => 'required', - 'currency_code' => 'required|string', + 'currency_code' => 'required|string|currency', 'currency_rate' => 'required', 'category_id' => 'required|integer', 'payment_method' => 'required|string', diff --git a/app/Http/Requests/Expense/Vendor.php b/app/Http/Requests/Expense/Vendor.php index 9f5e76629..62ab4f266 100644 --- a/app/Http/Requests/Expense/Vendor.php +++ b/app/Http/Requests/Expense/Vendor.php @@ -42,7 +42,7 @@ class Vendor extends Request return [ 'name' => 'required|string', 'email' => $email, - 'currency_code' => 'required|string', + 'currency_code' => 'required|string|currency', ]; } } diff --git a/app/Http/Requests/Income/Customer.php b/app/Http/Requests/Income/Customer.php index 4d2e97622..4e7f8b621 100644 --- a/app/Http/Requests/Income/Customer.php +++ b/app/Http/Requests/Income/Customer.php @@ -47,7 +47,7 @@ class Customer extends Request return [ 'name' => 'required|string', 'email' => $email, - 'currency_code' => 'required|string', + 'currency_code' => 'required|string|currency', 'password' => $required . 'confirmed', ]; } diff --git a/app/Http/Requests/Income/Invoice.php b/app/Http/Requests/Income/Invoice.php index ee25a3927..332d6d3d4 100644 --- a/app/Http/Requests/Income/Invoice.php +++ b/app/Http/Requests/Income/Invoice.php @@ -39,7 +39,7 @@ class Invoice extends Request 'invoiced_at' => 'required|date', 'due_at' => 'required|date', 'amount' => 'required', - 'currency_code' => 'required|string', + 'currency_code' => 'required|string|currency', 'currency_rate' => 'required', 'customer_id' => 'required|integer', 'customer_name' => 'required|string', diff --git a/app/Http/Requests/Income/InvoicePayment.php b/app/Http/Requests/Income/InvoicePayment.php index 397cc99ee..37b9ced27 100644 --- a/app/Http/Requests/Income/InvoicePayment.php +++ b/app/Http/Requests/Income/InvoicePayment.php @@ -27,7 +27,7 @@ class InvoicePayment extends Request 'account_id' => 'required|integer', 'paid_at' => 'required|date', 'amount' => 'required', - 'currency_code' => 'required|string', + 'currency_code' => 'required|string|currency', 'payment_method' => 'required|string', 'attachment' => 'mimes:jpeg,jpg,png,pdf', ]; diff --git a/app/Http/Requests/Income/Revenue.php b/app/Http/Requests/Income/Revenue.php index 67185ab51..722326ac5 100644 --- a/app/Http/Requests/Income/Revenue.php +++ b/app/Http/Requests/Income/Revenue.php @@ -27,7 +27,7 @@ class Revenue extends Request 'account_id' => 'required|integer', 'paid_at' => 'required|date', 'amount' => 'required', - 'currency_code' => 'required|string', + 'currency_code' => 'required|string|currency', 'currency_rate' => 'required', 'category_id' => 'required|integer', 'payment_method' => 'required|string', diff --git a/app/Http/Requests/Request.php b/app/Http/Requests/Request.php index 65f4ad8fa..36161c2da 100644 --- a/app/Http/Requests/Request.php +++ b/app/Http/Requests/Request.php @@ -2,11 +2,33 @@ namespace App\Http\Requests; +use App\Models\Setting\Currency; + use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Validation\Factory as ValidationFactory; class Request extends FormRequest { + public function __construct(ValidationFactory $validation) + { + $validation->extend( + 'currency', + function ($attribute, $currency_code, $parameters) { + $currency = false; + $currencies = Currency::enabled()->pluck('name', 'code')->toArray(); + + if (array_key_exists($currency_code, $currencies)) { + $currency = true; + } + + return $currency; + }, + trans('validation.custom.invalid_currency', ['attribute' => $currency_code]) + ); + + } + /** * Set the company id to the request. * diff --git a/resources/lang/en-GB/validation.php b/resources/lang/en-GB/validation.php index 2a5c74341..c69114418 100644 --- a/resources/lang/en-GB/validation.php +++ b/resources/lang/en-GB/validation.php @@ -101,6 +101,7 @@ return [ 'attribute-name' => [ 'rule-name' => 'custom-message', ], + 'invalid_currency' => 'The :attribute code is invalid.', ], /*