<?php

namespace App\Http\Controllers\Cron;

use Illuminate\Http\Request;
use App\Exceptions\GeneralException;
use App\Http\Controllers\Controller;
use App\Repositories\Auth\UserRepository;
use App\Repositories\CircleRepository;
use App\Repositories\CircleUserRepository;
use App\Repositories\CircleRoundRepository;
use App\Repositories\CircleRoundPaymentRepository;
use Illuminate\Support\Facades\Mail;
use App\Repositories\CurrencyRepository;
use App\Models\Circle;
use App\Models\DefaultedUser;
use App\Repositories\SiteSettingsRepository;
use App\Repositories\Auth\UserDeviceTokenRepository;
use Illuminate\Support\Collection;
use DB;

/**
 * Class CronWaitingController.
 */
class CronWaitingController extends Controller
{
    /**
     * @var UserRepository
     * @var CircleUserRepository
     * @var CircleRepository
     * @var CircleRoundRepository
     * @var CircleRoundPaymentRepository
     * @var CurrencyRepository
     * @var SiteSettingsRepository
     * @var UserDeviceTokenRepository
     */
    protected $userRepository;
    protected $circleUserRepository;
    protected $circleRepository;
    protected $circleRoundRepository;
    protected $circleRoundPaymentRepository;
    protected $currencyRepository;
    protected $siteSettingsRoundRepository;
    protected $siteSettingsRepository;
    protected $userDeviceTokenRepository;

    /**
     * CronController constructor.
     *
     * @param ApiRepository $apiRepository
     * @param UserRepository $userRepository
     * @param CircleUserRepository $circleUserRepository
     * @param CircleRepository $circleRepository
     * @param CircleRoundPaymentRepository $circleRoundPaymentRepository
     * @param CurrencyRepository $currencyRepository
     * @param SiteSettingsRepository $siteSettingsRepository
     * @param UserDeviceTokenRepository $userDeviceTokenRepository
     */
    public function __construct(UserRepository $userRepository, CircleRepository $circleRepository, CircleUserRepository $circleUserRepository, CircleRoundRepository $circleRoundRepository, CircleRoundPaymentRepository $circleRoundPaymentRepository, CurrencyRepository $currencyRepository, SiteSettingsRepository $siteSettingsRepository, UserDeviceTokenRepository $userDeviceTokenRepository)
    {
        $this->userRepository = $userRepository;
        $this->circleUserRepository = $circleUserRepository;
        $this->circleRepository = $circleRepository;
        $this->circleRoundRepository = $circleRoundRepository;
        $this->circleRoundPaymentRepository = $circleRoundPaymentRepository;
        $this->currencyRepository = $currencyRepository;
        $this->siteSettingsRepository = $siteSettingsRepository;
        $this->userDeviceTokenRepository = $userDeviceTokenRepository;
    }

