<?php

namespace App\Http\Controllers\Api\V2;

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\CircleUserTempRepository;
use App\Repositories\CircleRoundPaymentRepository;
use App\Repositories\CircleDepositPaymentRepository;
use App\Repositories\CircleRoundRepository;
use App\Repositories\Auth\UserDeviceTokenRepository;
use App\Repositories\SiteSettingsRepository;
use App\Repositories\CurrencyRepository;
use App\Repositories\ReasonRepository;
use Illuminate\Support\Facades\Mail;
use Stripe\Stripe;

/**
 * Class CircleApiControllerV2.
 */
class UserCircleApiControllerV2 extends Controller
{
    /**
     * @var UserRepository
     * @var CircleUserTempRepository
     * @var CircleUserRepository
     * @var CircleRepository
     * @var CircleRoundPaymentRepository
     * @var CircleDepositPaymentRepository
     * @var CircleRoundRepository
     * @var UserDeviceTokenRepository
     * @var SiteSettingsRepository
     * @var CurrencyRepository
     * @var ReasonRepository
     */
    protected $userRepository;
    protected $circleUserTempRepository;
    protected $circleUserRepository;
    protected $circleRepository;
    protected $circleRoundPaymentRepository;
    protected $circleRoundRepository;
    protected $userDeviceTokenRepository;
    protected $siteSettingsRoundRepository;
    protected $curencyRepository;
    protected $reasonRepository;

    /**
     * CircleApiController constructor.
     *
     * @param UserRepository $userRepository
     * @param CircleUserTempRepository $circleUserTempRepository
     * @param CircleUserRepository $circleUserRepository
     * @param CircleRepository $circleRepository
     * @param CircleRoundPaymentRepository $circleRoundPaymentRepository
     * @param CircleDepositPaymentRepository $circleDepositPaymentRepository
     * @param CircleRoundRepository $circleRoundRepository
     * @param UserDeviceTokenRepository $userDeviceTokenRepository
     * @param SiteSettingsRepository $siteSettingsRepository
     * @param CurrencyRepository $curencyRepository
     * @param ReasonRepository $reasonRepository
     */
    public function __construct(UserRepository $userRepository, CircleRepository $circleRepository, CircleUserRepository $circleUserRepository, CircleUserTempRepository $circleUserTempRepository, CircleRoundPaymentRepository $circleRoundPaymentRepository, CircleRoundRepository $circleRoundRepository, CircleDepositPaymentRepository $circleDepositPaymentRepository, UserDeviceTokenRepository $userDeviceTokenRepository, SiteSettingsRepository $siteSettingsRepository, CurrencyRepository $curencyRepository, ReasonRepository $reasonRepository)
    {
        $this->userRepository = $userRepository;
        $this->circleUserRepository = $circleUserRepository;
        $this->circleUserTempRepository = $circleUserTempRepository;
        $this->circleRepository = $circleRepository;
        $this->circleRoundPaymentRepository = $circleRoundPaymentRepository;
        $this->circleRoundRepository = $circleRoundRepository;
        $this->circleDepositPaymentRepository = $circleDepositPaymentRepository;
        $this->userDeviceTokenRepository = $userDeviceTokenRepository;
        $this->siteSettingsRepository = $siteSettingsRepository;
        $this->curencyRepository = $curencyRepository;
        $this->reasonRepository = $reasonRepository;

        $this->apikey = "sk_test_3PQ7vkESqL4CuxVXJEXPrKep";
    }


