<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Repository\AdminRepository;
use Illuminate\Http\Request;
use App\Models\Auth\User;
use App\Models\DepositPaymentUser;
use App\Models\CircleUser;
use App\Models\CircleDepositPayment;
use App\Models\CircleRound;
use App\Repositories\SiteSettingsRepository;
use App\Repositories\Auth\UserDeviceTokenRepository;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Mail;
use Auth;

class DepositPaymentController extends Controller {

    public function __construct(SiteSettingsRepository $siteSettingsRepository, UserDeviceTokenRepository $userDeviceTokenRepository,AdminRepository $AdminRepository){
        $this->siteSettingsRepository = $siteSettingsRepository;
        $this->userDeviceTokenRepository = $userDeviceTokenRepository;
        $this->dart_email = $AdminRepository->email_to();
    }

    public function index() 
    {
        $users = DB::select(DB::raw("select circles.id as circle_id, deposit_payment_users.*, a.id userid, a.email user_email, a.iban, b.first_name, b.last_name,a.document_validated from deposit_payment_users left join users a on a.mobile_number = deposit_payment_users.mobile left join users b on b.id = deposit_payment_users.refunded_by join circles on circles.circle_code = deposit_payment_users.circle_code where circles.status in (5) order by deposit_payment_users.created_at DESC"));
        //dd($users);
        return view('admin.pages.payment.deposit_list', compact('users'));
    }

    public function status(AdminRepository $AdminRepository, $id)
    {
        $deposit_payment_user_id = base64_decode($id);
        $data = DepositPaymentUser::find($deposit_payment_user_id);
        $circleRoundDetails = CircleRound::where(['circle_code'=>$data->circle_code, 'round_no'=>$data->round_no])->first();
        $userExist = CircleDepositPayment::where('circle_code', $data->circle_code)
                                  ->where('payment_type', 1)
                                  ->where('circle_user_id', $data->circle_user_id)
                                  ->count();
        $paidUser = User::where('mobile_number', $data->mobile)->first();
        if($userExist>0){
            DepositPaymentUser::where(['id'=>$deposit_payment_user_id])->update(['status'=>1,'refunded_date'=>date('Y-m-d'),'refunded_by'=>Auth::guard('admin')->user()->id]);
            CircleDepositPayment::where('circle_code', $data->circle_code)
                                  ->where('payment_type', 1)
                                  ->where('circle_user_id', $data->circle_user_id)
                                  ->update(['payment_type'=>3]);
            if($paidUser) {
                /*************email********************/
                $to = $paidUser->email;
                $email_text='  <tr>
                                   <td style="padding: 20px 10px; font-family: sans-serif; font-size: 15px; mso-height-rule: exactly; line-height: 20px;color: #333; ">
                                       <p>'.__('messages.all_mail_before_name').' <span style="">'.$paidUser->first_name.'</span> </p>
                                    </td>
                                </tr>
                                <tr>
                                    <td style="font-family: sans-serif; color: #333; padding: 0px 10px 40px; font-size: 16px; line-height: 30px;">
                                       <p>'.__('messages.deposit_payment_paid_by_admin_mail_body_para1').' '.$data->circle_code.'</p>
                                       <p>'.__('messages.deposit_payment_paid_by_admin_mail_body_para2').'</p>
                                       
                                    </td>
                                </tr>
                                <tr>
                                    <td style="font-family: sans-serif; color: #333; padding: 0px 10px 40px; font-size: 16px; line-height: 30px;">
                                       <p>'.__('messages.all_mail_footer_para2').'</p>
                                        <p>'.__('messages.all_mail_footer_para3').'</p>
                                    </td>
                                </tr>';
                        //echo $email_text; die;
                $datas['email_text'] = $email_text;    
                Mail::send('mail.email_template', $datas, function($message) use ($to)
                {
                    $message->from($this->dart_email[4]['value'], 'DANT');
                    $message->to($to);
                    $message->subject(__('messages.deposit_payment_paid_by_admin_mail_subject'));
                });
                /*************email********************/
            }
        }
        return redirect()->route('admin.payment.deposit.list');
    }
}