    /**
     * Circle rejected when some one not joined
     *
     * @param Json ApiRequest $request
     *
     * @return \Illuminate\Http\JsonResponse
     * @throws GeneralException
     */
    public function circleWaitingReject(Request $request)
    {
        Mail::raw('circleWaitingReject running', function ($message) {
            $message->to('testdevloper007@gmail.com');
        });
        $current_date = date('Y-m-d');
       // $current_date = date('2019-09-11');
        $start_date_weekly = date('Y-m-d', strtotime($current_date . ' -2 day'));
        $circles_weekly = $this->circleRepository->findByCondition(array('start_date'=>$start_date_weekly,'status'=>0,'p_round'=>'weekly'));
        $circles_every_ten_days = $this->circleRepository->findByCondition(array('start_date'=>$start_date_weekly,'status'=>0,'p_round'=>'every-10-days'));
        $start_date_bi_weekly = date('Y-m-d', strtotime($current_date . ' -4 day'));
        $circles_bi_weekly = $this->circleRepository->findByCondition(array('start_date'=>$start_date_bi_weekly,'status'=>0,'p_round'=>'bi-weekly'));
        $start_date_monthly = date('Y-m-d', strtotime($current_date . ' -7 day'));
        $circles_monthly = $this->circleRepository->findByCondition(array('start_date'=>$start_date_monthly,'status'=>0,'p_round'=>'monthly'));

        $circles = new Collection();
        $circles = $circles->merge($circles_weekly);
        $circles = $circles->merge($circles_every_ten_days);
        $circles = $circles->merge($circles_bi_weekly);
        $circles = $circles->merge($circles_monthly);
        //dd($circles);
        if(count($circles)>0){
            foreach ($circles as $key => $circle) {
                $this->circleRepository->updateByCondition(array('circle_code'=>$circle->circle_code), array('status'=>4));
                /************************Send notification*********************/
                $circleUsers = $this->circleUserRepository->findByCondition(array('circle_code'=>$circle->circle_code));
                if(count($circleUsers)>0){
                    foreach ($circleUsers as $userkey => $userval) {
                        $userDetails = $this->userRepository->findByCondition(array('mobile_number'=>$userval->mobile_number));
                        if(count($userDetails)>0){
                            /*************email********************/
                            //$to = 'sayan@digitalaptech.com';
                            $to = $userDetails[0]->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>Dear <span style="">'.$userDetails[0]->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>Your joined circle is rejected due to some parcipants did not joined</p>
                                                   
                                                   <p>Circle Code: '.$circle->circle_code.'</p>
                                                </td>
                                            </tr>
                                            <tr>
                                                <td style="font-family: sans-serif; color: #333; padding: 0px 10px 40px; font-size: 16px; line-height: 30px;">
                                                   <p>Stay connected with us. We appreciate very much your trust in us.</p>
                                                   <p>Please do not hesitate to contact us for any other requests.</p>
                                                </td>
                                            </tr>';
                                    //echo $email_text; die;
                            $data['email_text'] = $email_text;    
                            Mail::send('mail.email_template', $data, function($message) use ($to)
                                            {
                                                $message->from('testdevloper007@gmail.com', 'DANT');
                                                $message->to($to);
                                                $message->subject('Circle rejected mail');
                                            });
                            /*************email********************/
                            /******************Push notification*********************/
                            $userDevice = $this->userDeviceTokenRepository->findByCondition(array('user_id'=>$userDetails[0]->id));
                            if(count($userDevice)>0){
                                $content = array(
                                    "en" => 'Circle is rejected :'.$circle->circle_code
                                );
                                $notify_response = $this->siteSettingsRepository->notification($userDevice[0]->device_tokens, $circle->circle_code, $content);
                            }
                            /******************Push notification*********************/
                        }
                    }
                }
                /********************************Send notification*********************/
            }
        }
        echo $start_date_weekly.' Successfull';
    }

