<?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]);
}
}