2018-08-07 12:30:21 +03:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Http\Middleware;
|
|
|
|
|
|
|
|
use Closure;
|
2021-01-19 18:02:19 +03:00
|
|
|
use OutOfBoundsException;
|
2021-01-28 10:49:04 +03:00
|
|
|
use Illuminate\Support\Str;
|
|
|
|
use InvalidArgumentException;
|
2021-01-19 18:02:19 +03:00
|
|
|
use UnexpectedValueException;
|
2021-01-28 10:49:04 +03:00
|
|
|
|
2018-08-07 12:30:21 +03:00
|
|
|
class Money
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Handle an incoming request.
|
|
|
|
*
|
|
|
|
* @param \Illuminate\Http\Request $request
|
|
|
|
* @param \Closure $next
|
|
|
|
* @return mixed
|
|
|
|
*/
|
|
|
|
public function handle($request, Closure $next)
|
|
|
|
{
|
2021-02-09 14:56:56 +03:00
|
|
|
if (($request->method() != 'POST') && ($request->method() != 'PATCH')) {
|
|
|
|
return $next($request);
|
|
|
|
}
|
2018-09-01 14:04:35 +03:00
|
|
|
|
2021-02-09 14:56:56 +03:00
|
|
|
$parameters = [
|
|
|
|
'amount',
|
|
|
|
'sale_price',
|
|
|
|
'purchase_price',
|
|
|
|
'opening_balance',
|
|
|
|
];
|
2021-01-19 18:02:19 +03:00
|
|
|
|
2021-02-09 14:56:56 +03:00
|
|
|
foreach ($parameters as $parameter) {
|
|
|
|
if (!$request->has($parameter)) {
|
|
|
|
continue;
|
|
|
|
}
|
2021-01-19 18:02:19 +03:00
|
|
|
|
2021-02-09 14:56:56 +03:00
|
|
|
$money_format = $request->get($parameter);
|
2018-08-07 12:30:21 +03:00
|
|
|
|
2021-02-09 14:56:56 +03:00
|
|
|
if ($parameter == 'sale_price' || $parameter == 'purchase_price') {
|
|
|
|
$money_format = Str::replaceFirst(',', '.', $money_format);
|
2018-08-07 12:30:21 +03:00
|
|
|
}
|
2018-08-16 14:11:41 +03:00
|
|
|
|
2021-02-09 14:56:56 +03:00
|
|
|
$amount = $this->getAmount($money_format);
|
2021-01-19 18:02:19 +03:00
|
|
|
|
2021-02-09 14:56:56 +03:00
|
|
|
$request->request->set($parameter, $amount);
|
|
|
|
}
|
2018-08-18 15:56:24 +03:00
|
|
|
|
2021-02-09 14:56:56 +03:00
|
|
|
$document_number = $request->get('document_number');
|
|
|
|
$items = $request->get('items');
|
2021-01-28 10:49:04 +03:00
|
|
|
|
2021-02-09 14:56:56 +03:00
|
|
|
if (isset($document_number) || !empty($items)) {
|
|
|
|
if (!empty($items)) {
|
|
|
|
foreach ($items as $key => $item) {
|
|
|
|
if (!isset($item['price'])) {
|
|
|
|
continue;
|
|
|
|
}
|
2021-01-28 10:49:04 +03:00
|
|
|
|
2021-02-09 14:56:56 +03:00
|
|
|
$amount = $this->getAmount($item['price']);
|
2021-01-28 10:49:04 +03:00
|
|
|
|
2021-02-09 14:56:56 +03:00
|
|
|
$items[$key]['price'] = $amount;
|
2021-01-28 10:49:04 +03:00
|
|
|
}
|
|
|
|
|
2021-02-09 14:56:56 +03:00
|
|
|
$request->request->set('items', $items);
|
2021-01-28 10:49:04 +03:00
|
|
|
}
|
2021-02-09 14:56:56 +03:00
|
|
|
}
|
2021-01-28 10:49:04 +03:00
|
|
|
|
2021-02-09 14:56:56 +03:00
|
|
|
return $next($request);
|
|
|
|
}
|
2021-01-28 10:49:04 +03:00
|
|
|
|
2021-02-09 14:56:56 +03:00
|
|
|
protected function getAmount($money_format)
|
|
|
|
{
|
|
|
|
try {
|
|
|
|
$amount = money($money_format)->getAmount();
|
|
|
|
} catch (InvalidArgumentException | OutOfBoundsException | UnexpectedValueException $e) {
|
|
|
|
logger($e->getMessage());
|
2021-01-28 10:49:04 +03:00
|
|
|
|
2021-02-09 14:56:56 +03:00
|
|
|
$amount = 0;
|
2018-08-07 12:30:21 +03:00
|
|
|
}
|
|
|
|
|
2021-02-09 14:56:56 +03:00
|
|
|
return $amount;
|
2018-08-07 12:30:21 +03:00
|
|
|
}
|
|
|
|
}
|