    /**
     * Round open for payment
     *
     * @param Json ApiRequest $request
     *
     * @return \Illuminate\Http\JsonResponse
     * @throws GeneralException
     */
    public function roundOpenForPayment(Request $request)
    {
        Mail::raw('roundOpenForPayment running', function ($message) {
            $message->to('testdevloper007@gmail.com');
        });
        $circles = Circle::whereRaw('completed_round < estimate_round and status = 1 and completed_round = mail_send_round')->get();
        //dd($circles);
        if(count($circles)>0){
            foreach ($circles as $key => $circle) {
                $this->circleRepository->updateByCondition(array('circle_code'=>$circle->circle_code), array('mail_send_round'=>$circle->completed_round+1));
                /************************Send notification*********************/
                $circleUsers = $this->circleUserRepository->findByCondition(array('circle_code'=>$circle->circle_code));
                if(count($circleUsers)>0){
                    foreach ($circleUsers as $userkey => $userval) {
                        $roundDetails = $this->circleRoundRepository->findByCondition(array('circle_code'=>$circle->circle_code,'round_no'=>$circle->completed_round+1));
                        $userPaid = $this->circleRoundPaymentRepository->findByCondition(array('circle_user_id'=>$userval->id,'circle_code'=>$circle->circle_code,'round_id'=>$roundDetails[0]->id,'trn_status'=>1));
                        if(count($userPaid)==0){
                            $userDetails = $this->userRepository->findByCondition(array('mobile_number'=>$userval->mobile_number));
                            if(count($userDetails)>0){
                                /*************email********************/
                                //$to = 'sayan@digitalaptech.com';
                                $to = $userDetails[0]->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>Dear <span style="">'.$userDetails[0]->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>Your joined circle '.($circle->completed_round+1).' round is opened for payment</p>
                                                       
                                                       <p>Circle Code: '.$circle->circle_code.'</p>
                                                       <p>Round No.: '.($circle->completed_round+1).'</p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td style="font-family: sans-serif; color: #333; padding: 0px 10px 40px; font-size: 16px; line-height: 30px;">
                                                       <p>Stay connected with us. We appreciate very much your trust in us.</p>
                                                       <p>Please do not hesitate to contact us for any other requests.</p>
                                                    </td>
                                                </tr>';
                                        //echo $email_text; die;
                                $data['email_text'] = $email_text;    
                                Mail::send('mail.email_template', $data, function($message) use ($to)
                                                {
                                                    $message->from('testdevloper007@gmail.com', 'DANT');
                                                    $message->to($to);
                                                    $message->subject('Circle round is opened for payment');
                                                });
                                /*************email********************/
                                /******************Push notification*********************/
                                $userDevice = $this->userDeviceTokenRepository->findByCondition(array('user_id'=>$userDetails[0]->id));
                                if(count($userDevice)>0){
                                    $content = array(
                                        "en" => 'Circle round is opened for payment :'.$circle->circle_code
                                    );
                                    $notify_response = $this->siteSettingsRepository->notification($userDevice[0]->device_tokens, $circle->circle_code, $content);
                                }
                                /******************Push notification*********************/
                            }
                        }
                    }
                }
                /********************************Send notification*********************/
            }
        }
        echo ' Successfull';
    }

    /**
     * Starting date of round is reached
     *
     * @param Json ApiRequest $request
     *
     * @return \Illuminate\Http\JsonResponse
     * @throws GeneralException
     */
    public function startDateOfRoundReached(Request $request)
    {
        Mail::raw('startDateOfRoundReached running', function ($message) {
            $message->to('testdevloper007@gmail.com');
        });
        //$current_date = '2020-07-19';
        $current_date = date('Y-m-d');
        $rounds = DB::select( DB::raw("SELECT * from (SELECT status,p_round, circle_rounds.circle_code,circle_rounds.id, payments_date, payments_grace_date, round_no, (case when p_round = 'weekly' then DATE_SUB(`payments_date`, INTERVAL 7 DAY) when p_round = 'bi-weekly' then DATE_SUB(`payments_date`, INTERVAL 14 DAY) when p_round = 'every-10-days' then DATE_SUB(`payments_date`, INTERVAL 10 DAY) when p_round = 'monthly' then DATE_SUB(`payments_date`, INTERVAL 30 DAY) end) main_date from circle_rounds join circles on circles.circle_code = circle_rounds.circle_code) a WHERE a.main_date = '".$current_date."' AND a.status < 3"));
        //$rounds = $this->circleRoundRepository->findByCondition(array('payments_date'=>$current_date));
        //dd($rounds);
        if(count($rounds)>0){
            foreach ($rounds as $key => $round) {
                /************************Send notification*********************/
                $circleUsers = $this->circleUserRepository->findByCondition(array('circle_code'=>$round->circle_code));
                if(count($circleUsers)>0){
                    foreach ($circleUsers as $userkey => $userval) {
                        $userPaid = $this->circleRoundPaymentRepository->findByCondition(array('circle_user_id'=>$userval->id,'circle_code'=>$round->circle_code,'round_id'=>$round->id,'trn_status'=>1));
                        if(count($userPaid)==0){
                            $userDetails = $this->userRepository->findByCondition(array('mobile_number'=>$userval->mobile_number));
                            if(count($userDetails)>0){
                                /*************email********************/
                                //$to = 'sayan@digitalaptech.com';
                                $to = $userDetails[0]->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>Dear <span style="">'.$userDetails[0]->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>Your joined circle '.($round->round_no).' round is starting now</p>
                                                       
                                                       <p>Circle Code: '.$round->circle_code.'</p>
                                                       <p>Round No.: '.($round->round_no).'</p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td style="font-family: sans-serif; color: #333; padding: 0px 10px 40px; font-size: 16px; line-height: 30px;">
                                                       <p>Stay connected with us. We appreciate very much your trust in us.</p>
                                                       <p>Please do not hesitate to contact us for any other requests.</p>
                                                    </td>
                                                </tr>';
                                        //echo $email_text; die;
                                $data['email_text'] = $email_text;    
                                Mail::send('mail.email_template', $data, function($message) use ($to)
                                                {
                                                    $message->from('testdevloper007@gmail.com', 'DANT');
                                                    $message->to($to);
                                                    $message->subject('Circles round starting');
                                                });
                                /*************email********************/
                                /******************Push notification*********************/
                                $userDevice = $this->userDeviceTokenRepository->findByCondition(array('user_id'=>$userDetails[0]->id));
                                if(count($userDevice)>0){
                                    $content = array(
                                        "en" => 'Circles round starting :'.$round->circle_code
                                    );
                                    $notify_response = $this->siteSettingsRepository->notification($userDevice[0]->device_tokens, $round->circle_code, $content);
                                }
                                /******************Push notification*********************/
                            }
                        }
                    }
                }
                /********************************Send notification*********************/
            }
        }
        echo ' Successfull';
    }

