Untitled

 avatar
unknown
plain_text
a year ago
2.6 kB
6
Indexable
public function goodsBalance(Request $request): JsonResponse
    {
        try {
            $blocked = false;
            $filter = $this->validate($request, [
                'date' => 'required|date',
                'account' => 'nullable|string|regex:/^[0-9]+$/|size:4',
                'warehouse_id' => 'nullable|uuid',
                'product_id' => 'nullable|uuid',
            ]);
            if($request->has('warehouse_id')){
                $warehouse = Warehouse::findOrFail($request['warehouse_id']);
                if($warehouse->blocked === true){
                    $blocked = true;
                }
            }
            $query = isset($filter['account'])
                ? 'SELECT * FROM warehouse.goods_balance(:mailbox, :date, :account)'
                : 'SELECT * FROM warehouse.goods_balance(:mailbox, :date)';
            DB::beginTransaction();
            if (isset($filter['warehouse_id'])) {
                $where = ' where warehouse_id=:warehouse_id';
                $readyToSendEntries = ExchangeHistory::where('warehouse_id',$filter['warehouse_id'])->where('accepted',false);
                if($readyToSendEntries->count() > 0){
                    $readyToSendEntries->update(['accepted' => true]);
                }
            }

            if (isset($filter['product_id'])) {
                $where = (isset($where) ? $where . ' AND' : ' where') . ' product_id=:product_id';
            }

            $data = DB::select($query . ($where ?? null), ['mailbox' => $request->user()->profile['mailbox_id']] + $filter);
            DB::commit();
            return AppResponseService::success('Report goods balance received successfully',$blocked?[]:$data);
        } catch (ValidationException $exception) {
            DB::rollBack();
            return AppResponseService::error(
                'Report goods balance received unsuccessfully',
                3532,
                422,
                TdrHelpers::validationHandle($exception)
            );
        } catch (Throwable $exception) {
            DB::rollBack();
            app('Illuminate\Contracts\Debug\ExceptionHandler')->report($exception);

            return AppResponseService::error(
                'Report goods balance received unsuccessfully',
                3487,
                500,
                [
                    'exception' => class_basename($exception),
                    'message' => $exception->getMessage(),
                ]
            );
        }
    }
Editor is loading...
Leave a Comment