<?php
namespace App\Http\Controllers;
use Illuminate\Support\Collection;
use PDF;
use Mail;
use App\Mail\ReportMail;
use App\Models\Facility\Facility;
use App\Models\Facility\Rates;
use App\Models\Facility\Layout;
use App\Models\Facility\Seats;
use App\Models\Facility\ShowTimings;
use App\Models\Sales\Invoice;
use App\Models\Sales\Transaction;
use App\Models\Sales\Ticket;
use App\Models\Sales\TicketSeat;
use App\Models\Sales\PaymentMethod;
use App\Models\Sales\PaymentType;
use App\Models\Sales\Refund;
use App\Models\Sales\CancelTicket;
use App\Models\Sales\ShowCancel;
use App\Helpers\BookingClass;
use App\Helpers\SMSClass;
use App\Models\Settings\HolidayMaster;
use App\Models\Settings\WeeklyOffMaster;
use App\Models\Settings\Configuration;
use App\Models\Settings\CancelConfiguration;
use App\Models\Mail\MailTicket;
use App\Mail\TicketMail;


class RefundController extends Controller
{
    public function refundstatus()
    {
        $refunds = Refund::where('refund_status',0)->whereNotNull('public_user_id')->get();
        foreach($refunds as $refund)
        {
            $refund_id = $refund->id;
            $invoice_id = $refund->invoice_id;
            $invoices = Invoice::where('id',$invoice_id)->where('status',1)->first();
            if(isset($invoices))
            {
                $transaction_id = $invoices->transaction_id;
                $status ="";
                $transaction = Transaction::where('id',$transaction_id)->where('status',1)->first();
                if(isset($transaction))
                {
                    $mid = $transaction->mid;
                    $encykey = $transaction->encykey;
                    $order_id = $transaction->order_id;
                    $response_url = $transaction->response_url;
                    $transaction_refno =$transaction->transaction_refno;
                    $status_code =$transaction->status_code;
                    $status_desc = $transaction->status_desc;
                    $amount = $refund->amount;
                    $paisaamt = $amount*100;

                    //generate merchant request 
                    include 'worldline/AWLMEAPI.php';
                    //generate merchant request from Helper file
                    //create an Object of the above included class
                    $obj = new \AWLMEAPI();
                    //create an object of Request Message
                    $reqMsgDTO = new \ReqMsgDTO();
                    $reqMsgDTO-> setOrderId ($order_id);
                    $reqMsgDTO->setMid($mid);
                    $reqMsgDTO->setRefundAmt($paisaamt); //Paisa Format
                    $reqMsgDTO->setPgMeTrnRefNo($transaction_refno);
                    $reqMsgDTO->setEnckey($encykey);
                    //Step 3: Construct the request DTO with respective Parameter
                    $resMsgDTO = $obj->refundTransaction($reqMsgDTO);

                    ///update refund table/////
                    $refund_upd = Refund::where('id',$refund_id)->first();
                    $refund_upd->order_id = $order_id;
                    $refund_upd->transaction_refno = $transaction_refno;
                    $refund_upd->status_code = $status_code;
                    $refund_upd->status_desc = $status_desc;

                    $refundstatuscode = $resMsgDTO->getStatusCode();
                    if($refundstatuscode=="S")
                    {
                        $status = 1;
                    }
                    if($refundstatuscode=="F")
                    {
                        $status = 2;
                    }
                    $refund_upd->refund_status = $status;
                    $refund_upd->save();
                }
            }
        }
    }
    
}