    /**
     * Circle reached starting date
     *
     * @param Json ApiRequest $request
     *
     * @return \Illuminate\Http\JsonResponse
     * @throws GeneralException
     */
    public function circleStartDateReached(Request $request)
    {
        Mail::raw('circleStartDateReached running', function ($message) {
            $message->to('testdevloper007@gmail.com');
        });
        $current_date = date('Y-m-d');
        $circles = $this->circleRepository->findByCondition(array('start_date'=>$current_date,'status'=>0));
        //dd($circles);
        if(count($circles)>0){
            foreach ($circles as $key => $circle) {
                /************************Send notification*********************/
                $circleUsers = $this->circleUserRepository->findByCondition(array('circle_code'=>$circle->circle_code));
                if(count($circleUsers)>0){
                    foreach ($circleUsers as $userkey => $userval) {
                        $userDetails = $this->userRepository->findByCondition(array('mobile_number'=>$userval->mobile_number));
                        if(count($userDetails)>0){
                            /*************email********************/
                            //$to = 'sayan@digitalaptech.com';
                            $to = $userDetails[0]->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>Dear <span style="">'.$userDetails[0]->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>Your joined circle is started now</p>                                                       
                                                   <p>Circle Code: '.$circle->circle_code.'</p>
                                                </td>
                                            </tr>
                                            <tr>
                                                <td style="font-family: sans-serif; color: #333; padding: 0px 10px 40px; font-size: 16px; line-height: 30px;">
                                                   <p>Stay connected with us. We appreciate very much your trust in us.</p>
                                                   <p>Please do not hesitate to contact us for any other requests.</p>
                                                </td>
                                            </tr>';
                                    //echo $email_text; die;
                            $data['email_text'] = $email_text;    
                            Mail::send('mail.email_template', $data, function($message) use ($to)
                                            {
                                                $message->from('testdevloper007@gmail.com', 'DANT');
                                                $message->to($to);
                                                $message->subject('Circles starting now');
                                            });
                            /*************email********************/
                            /******************Push notification*********************/
                            $userDevice = $this->userDeviceTokenRepository->findByCondition(array('user_id'=>$userDetails[0]->id));
                            if(count($userDevice)>0){
                                $content = array(
                                    "en" => 'Circles starting now :'.$circle->circle_code
                                );
                                $notify_response = $this->siteSettingsRepository->notification($userDevice[0]->device_tokens, $circle->circle_code, $content);
                            }
                            /******************Push notification*********************/
                        }
                    }
                }
                /********************************Send notification*********************/
            }
        }
        echo 'Successfull';
    }