    /**
     * Circle list status wise.
     *
     * @param Json ApiRequest $request
     *
     * @return \Illuminate\Http\JsonResponse
     * @throws GeneralException
     */
    public function circleList(Request $request)
    {
        $response = array();
        $output = array();
        $json = file_get_contents('php://input');
        $obj = json_decode($json, TRUE);

        $circle_status = (isset($obj['circle_status']) ? $obj['circle_status'] : '');
        $circle_type = (isset($obj['circle_type']) ? $obj['circle_type'] : '1');
        $authorization = explode('Bearer ', $request->header('Authorization'));
        $authorization = end($authorization);

        if($authorization){
            if($circle_status!='') {
                $user_authorize = $this->userRepository->findByCondition(array('remember_token'=>$authorization));
                //echo '<pre>'; print_r($user_authorize);die;
                if($user_authorize->count() > 0) {
                    if($circle_status == 0){
                        $circles = $this->circleRepository->getAllCircles($user_authorize[0]->id,'',$user_authorize[0]->mobile_number,$circle_status,$circle_type);
                    }  else {
                        $circles = $this->circleRepository->getAllCircles($user_authorize[0]->id,'',$user_authorize[0]->mobile_number,$circle_status);
                    }
                    
                    //echo '<pre>'; print_r($circles);die;
                    if($circles->count()>0) {
                        foreach ($circles as $key => $value) {
                            $adminDetails = $this->userRepository->findByCondition(array('id'=>$value->user_id));
                            //echo '<pre>'; print_r($adminDetails);die;
                            if($adminDetails->count()>0){
                               $value->admin = $adminDetails[0]->first_name;
                                foreach ($value->getUsers as $val) {
                                    $val->username = str_replace('(Admin)', '', $val->username);
                                    $val->reject_reason = '';
                                    if($val->accept_status==2){
                                        if($val->reason_id > 0 && $val->reason_id < 8){
                                            $reason_details = $this->reasonRepository->findByCondition(array('id'=>$val->reason_id));
                                            if($reason_details->count()>0){
                                                $val->reject_reason = $reason_details[0]->reason;
                                                $val->reject_reason_slug = $reason_details[0]->reason_alias;
                                            }
                                        } else {
                                            $val->reject_reason = $val->other_reason;
                                        }
                                    }
                                } 
                            }
                            //expected payment date calculation
                                $myDetails = $this->circleUserRepository->findByCondition(array('circle_code'=>$value->circle_code,'mobile_number'=>$user_authorize[0]->mobile_number));
                                //dd($myDetails);
                                $total_amount_get = 0;
                                $achieve = 0;
                                $myPosition = 0;
                                if($myDetails->count()>0){
                                    $myPosition = $myDetails[0]->preference+1;
                                }
                                $value->expected_payable_date = '';
                                for($i=1;$i<=$value->estimate_round;$i++){
                                    $total_amount_get += $value->round_set*$value->no_of_member;
                                    if($total_amount_get >= $value->target_achive){
                                        $achieve += 1;
                                        //echo $total_amount_get.'|'.$achieve.'='.$myPosition.'==';
                                        if($achieve == $myPosition){
                                            $myPayableRoundDetails = $this->circleRoundRepository->findByCondition(array('circle_code'=>$value->circle_code, 'round_no'=>$i));
                                            if($myPayableRoundDetails->count()>0){
                                                $value->expected_payable_date = date('d/m/Y',strtotime($myPayableRoundDetails[0]->payments_grace_date));
                                            }
                                        }
                                        $total_amount_get = ($total_amount_get - $value->target_achive);
                                    }
                                }
                            //expected payment date calculation

                            //expected next round payment date calculation
                            $value->expected_next_payment_date = '';    
                            $currentRound = $value->completed_round+1;
                            $currentRoundDetails = $this->circleRoundRepository->findByCondition(array('circle_code'=>$value->circle_code, 'round_no'=>$currentRound));
                            //dd($currentRoundDetails);
                            if($currentRoundDetails->count()>0){
                                $currentRoundPaymentDetails = $this->circleRoundPaymentRepository->findByCondition(array('circle_code'=>$value->circle_code, 'round_id'=>$currentRoundDetails[0]->id, 'circle_user_id'=>$myDetails[0]->id));
                                $value->expected_next_payment_date = date('d/m/Y',strtotime($currentRoundDetails[0]->payments_date));
                                if($currentRoundPaymentDetails->count()>0){
                                if($currentRoundPaymentDetails[0]->trn_status==1){
                                        $nextRoundDetails = $this->circleRoundRepository->findByCondition(array('circle_code'=>$value->circle_code, 'round_no'=>$currentRound+1));
                                        if($nextRoundDetails->count()>0){
                                            $value->expected_next_payment_date = date('d/m/Y',strtotime($nextRoundDetails[0]->payments_date));
                                        }
                                    }
                                }
                            }
                            
                            
                            //expected next round payment date calculation 

                        }

                        $status = 100;
                        $statusCode = 200;
                        $message = 1036;
                        $output = $circles;
                    } else {
                        $status = 300;
                        $statusCode = 401;
                        $message = 1037;
                    }
                } else {
                    $status = 300;
                    $statusCode = 401;
                    $message = 1001;
                }
            } else {
                $status = 300;
                $statusCode = 404;
                $message = 1038;
            }
        } else {
            $status = 300;
            $statusCode = 404;
            $message = 1001;
        }
        
        $response = array('status'=>$status, 'message'=>$message, 'result'=>$output);
        
        return response()->json($response);
    }

