<?php namespace App\Http\Controllers; use App\Bank\Payment; use App\Classes\TransactionGeneration; use App\DayCloseStore; use App\Store; use Illuminate\Http\Request; use DB; use Ramsey\Uuid\Uuid; class DayCloseStoreController extends Controller { public function dayCloseStore(Request $request) { $store = Store::query()->where('public_id', '=', $request->store_id)->first(); if ($store) { $paymentsAmount = Payment::query() ->where('store_id', $store->id) ->whereDate('created_at', $request->date_reference) ->sum('payments.amount_credited'); $closes = DayCloseStore::query() ->where('store_id', $store->id) ->where('date_reference', $request->date_reference) ->first(); if ($closes) { return response()->json(['message' => 'Já foi feito o fecho nessa data'], 400); } else { $trasactionGeneration = new TransactionGeneration(); $transaction = $trasactionGeneration->generateTransaction(); $close = DayCloseStore::create([ // 'transaction' => Uuid::uuid4(), 'transaction' => $transaction, 'description' => $request->description, 'nib' => $store->nib, 'amount' => $paymentsAmount, 'date_reference' => $request->date_reference, 'store_id' => $store->id, 'user_id' => $request->user_id, ]); if ($close) { DB::table('stores')->where('id', $store->id)->decrement('balance', $paymentsAmount); return response()->json(['message' => 'Fecho confirmado com Sucesso', 'amount' => $paymentsAmount, 'nib' => $close->nib, 'date_reference' => $close->date_reference], 201); } } }else{ return response()->json(['message' => 'Loja inválida']); } } public function getPendingStoreDayCloses() { $data = Payment::query() ->join('stores', 'stores.id', '=', 'payments.store_id') ->distinct() ->get(); return response()->json(['data' => $data]); } }