    /**
     * 24 hours after circle reached starting date
     *
     * @param Json ApiRequest $request
     *
     * @return \Illuminate\Http\JsonResponse
     * @throws GeneralException
     */
    public function beforeCircleStartDateReached(Request $request)
    {
        Mail::raw('beforeCircleStartDateReached running', function ($message) {
            $message->to('testdevloper007@gmail.com');
        });
        $current_date = date('Y-m-d');
        $twentyfour_hour_before_start_date = date('Y-m-d', strtotime($current_date . ' +1 day'));
        $circles = $this->circleRepository->findByCondition(array('start_date'=>$twentyfour_hour_before_start_date,'status'=>0));
        //dd($circles);
        if(count($circles)>0){
            foreach ($circles as $key => $circle) {
                /************************Send notification*********************/
                $circleUsers = $this->circleUserRepository->findByCondition(array('circle_code'=>$circle->circle_code));
                if(count($circleUsers)>0){
                    foreach ($circleUsers as $userkey => $userval) {
                        $userDetails = $this->userRepository->findByCondition(array('mobile_number'=>$userval->mobile_number));
                        if(count($userDetails)>0){
                            /*************email********************/
                            //$to = 'sayan@digitalaptech.com';
                            $to = $userDetails[0]->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>Dear <span style="">'.$userDetails[0]->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>Your joined circle is started 24 hours after</p>                                                       
                                                   <p>Circle Code: '.$circle->circle_code.'</p>
                                                </td>
                                            </tr>
                                            <tr>
                                                <td style="font-family: sans-serif; color: #333; padding: 0px 10px 40px; font-size: 16px; line-height: 30px;">
                                                   <p>Stay connected with us. We appreciate very much your trust in us.</p>
                                                   <p>Please do not hesitate to contact us for any other requests.</p>
                                                </td>
                                            </tr>';
                                    //echo $email_text; die;
                            $data['email_text'] = $email_text;    
                            Mail::send('mail.email_template', $data, function($message) use ($to)
                                            {
                                                $message->from('testdevloper007@gmail.com', 'DANT');
                                                $message->to($to);
                                                $message->subject('Circles starting 24 hours after');
                                            });
                            /*************email********************/
                            /******************Push notification*********************/
                            $userDevice = $this->userDeviceTokenRepository->findByCondition(array('user_id'=>$userDetails[0]->id));
                            if(count($userDevice)>0){
                                $content = array(
                                    "en" => 'Circles starting 24 hours after :'.$circle->circle_code
                                );
                                $notify_response = $this->siteSettingsRepository->notification($userDevice[0]->device_tokens, $circle->circle_code, $content);
                            }
                            /******************Push notification*********************/
                        }
                    }
                }
                /********************************Send notification*********************/
            }
        }
        echo 'Successfull';
    }

    /**
     * 24 hours after circle reached starting date
     *
     * @param Json ApiRequest $request
     *
     * @return \Illuminate\Http\JsonResponse
     * @throws GeneralException
     */
    public function afterCircleStartDateReached(Request $request)
    {
        Mail::raw('afterCircleStartDateReached running', function ($message) {
            $message->to('testdevloper007@gmail.com');
        });
        $current_date = date('Y-m-d');
        $twentyfour_hour_after_start_date = date('Y-m-d', strtotime($current_date . ' -1 day'));
        $circles = $this->circleRepository->findByCondition(array('start_date'=>$twentyfour_hour_after_start_date,'status'=>0));
        //dd($circles);
        if(count($circles)>0){
            foreach ($circles as $key => $circle) {
                /************************Send notification*********************/
                $circleUsers = $this->circleUserRepository->findByCondition(array('circle_code'=>$circle->circle_code));
                if(count($circleUsers)>0){
                    foreach ($circleUsers as $userkey => $userval) {
                        $userDetails = $this->userRepository->findByCondition(array('mobile_number'=>$userval->mobile_number));
                        if(count($userDetails)>0){
                            /*************email********************/
                            //$to = 'sayan@digitalaptech.com';
                            $to = $userDetails[0]->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>Dear <span style="">'.$userDetails[0]->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>Your joined circle was started 24 hours ago</p>                                                       
                                                   <p>Circle Code: '.$circle->circle_code.'</p>
                                                </td>
                                            </tr>
                                            <tr>
                                                <td style="font-family: sans-serif; color: #333; padding: 0px 10px 40px; font-size: 16px; line-height: 30px;">
                                                   <p>Stay connected with us. We appreciate very much your trust in us.</p>
                                                   <p>Please do not hesitate to contact us for any other requests.</p>
                                                </td>
                                            </tr>';
                                    //echo $email_text; die;
                            $data['email_text'] = $email_text;    
                            Mail::send('mail.email_template', $data, function($message) use ($to)
                                            {
                                                $message->from('testdevloper007@gmail.com', 'DANT');
                                                $message->to($to);
                                                $message->subject('Circles starting  24 hours ago');
                                            });
                            /*************email********************/
                            /******************Push notification*********************/
                            $userDevice = $this->userDeviceTokenRepository->findByCondition(array('user_id'=>$userDetails[0]->id));
                            if(count($userDevice)>0){
                                $content = array(
                                    "en" => 'Circles starting  24 hours ago :'.$circle->circle_code
                                );
                                $notify_response = $this->siteSettingsRepository->notification($userDevice[0]->device_tokens, $circle->circle_code, $content);
                            }
                            /******************Push notification*********************/
                        }
                    }
                }
                /********************************Send notification*********************/
            }
        }
        echo 'Successfull';
    }

