Akaunting/app/Providers/Validation.php

159 lines
4.4 KiB
PHP
Raw Permalink Normal View History

2018-07-01 18:06:52 +00:00
<?php
namespace App\Providers;
use App\Models\Setting\Currency;
2024-04-24 08:53:17 +00:00
use App\Utilities\Modules;
2024-09-26 08:44:08 +00:00
use Illuminate\Support\Facades\Validator;
2019-11-16 07:21:14 +00:00
use Illuminate\Support\ServiceProvider as Provider;
2024-02-09 08:37:16 +00:00
use Illuminate\Support\Str;
2018-07-01 18:06:52 +00:00
2019-11-16 07:21:14 +00:00
class Validation extends Provider
2018-07-01 18:06:52 +00:00
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
2024-12-03 13:27:01 +00:00
// Check currency code has 3 characters and is valid
2024-09-26 08:44:08 +00:00
Validator::extend('currency', function ($attribute, $value, $parameters, $validator) {
$status = false;
2019-11-16 07:21:14 +00:00
2021-10-04 13:03:00 +00:00
if (!is_string($value)) {
2018-09-05 22:45:33 +00:00
return $status;
}
2018-07-01 18:06:52 +00:00
2018-09-05 22:45:33 +00:00
$currencies = Currency::enabled()->pluck('code')->toArray();
2018-07-01 18:06:52 +00:00
2018-09-05 22:45:33 +00:00
if (in_array($value, $currencies)) {
$status = true;
}
2018-07-01 18:06:52 +00:00
2021-10-04 13:03:00 +00:00
if (strlen($value) != 3) {
return $status;
}
$currency_code = $value;
2018-07-01 18:06:52 +00:00
return $status;
2024-09-26 08:44:08 +00:00
});
2024-12-03 13:27:01 +00:00
// Custom message for currency validation
2024-09-26 08:44:08 +00:00
Validator::replacer('currency', function($message, $attribute, $rule, $parameters) {
return trans('validation.custom.invalid_currency', ['attribute' => $attribute]);
});
2024-12-03 13:27:01 +00:00
// Check currency code is valid
2024-09-26 08:44:08 +00:00
Validator::extend('currency_code', function ($attribute, $value, $parameters, $validator) {
$status = false;
$currency_code = $value;
$currencies = config('money.currencies');
2024-09-26 08:44:08 +00:00
if (array_key_exists($value, $currencies)) {
$status = true;
}
return $status;
});
2024-12-03 13:27:01 +00:00
// Custom message for currency code validation
2024-09-26 08:44:08 +00:00
Validator::replacer('currency_code', function($message, $attribute, $rule, $parameters) {
return trans('validation.custom.invalid_currency', ['attribute' => $attribute]);
});
2024-12-03 13:27:01 +00:00
// Check amount is valid
2024-09-26 08:44:08 +00:00
Validator::extend('amount', function ($attribute, $value, $parameters, $validator) {
$status = false;
2022-06-01 07:15:55 +00:00
if ($value > 0 || in_array($value, $parameters)) {
$status = true;
}
2022-06-01 07:15:55 +00:00
if (! preg_match("/^(?=.*?[0-9])[0-9.,]+$/", $value)) {
2021-05-14 15:29:24 +00:00
$status = false;
}
return $status;
2024-09-26 08:44:08 +00:00
});
2024-12-03 13:27:01 +00:00
// Custom message for amount validation
2024-09-26 08:44:08 +00:00
Validator::replacer('amount', function($message, $attribute, $rule, $parameters) {
return trans('validation.custom.invalid_amount', ['attribute' => $attribute]);
});
2020-02-28 08:02:25 +00:00
2024-12-03 13:27:01 +00:00
// Check extension is valid
2020-02-28 08:02:25 +00:00
Validator::extend('extension', function ($attribute, $value, $parameters, $validator) {
$extension = $value->getClientOriginalExtension();
return !empty($extension) && in_array($extension, $parameters);
},
trans('validation.custom.invalid_extension')
);
2024-02-09 08:37:16 +00:00
2024-12-03 13:27:01 +00:00
// Check colour is valid
2024-02-09 08:37:16 +00:00
Validator::extend('colour', function ($attribute, $value, $parameters, $validator) {
$status = false;
$colors = ['gray', 'red', 'yellow', 'green', 'blue', 'indigo', 'purple', 'pink'];
$variants = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900];
foreach ($colors as $color) {
if (! Str::contains($value, $color)) {
continue;
}
foreach ($variants as $variant) {
$name = $color . '-' . $variant;
if (Str::contains($value, $name)) {
$status = true;
break;
}
}
if ($status) {
break;
}
}
if (! $status && Str::contains($value, '#')) {
$status = true;
}
return $status;
},
trans('validation.custom.invalid_colour')
);
2024-04-24 08:53:17 +00:00
2024-12-03 13:27:01 +00:00
// Check payment method is valid
2024-04-24 08:53:17 +00:00
Validator::extend('payment_method', function ($attribute, $value, $parameters, $validator) {
$status = false;
$methods = Modules::getPaymentMethods('all');
if (array_key_exists($value, $methods)) {
$status = true;
}
return $status;
},
trans('validation.custom.invalid_payment_method')
);
2018-07-01 18:06:52 +00:00
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}