• File: DayCloseStoreController.php
  • Full Path: /var/www/imalipartnersapi/app/Http/Controllers/DayCloseStoreController.php
  • Date Modified: 02/07/2023 8:01 PM
  • File size: 2.24 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?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]);
   }

}