    /**
     * Before closure date of round is reached
     *
     * @param Json ApiRequest $request
     *
     * @return \Illuminate\Http\JsonResponse
     * @throws GeneralException
     */
    public function beforeClosureDateOfRoundReached(Request $request)
    {
        Mail::raw('beforeClosureDateOfRoundReached running', function ($message) {
            $message->to('testdevloper007@gmail.com');
        });
        //$current_date = '2020-07-19';
        $current_date = date('Y-m-d');
        $rounds = DB::select( DB::raw("SELECT * from (SELECT status, p_round, circle_rounds.circle_code,circle_rounds.id, payments_date, payments_grace_date, round_no, (case when p_round = 'weekly' then DATE_SUB(`payments_date`, INTERVAL 1 DAY) when p_round = 'bi-weekly' then DATE_SUB(`payments_date`, INTERVAL 2 DAY) when p_round = 'every-10-days' then DATE_SUB(`payments_date`, INTERVAL 1 DAY) when p_round = 'monthly' then DATE_SUB(`payments_date`, INTERVAL 3 DAY) end) main_date from circle_rounds join circles on circles.circle_code = circle_rounds.circle_code) a WHERE a.main_date = '".$current_date."' AND a.status < 3"));
        //$rounds = $this->circleRoundRepository->findByCondition(array('payments_date'=>$current_date));
        //dd($rounds);
        if(count($rounds)>0){
            foreach ($rounds as $key => $round) {
                /************************Send notification*********************/
                $circleUsers = $this->circleUserRepository->findByCondition(array('circle_code'=>$round->circle_code));
                if(count($circleUsers)>0){
                    foreach ($circleUsers as $userkey => $userval) {
                        $userPaid = $this->circleRoundPaymentRepository->findByCondition(array('circle_user_id'=>$userval->id,'circle_code'=>$round->circle_code,'round_id'=>$round->id,'trn_status'=>1));
                        if(count($userPaid)==0){
                            $userDetails = $this->userRepository->findByCondition(array('mobile_number'=>$userval->mobile_number));
                            if(count($userDetails)>0){
                                /*************email********************/
                                //$to = 'sayan@digitalaptech.com';
                                $to = $userDetails[0]->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>Dear <span style="">'.$userDetails[0]->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>Your joined circle '.($round->round_no).' round will be closing</p>
                                                       
                                                       <p>Circle Code: '.$round->circle_code.'</p>
                                                       <p>Round No.: '.($round->round_no).'</p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td style="font-family: sans-serif; color: #333; padding: 0px 10px 40px; font-size: 16px; line-height: 30px;">
                                                       <p>Stay connected with us. We appreciate very much your trust in us.</p>
                                                       <p>Please do not hesitate to contact us for any other requests.</p>
                                                    </td>
                                                </tr>';
                                        //echo $email_text; die;
                                $data['email_text'] = $email_text;    
                                Mail::send('mail.email_template', $data, function($message) use ($to)
                                                {
                                                    $message->from('testdevloper007@gmail.com', 'DANT');
                                                    $message->to($to);
                                                    $message->subject('Circles round will be closing');
                                                });
                                /*************email********************/
                                /******************Push notification*********************/
                                $userDevice = $this->userDeviceTokenRepository->findByCondition(array('user_id'=>$userDetails[0]->id));
                                if(count($userDevice)>0){
                                    $content = array(
                                        "en" => 'Circles round will be closing :'.$round->circle_code
                                    );
                                    $notify_response = $this->siteSettingsRepository->notification($userDevice[0]->device_tokens, $round->circle_code, $content);
                                }
                                /******************Push notification*********************/
                            }
                        }
                    }
                }
                /********************************Send notification*********************/
            }
        }
        echo ' Successfull';
    }