        /**
     * Circle remove request.
     *
     * @param Json ApiRequest $request
     *
     * @return \Illuminate\Http\JsonResponse
     * @throws GeneralException
     */
    public function circleRemove(Request $request)
    {
        $response = array();
        $output = array();
        $json = file_get_contents('php://input');
        $obj = json_decode($json, TRUE);

        $circle_code = (isset($obj['circle_code']) ? $obj['circle_code'] : '');
        $mobile_number = (isset($obj['mobile_number']) ? $obj['mobile_number'] : '');
        $authorization = explode('Bearer ', $request->header('Authorization'));
        $authorization = end($authorization);
        $other_reason = 'Circle cancelled by Circle Admin';
        if($authorization){
            if($circle_code!='' && $mobile_number!='') {
                $user_authorize = $this->userRepository->findByCondition(array('remember_token'=>$authorization));
                //print_r($authorization);die;
                if(count($user_authorize) > 0) {
                    $update = $this->circleUserRepository->updateByCondition(array('circle_code'=>$circle_code,'mobile_number'=>$mobile_number),array('accept_status'=>2,'reason_id'=>9,'other_reason'=>$other_reason,'status_date'=>date('Y-m-d')));
                    $update = $this->circleRepository->updateByCondition(array('circle_code'=>$circle_code),array('status'=>4));
                    $circles = $this->circleUserRepository->findByCondition(array('circle_code'=>$circle_code));
                    if($circles){
                        foreach ($circles as $key => $value) {
                            if($user_authorize[0]->mobile_number != $value->mobile_number){
                                $userDetails = $this->userRepository->findByCondition(array('mobile_number'=>$value->mobile_number));
                                if($userDetails->count()>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>Votre cercle est suspendu car un des invités a refusé de le rejoindre.</p>
                                                           <p>Veuillez trouver ci-dessous les informations du Cercle:</p>
                                                           
                                                           <p>Code du cercle: '.$value->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>Restez connectés! Nous apprécions beaucoup la confiance que vous nous accordez.</p>
                                                           <p>N\'hésitez pas à nous contacter pour toute information.</p>
                                                        </td>
                                                    </tr>';
                                            //echo $email_text; die;
                                    $data['email_text'] = $email_text;    
                                    Mail::send('mail.email_template', $data, function($message) use ($to)
                                    {
                                        $message->from(get_from_email(), 'DART APP');
                                        $message->to($to);
                                        $message->subject('Refus de rejoindre un Cercle');
                                    });
                                    /*************email********************/

                                    /****************notification**********************/
                                    $userDevice = $this->userDeviceTokenRepository->findByCondition(array('user_id'=>$userDetails[0]->id));
                                    $content = array(
                                        "en" => 'DART '.$user_authorize[0]->first_name.' a refusé de rejoindre le Cercle portant le numéro:'.$circle_code
                                    );
                                    $notify_response = $this->siteSettingsRepository->notification($userDevice[0]->device_tokens, $circle_code, $content);
                                    /****************notification**********************/
                                }
                            }
                        }
                    }
                    $status = 100;
                    $statusCode = 200;
                    $message = 1039;
                } else {
                    $status = 300;
                    $statusCode = 401;
                    $message = 1001;
                }
            } else {
                $status = 300;
                $statusCode = 404;
                $message = 1040;
            }
        } else {
            $status = 300;
            $statusCode = 404;
            $message = 1001;
        }
        
        $response = array('status'=>$status, 'message'=>$message, 'result'=>$output);
        
        return response()->json($response);
    }