    /**
     * Closure date of round is reached
     *
     * @param Json ApiRequest $request
     *
     * @return \Illuminate\Http\JsonResponse
     * @throws GeneralException
     */
    public function closureDateOfRoundReached(Request $request)
    {
        Mail::raw('closureDateOfRoundReached running', function ($message) {
            $message->to('testdevloper007@gmail.com');
        });
        //$current_date = '2020-10-23';
        $current_date = date('Y-m-d');
        $rounds = Circle::join('circle_rounds', 'circles.circle_code','=','circle_rounds.circle_code')
                    ->where(['payments_date'=>$current_date])
                    ->where('status', '<' ,3)
                    ->get();
        //$rounds = $this->circleRoundRepository->findByCondition(array('payments_date'=>$current_date));
        //dd($rounds);
        if(count($rounds)>0){
            foreach ($rounds as $key => $round) {
                /************************Send notification*********************/
                $circleUsers = $this->circleUserRepository->findByCondition(array('circle_code'=>$round->circle_code));
                if(count($circleUsers)>0){
                    foreach ($circleUsers as $userkey => $userval) {
                        $userPaid = $this->circleRoundPaymentRepository->findByCondition(array('circle_user_id'=>$userval->id,'circle_code'=>$round->circle_code,'round_id'=>$round->id,'trn_status'=>1));
                        if(count($userPaid)==0){
                            $userDetails = $this->userRepository->findByCondition(array('mobile_number'=>$userval->mobile_number));
                            if(count($userDetails)>0){
                                /*************email********************/
                                //$to = 'sayan@digitalaptech.com';
                                $to = $userDetails[0]->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>Dear <span style="">'.$userDetails[0]->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>Your joined circle '.($round->round_no).' round closed now</p>
                                                       
                                                       <p>Circle Code: '.$round->circle_code.'</p>
                                                       <p>Round No.: '.($round->round_no).'</p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td style="font-family: sans-serif; color: #333; padding: 0px 10px 40px; font-size: 16px; line-height: 30px;">
                                                       <p>Stay connected with us. We appreciate very much your trust in us.</p>
                                                       <p>Please do not hesitate to contact us for any other requests.</p>
                                                    </td>
                                                </tr>';
                                        //echo $email_text; die;
                                $data['email_text'] = $email_text;    
                                Mail::send('mail.email_template', $data, function($message) use ($to)
                                                {
                                                    $message->from('testdevloper007@gmail.com', 'DANT');
                                                    $message->to($to);
                                                    $message->subject('Circles round closed now');
                                                });
                                /*************email********************/
                                /******************Push notification*********************/
                                $userDevice = $this->userDeviceTokenRepository->findByCondition(array('user_id'=>$userDetails[0]->id));
                                if(count($userDevice)>0){
                                    $content = array(
                                        "en" => 'Circles round closed now :'.$round->circle_code
                                    );
                                    $notify_response = $this->siteSettingsRepository->notification($userDevice[0]->device_tokens, $round->circle_code, $content);
                                }
                                /******************Push notification*********************/
                            }
                        }
                    }
                }
                /********************************Send notification*********************/
            }
        }
        echo ' Successfull';
    }
}