    /**
     * On Going Circle Details.
     *
     * @param Json ApiRequest $request
     *
     * @return \Illuminate\Http\JsonResponse
     * @throws GeneralException
     */
    public function onGoingCircleDetails(Request $request)
    {
        $response = array();
        $output = array();
        $circleCurrentRoundPaymentDetails = array();
        $json = file_get_contents('php://input');
        $obj = json_decode($json, TRUE);

        $circle_code = (isset($obj['circle_code']) ? $obj['circle_code'] : '');
        $authorization = explode('Bearer ', $request->header('Authorization'));
        $authorization = end($authorization);

        if($authorization){
            if($circle_code!='') {
                $user_authorize = $this->userRepository->findByCondition(array('remember_token'=>$authorization));
                
                if(count($user_authorize) > 0) {
                    $circleDetails = $this->circleRepository->findByCondition(array('circle_code'=>$circle_code));
                    if(count($circleDetails)>0){
                        $status = 100;
                        $statusCode = 200;
                        $message = 'Cicle details';
                        $output = $circleDetails[0];
                        $output['current_round'] = (($circleDetails[0]->estimate_round - $circleDetails[0]->completed_round)>0) ? ($circleDetails[0]->completed_round + 1) : $circleDetails[0]->estimate_round;

                        $circleCurrentRoundDetails = $this->circleRoundRepository->findByCondition(array('circle_code'=>$circle_code, 'round_no'=>$output['current_round']));
                        if(count($circleCurrentRoundDetails)>0){
                            if($circleCurrentRoundDetails[0]->round_no>0){
                                $output['previous_round_payment_date'] = '';
                                $circlePrevRoundDetails = $this->circleRoundRepository->findByCondition(array('circle_code'=>$circle_code, 'round_no'=>$output['current_round']-1));
                                if(count($circlePrevRoundDetails)>0){
                                    $output['previous_round_payment_date'] = date('d/m/Y',strtotime($circlePrevRoundDetails[0]->payments_date));
                                }
                            }
                            $output['expected_next_payment_date'] = date('d/m/Y',strtotime($circleCurrentRoundDetails[0]->payments_date));



                            if($output['current_round']==1){
                                $output['round_start_date'] = date('d/m/Y',strtotime($circleDetails[0]->start_date));
                            } else {
                                $output['round_start_date'] = $output['expected_next_payment_date'];
                            }


                            if($circleDetails[0]->p_round == 'weekly') {
                                $count = 7;
                            } elseif($circleDetails[0]->p_round == 'bi-weekly') {
                                $count = 14;
                            } else if($circleDetails[0]->p_round == 'monthly') {
                                $count = 30;
                            } else {
                                $count = 10;
                            }
                            $end_date = date('d/m/Y', strtotime(date('Y-m-d',strtotime(str_replace('/', '-', $output['round_start_date']))). ' + '.$count.' days'));
                            $output['round_end_date'] = $end_date;

                            $circleCurrentRoundPaymentDetails = $this->circleRoundPaymentRepository->getOnGoingCircleUsers($circle_code,$circleCurrentRoundDetails[0]->id);
                            
                            //echo '<pre>';print_r($circleCurrentRoundPaymentDetails);die;
                            $round_complete = [];
                            for($i = 1; $i<=$circleDetails[0]->completed_round; $i++){
                                $round_complete[$i-1]['round'] = $i;
                                $payment_withdraw = $this->circleRoundPaymentRepository->getRoundWithdraw($circle_code,$i);
                                $round_complete[$i-1]['reciever_msg'] = "";
                                if($payment_withdraw){
                                    //dd($payment_withdraw);
                                    $round_complete[$i-1]['reciever_msg'] = "Le collecteur de ce round était ".$payment_withdraw->username." le ".date('d.m.Y',strtotime($payment_withdraw->created_at));
                                }
                                $completedRoundDetails = $this->circleRoundRepository->findByCondition(array('circle_code'=>$circle_code, 'round_no'=>$i));
                                if($completedRoundDetails){
                                    $round_complete[$i-1]['completion_date'] = date('d/m/Y',strtotime($completedRoundDetails[0]->payments_date));
                                }
                            }
                            $output['round_complete'] = $round_complete; 
                            $output['request_accept_status'] = 0; 
                            $output['is_admin'] = 0; 
                            $output['login_user_current_round_payment_status'] = 0; 
                            $output['current_round_payment_date'] = date('d/m/Y',strtotime($circleCurrentRoundDetails[0]->payments_date));
                            
                            /*****************current round recieve*************************/
                            $target_amount1 = $circleDetails[0]->target_achive;
                            $round_amount1  = $circleDetails[0]->round_set;
                            $member_count1  = $circleDetails[0]->no_of_member;
                            $round_number1  = $output['current_round'];
                            $total_amount1  = $member_count1*$round_amount1*$round_number1; 
                            $countwithdraw = $this->circleRoundPaymentRepository->findByCondition(array('circle_code'=>$circle_code, 'payment_type'=>2));


                            $output['userWillRecieveCurrentRound'] = ""; 
                            /*if(($total_amount1-($countwithdraw->count()*$target_amount1))>=$target_amount1)
                            {
                                $userRecieve = $this->circleUserRepository->findUserGetWithdrawal(array('circle_code'=>$circle_code),$countwithdraw->count());
                                if((($circleDetails[0]->estimate_round - $circleDetails[0]->completed_round)>0)){
                                    $output['userWillRecieveCurrentRound'] = "The reciever of this round is ".$userRecieve->username." and expected on ".date('d/m/Y',strtotime($circleCurrentRoundDetails[0]->payments_grace_date));
                                }
                            }*/

                            /*if(($total_amount1 >= $target_amount1))
                            {
                                $remainder_dividend = (int)ceil($total_amount1/$target_amount1);
                                $preference_who_get = $remainder_dividend - 1;
                                $userRecieve = $this->circleUserRepository->findUserGetWithdrawal(array('circle_code'=>$circle_code),$preference_who_get);
                                if($userRecieve){
                                    if((($circleDetails[0]->estimate_round - $circleDetails[0]->completed_round)>0)){
                                        $output['userWillRecieveCurrentRound'] = "The reciever of this round is ".$userRecieve->username." and expected on ".date('d/m/Y',strtotime($circleCurrentRoundDetails[0]->payments_grace_date));
                                    } 
                                }
                                
                            }*/
                            /*****************current round recieve*************************/
                            $circles = $this->circleUserRepository->findByCondition(array('circle_code'=>$circle_code));
                            $circlesAdmin = $this->userRepository->findByCondition(array('id'=>$circleDetails[0]->user_id));
                            //dd($circlesAdmin);
                            if($circlesAdmin[0]->mobile_number==$user_authorize[0]->mobile_number){
                                $output['is_admin'] = 1; 
                            }
                            $output['admin_mobile'] = $circlesAdmin[0]->mobile_number; 
                            $output['admin_mobile_code'] = $circlesAdmin[0]->mobile_country_code; 
                            $output['admin'] = $circlesAdmin[0]->first_name; 
                            $output['login_user_mobile'] = $user_authorize[0]->mobile_number;
                            $output['login_user_mobile_code'] = $user_authorize[0]->mobile_country_code;

                            //expected payment date calculation
                            $myDetails = $this->circleUserRepository->findByCondition(array('circle_code'=>$circle_code, 'mobile_number'=>$user_authorize[0]->mobile_number));
                            //dd($myDetails);
                            $total_amount_get = 0;
                            $achieve = 0;
                            $myPosition = 0;
                            if($myDetails->count()>0){
                                $myPosition = $myDetails[0]->preference+1;
                            }

                            for($i=1;$i<=$circleDetails[0]->estimate_round;$i++){
                                $total_amount_get += $circleDetails[0]->round_set*$circleDetails[0]->no_of_member;
                                if($total_amount_get >= $circleDetails[0]->target_achive){
                                    $achieve += 1;
                                    //echo $total_amount_get.'|'.$achieve.'='.$myPosition.'==';
                                    if($achieve == $myPosition){
                                        $myPayableRoundDetails = $this->circleRoundRepository->findByCondition(array('circle_code'=>$circle_code, 'round_no'=>$i));
                                        if($myPayableRoundDetails->count()>0){
                                            $output['expected_payable_date'] = date('d/m/Y',strtotime($myPayableRoundDetails[0]->payments_grace_date));
                                        }
                                    }
                                    if($output['current_round']==$i){
                                        $userRecieve = $this->circleUserRepository->findUserGetWithdrawal(array('circle_code'=>$circle_code),($achieve-1));
                                        if($userRecieve){
                                            if((($circleDetails[0]->estimate_round - $circleDetails[0]->completed_round)>0)){
                                                $output['userWillRecieveCurrentRound'] = "Le collecteur de ce round est ".$userRecieve->username." et prévu le ".date('d/m/Y',strtotime($circleCurrentRoundDetails[0]->payments_grace_date));
                                                if($user_authorize[0]->mobile_number == $userRecieve->mobile_number){
                                                    if($user_authorize[0]->iban == ""){
                                                        $output['userWillRecieveCurrentRoundIBANMsg'] = "Please fill your IBAN to withdraw amount";
                                                    }
                                                }
                                            } 
                                        }
                                    }
                                    $total_amount_get = ($total_amount_get - $circleDetails[0]->target_achive);
                                }
                            }
                            //expected payment date calculation
                            $output['refund_amount'] = 0;
                            $output['receive_amount'] = 0;
                            $output['refund_status'] = 0;
                            $output['is_rejected'] = false;
                            $output['termination_request_sent'] = 0; 
                            $output['circleDepositdPaymentStatus'] = 0;
                            if($circles){
                                foreach ($circles as $key => $value) {
                                    $value->username = str_replace('(Admin)', '', $value->username);
                                    $circleCurrentRoundPaymentDetails = $this->circleRoundPaymentRepository->findByCondition(array('circle_code'=>$circle_code, 'round_id'=>$circleCurrentRoundDetails[0]->id,'circle_user_id'=>$value->id,'payment_type'=>1));
                                    
                                    $value->current_round_payment_status = 0;
                                    if($circleCurrentRoundPaymentDetails->count()>0){
                                        $value->current_round_payment_status = $circleCurrentRoundPaymentDetails[0]['trn_status'];
                                    }
                                    if($value->mobile_number==$user_authorize[0]->mobile_number){
                                        $output['request_accept_status'] = $value->accept_status; 
                                        
                                        if($circleCurrentRoundPaymentDetails->count()>0){
                                            $output['login_user_current_round_payment_status'] = $circleCurrentRoundPaymentDetails[0]['trn_status'];
                                            if(count($round_complete)>0){
                                                $nextRoundDetails = $this->circleRoundRepository->findByCondition(array('circle_code'=>$circle_code, 'round_no'=>$round_complete[0]['round']+1));
                                                if($nextRoundDetails->count()>0){
                                                    $output['expected_next_payment_date'] = date('d/m/Y',strtotime($nextRoundDetails[0]->payments_date));
                                                }
                                            }
                                        }
                                        $output['termination_request_sent'] = $value->termination_request_status; 

                                        $circleDepositdPaymentDetails = $this->circleDepositPaymentRepository->findByCondition(array('circle_code'=>$circle_code,'circle_user_id'=>$value->id));
                                        if($circleDepositdPaymentDetails->count()>0){
                                            $output['circleDepositdPaymentStatus'] = 1;
                                        }
                                    }
                                    if($value->reason_id > 0){
                                        $reason_details = $this->reasonRepository->findByCondition(array('id'=>$value->reason_id));
                                        if($reason_details->count()>0){
                                            $value->reason_data = $reason_details[0]->reason;
                                        }
                                    }
                                    if($value->accept_status == 2){
                                        $output['is_rejected'] = true;
                                    }
                                    
                                    $circle_user_details = $this->userRepository->findByCondition(array('mobile_number'=>$value->mobile_number));
                                    $value->user_email = '';
                                    $value->deviceToken = '';
                                    if($circle_user_details->count()>0){
                                        $value->user_email = $circle_user_details[0]->email;
                                        /*********************device token************************/
                                        $devicetokenExist = $this->userDeviceTokenRepository->findByCondition(array('user_id'=>$circle_user_details[0]->id));
                                        if($devicetokenExist->count()>0){
                                            $value->deviceToken = $devicetokenExist[0]->device_tokens;
                                        }
                                        /*********************device token************************/
                                    }
                                     
                                    /********************************Report for Suspend screen*********************************/
                                    if($circleDetails[0]->status==3){
                                        $total_paid = 0;
                                        $totalPaymentDetails = $this->circleRoundPaymentRepository->findByCondition(array('circle_code'=>$circle_code, 'circle_user_id'=>$value->id,'payment_type'=>1,'trn_status'=>1));
                                        foreach ($totalPaymentDetails as $kPaymentDetails => $vPaymentDetails) {
                                            $total_paid = $total_paid + $vPaymentDetails->amount;
                                        }
                                        $value->totalPaymentDetails = $total_paid;
                                        $withdrawDetails = $this->circleRoundPaymentRepository->findByCondition(array('circle_code'=>$circle_code, 'circle_user_id'=>$value->id,'payment_type'=>2,'trn_status'=>1));
                                        $value->withdrawDetails = 0;
                                        if($withdrawDetails->count()>0){
                                            $value->withdrawDetails = $withdrawDetails[0]->amount;
                                        }

                                        $refundDetails = $this->circleRoundPaymentRepository->findByCondition(array('circle_code'=>$circle_code, 'circle_user_id'=>$value->id,'payment_type'=>3));
                                        if($refundDetails->count()>0){
                                            $output['refund_status'] = 1;
                                        }

                                        $value->balance = 0;
                                        $value->balance = ($value->totalPaymentDetails - $value->withdrawDetails);
                                        if($value->mobile_number==$user_authorize[0]->mobile_number){
                                            if($value->withdrawDetails > 0){
                                                if($output['refund_status']==0){
                                                    $output['refund_amount'] = abs($value->balance);
                                                }
                                            } else {
                                                $output['receive_amount'] = abs($value->balance);  
                                            }
                                        }
                                        
                                    }
                                    /********************************Report for Suspend screen*********************************/

                                }
                            }
                            $output['circleUsers'] = $circles;
                        } else {
                            $status = 300;
                            $statusCode = 401;
                            $message = 1041;
                        }
                    }  else {
                        $status = 300;
                        $statusCode = 401;
                        $message = 1037;
                    }
                } else {
                    $status = 300;
                    $statusCode = 401;
                    $message = 1001;
                }
            } else {
                $status = 300;
                $statusCode = 404;
                $message = 1034;
            }
        } else {
            $status = 300;
            $statusCode = 404;
            $message = 1001;
        }
        
        $response = array('status'=>$status, 'message'=>$message, 'result'=>$output);
        
        return response()->json($response);
    }
}
