<?php

namespace App\Http\Controllers\Api;

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\CircleUserTempRepository;
use App\Repositories\CircleUserRepository;
use App\Repositories\CircleRoundRepository;
use App\Repositories\SiteSettingsRepository;
use App\Repositories\Auth\UserDeviceTokenRepository;
use App\Repositories\MobileCountryCodeRepository;
use Illuminate\Support\Facades\Mail;

/**
 * Class CircleApiController.
 */
class CircleApiController extends Controller
{
    /**
     * @var UserRepository
     * @var CircleUserTempRepository
     * @var CircleUserRepository
     * @var CircleRepository
     * @var CircleRoundRepository
     * @var SiteSettingsRepository
     * @var UserDeviceTokenRepository
     * @var MobileCountryCodeRepository
     */
    protected $userRepository;
    protected $circleUserTempRepository;
    protected $circleUserRepository;
    protected $circleRepository;
    protected $circleRoundRepository;
    protected $siteSettingsRoundRepository;
    protected $userDeviceTokenRepository;
    protected $mobileCountryCodeRepository;

    /**
     * CircleApiController constructor.
     *
     * @param ApiRepository $apiRepository
     * @param UserRepository $userRepository
     * @param CircleUserRepository $circleUserRepository
     * @param CircleRepository $circleRepository
     * @param SiteSettingsRepository $siteSettingsRepository
     * @param UserDeviceTokenRepository $userDeviceTokenRepository
     * @param MobileCountryCodeRepository $mobileCountryCodeRepository
     */
    public function __construct(UserRepository $userRepository, CircleUserTempRepository $circleUserTempRepository, CircleRepository $circleRepository, CircleUserRepository $circleUserRepository, CircleRoundRepository $circleRoundRepository, SiteSettingsRepository $siteSettingsRepository, UserDeviceTokenRepository $userDeviceTokenRepository, MobileCountryCodeRepository $mobileCountryCodeRepository)
    {
        $this->userRepository = $userRepository;
        $this->circleUserTempRepository = $circleUserTempRepository;
        $this->circleUserRepository = $circleUserRepository;
        $this->circleRepository = $circleRepository;
        $this->circleRoundRepository = $circleRoundRepository;
        $this->siteSettingsRepository = $siteSettingsRepository;
        $this->userDeviceTokenRepository = $userDeviceTokenRepository;
        $this->mobileCountryCodeRepository = $mobileCountryCodeRepository;
    }


    /**
     * Search by mobile number.
     *
     * @param Json ApiRequest $request
     *
     * @return \Illuminate\Http\JsonResponse
     * @throws GeneralException
     */
    public function searchByMobile(Request $request)
    {
        $response = array();
        $output = array();
        $json = file_get_contents('php://input');
        $obj = json_decode($json, TRUE);
        $mobile = $obj['mobile'];
        $circle_code = $obj['circle_code'];
        $authorization = explode('Bearer ', $request->header('Authorization'));
        $authorization = end($authorization);

        if($authorization){
            if($mobile && $circle_code) {
                $user_authorize = $this->userRepository->findByCondition(array('remember_token'=>$authorization));
                //print_r($authorization);die;
                if(count($user_authorize) > 0) {
                    if($user_authorize[0]->mobile_number != $mobile){
                        $users = $this->userRepository->findByCondition(array('mobile_number'=>$mobile, 'confirmed'=>1));
                        if(count($users)>0) {
                            $circleusers = $this->circleUserTempRepository->findByCondition(array('circle_code'=>$circle_code, 'mobile_number'=>$mobile));
                            //echo '<pre>'; print_r($users);die;
                            if(count($circleusers)==0) {
                                $users[0]['key'] = $users[0]->id;
                                $status = 100;
                                $statusCode = 200;
                                $message = 'User found';
                                $output = $users[0];
                            } else {
                                $status = 300;
                                $statusCode = 401;
                                $message = "Already assigned to this Circle";
                            }
                        } else {
                            $status = 300;
                            $statusCode = 401;
                            $message = "Non registered number";
                        }
                    } else {
                        $status = 300;
                        $statusCode = 401;
                        $message = "You can't add your own number";
                    }
                } else {
                    $status = 300;
                    $statusCode = 401;
                    $message = "Unauthenticated user";
                }
            } else {
                $status = 300;
                $statusCode = 404;
                $message = "Please fill a number";
            }
        } else {
            $status = 300;
            $statusCode = 404;
            $message = "Authorization required";
        }
        
        $response = array('status'=>$status, 'message'=>$message, 'result'=>$output);
        
        return response()->json($response);
    }

    /**
     * Create Circle User.
     *
     * @param Json ApiRequest $request
     *
     * @return \Illuminate\Http\JsonResponse
     * @throws GeneralException
     */
    public function create_circle_user(Request $request)
    {
        $response = array();
        $output = array();
        $json = file_get_contents('php://input');
        $obj = json_decode($json, TRUE);
        $user_info = $obj['user_info'];
        //echo '<pre>'; print_r($user_info); die;
        $circle_code = $obj['circle_code'];
        $flag = $obj['flag']; //1->site user, 2->contact list user
        $authorization = explode('Bearer ', $request->header('Authorization'));
        $authorization = end($authorization);
        $instMe = '';
        $phoneBookUser = '';
        $already_assigened = [];
        $special_char_no = [];
        $inst = [];
        if($authorization){
            if($user_info && $circle_code && $flag) {
                $user_authorize = $this->userRepository->findByCondition(array('remember_token'=>$authorization));
                //print_r($user_authorize);die;
                if(count($user_authorize) > 0) {
                    if($flag==2){
                        $delete = $this->circleUserTempRepository->deleteByCondition(array('circle_code'=>$circle_code, 'flag'=>2));
                    }
                    $circlecount = $this->circleUserTempRepository->findCount(array('circle_code'=>$circle_code));
                    if($circlecount==0){//Insert me as a Circle user
                        $instArr = array(
                                            'user_id'=>$user_authorize[0]->id,
                                            'username'=>$user_authorize[0]->first_name.'(Admin)',
                                            'mobile_country_code'=>$user_authorize[0]->mobile_country_code,
                                            'mobile_number'=>$user_authorize[0]->mobile_number,
                                            'flag'=>0,
                                            'circle_code'=>$circle_code,
                                            'preference'=>0,
                                        );
                        $instMe = $this->circleUserTempRepository->create($instArr);
                    }
                    if(count($user_info)>0){
                        $mobileCountryCodes = $this->mobileCountryCodeRepository->findByCondition();
                        foreach ($user_info as $key => $userinfo) {

                            if (preg_match('/[\'^£$%&*()}{@#~?><>,|=_¬-]/', $userinfo['mobile'])){
                                $special_char_no[] = $userinfo['mobile'];
                            } else {
                                $circlecount = $this->circleUserTempRepository->findCount(array('circle_code'=>$circle_code));
                                $mobile_country_code = '';
                                if (strpos($userinfo['mobile'], '+') !== false) {
                                    foreach ($mobileCountryCodes as $codekey => $code) {
                                        if (strstr($userinfo['mobile'], '+'.$code->phonecode) != "") {
                                            $mobile_country_code = '+'.$code->phonecode;
                                        }
                                        $userinfo['mobile'] = str_replace("+".$code->phonecode, "", $userinfo['mobile']);
                                    }
                                } elseif (substr($userinfo['mobile'], 0, 1) == 0) {
                                    $mobile_country_code = 0;
                                }
                                $circleusers = $this->circleUserTempRepository->findByCondition(array('circle_code'=>$circle_code, 'mobile_number'=>$userinfo['mobile']));
                                //echo '<pre>'; print_r($circleusers);
                                $phoneBookUserExist = $this->userRepository->findByCondition(array('mobile_number'=>$userinfo['mobile']));
                                //echo '<pre>'; print_r($phoneBookUserExist);die;
                                $phoneBookUser = '';
                                if($phoneBookUserExist->count()>0){
                                    $phoneBookUser = $phoneBookUserExist[0]->first_name;
                                }
                                if($circleusers->count()==0) {
                                    
                                    $instArrUsr = array(
                                                        'user_id'=>$user_authorize[0]->id,
                                                        'username'=> (($phoneBookUser != '') ? $phoneBookUser : $userinfo['username']),
                                                        'mobile_country_code'=>$mobile_country_code,
                                                        'mobile_number'=>$userinfo['mobile'],
                                                        'flag'=>$flag,
                                                        'circle_code'=>$circle_code,
                                                        'preference'=>$circlecount,
                                                    );
                                    $inst = $this->circleUserTempRepository->create($instArrUsr);
                                } else {
                                    $already_assigened[] = $userinfo['mobile'];
                                }
                            }
                            
                        }
                    }
                    if($already_assigened && $flag==1){
                        if(count($user_info) == count($already_assigened)){
                            $status = 300;
                            $statusCode = 404;
                            $message = "Already assigned to this Circle";
                        } else {
                            $status = 100;
                            $statusCode = 200;
                            $output = $inst;
                            $message = "User assigned successful";
                            //$message = implode(',', $already_assigened)." already assigned to this Circle";
                        }
                    } elseif($special_char_no){
                        if(count($user_info) == count($special_char_no)){
                            $status = 300;
                            $statusCode = 404;
                            $message = implode(',', $special_char_no)." is not a valid number, so could not be assigned";
                        } else {
                            $status = 100;
                            $statusCode = 200;
                            $output = $inst;
                            $message = implode(',', $special_char_no)." is not a valid number, so could not be assigned";
                        }
                    } elseif(!$inst){
                        $status = 100;
                        $statusCode = 200;
                        $message = "User list updated";
                    } else {
                        $status = 100;
                        $statusCode = 200;
                        $output = $inst;
                        $message = 'User assigned successful';
                    }
                } else {
                    $status = 300;
                    $statusCode = 404;
                    $message = "Unauthenticated user";
                }
            } else {
                $status = 300;
                $statusCode = 404;
                $message = "Please fill a number";
            }
        } else {
            $status = 300;
            $statusCode = 404;
            $message = "Authorization required";
        }
        $response = array('status'=>$status, 'message'=>$message, 'result'=>$output);        
        return response()->json($response);
    }

    /**
     * Delete Circle User.
     *
     * @param Json ApiRequest $request
     *
     * @return \Illuminate\Http\JsonResponse
     * @throws GeneralException
     */
    public function delete_circle_user(Request $request)
    {
        $response = array();
        $output = array();
        $json = file_get_contents('php://input');
        $obj = json_decode($json, TRUE);
        $mobile_number = $obj['mobile_number'];
        //echo '<pre>'; print_r($obj); die;
        $circle_code = $obj['circle_code'];
        $authorization = explode('Bearer ', $request->header('Authorization'));
        $authorization = end($authorization);
        if($authorization){
            if($mobile_number && $circle_code) {
                $user_authorize = $this->userRepository->findByCondition(array('remember_token'=>$authorization));
                //print_r($authorization);die;
                if(count($user_authorize) > 0) {
                    $mobileCountryCodes = $this->mobileCountryCodeRepository->findByCondition();
                    $mobile_country_code = '';
                    if (strpos($mobile_number, '+') !== false) {
                        foreach ($mobileCountryCodes as $codekey => $code) {
                            $mobile_number = str_replace("+".$code->phonecode, "", $mobile_number);
                        }
                    } elseif (substr($mobile_number, 0, 1) == 0) {
                        $mobile_number = ltrim($mobile_number, '0'); 
                    }   
                    $delete = $this->circleUserTempRepository->deleteByCondition(array('circle_code'=>$circle_code,'mobile_number'=>$mobile_number));
                    $status = 100;
                    $statusCode = 200;
                    $message = 'User deleted successful';
                } else {
                    $status = 300;
                    $statusCode = 404;
                    $message = "Unauthenticated user";
                }
            } else {
                $status = 300;
                $statusCode = 404;
                $message = "Please send a number";
            }
        } else {
            $status = 300;
            $statusCode = 404;
            $message = "Authorization required";
        }
        $response = array('status'=>$status, 'message'=>$message, 'result'=>$output);        
        return response()->json($response);
    }

    /**
     * Rearrange Circle User.
     *
     * @param Json ApiRequest $request
     *
     * @return \Illuminate\Http\JsonResponse
     * @throws GeneralException
     */
    public function rearrangeCircle_user(Request $request)
    {
        $response = array();
        $output = array();
        $json = file_get_contents('php://input');
        $obj = json_decode($json, TRUE);
        $reorder = explode(',', $obj['reorder']);
        $circle_code = $obj['circle_code'];
        $plist = explode(',', $obj['plist']);
        $authorization = explode('Bearer ', $request->header('Authorization'));
        $authorization = end($authorization);

        if($authorization){
            if($circle_code) {
                $user_authorize = $this->userRepository->findByCondition(array('remember_token'=>$authorization));
                //print_r($authorization);die;
                if(count($user_authorize) > 0) {
                    $finalOrderUsers = [];
                    if($obj['reorder']){
                        foreach ($plist as $key => $value) {
                            $findUser = $this->circleUserTempRepository->findByCondition(array('id'=>$value));
                            if($findUser->count()>0){
                                array_push($finalOrderUsers, $findUser[0]);
                            }
                        } 
                        if(count($finalOrderUsers)>0){
                            $this->circleUserTempRepository->deleteByCondition(array('circle_code'=>$circle_code));
                            foreach ($finalOrderUsers as $key => $value) {
                                $instArr = array(
                                                    'user_id'=>$value->user_id,
                                                    'username'=>$value->username,
                                                    'mobile_number'=>$value->mobile_number,
                                                    'mobile_country_code'=>$value->mobile_country_code,
                                                    'flag'=>$value->flag,
                                                    'circle_code'=>$value->circle_code,
                                                    'preference'=>$key,
                                                );
                                $inst = $this->circleUserTempRepository->create($instArr);
                            }
                        }
                    }
                    $findAllUser = $this->circleUserTempRepository->findByCondition(array('circle_code'=>$circle_code),'ASC');
                    $output = $findAllUser;
                    $status = 100;
                    $statusCode = 200;
                    $message = 'User reorder successful';
                } else {
                    $status = 300;
                    $statusCode = 404;
                    $message = "Unauthenticated user";
                }
            } else {
                $status = 300;
                $statusCode = 404;
                $message = "Please send a order";
            }
        } else {
            $status = 300;
            $statusCode = 404;
            $message = "Authorization required";
        }
        $response = array('status'=>$status, 'message'=>$message, 'result'=>$output);        
        return response()->json($response);
    }

    /**
     * Circle Details.
     *
     * @param Json ApiRequest $request
     *
     * @return \Illuminate\Http\JsonResponse
     * @throws GeneralException
     */
    public function circle_details(Request $request)
    {
        $response = array();
        $output = array();
        $end_date = "";
        $estimate_round = "";
        $exceed_amount = "";

        $json = file_get_contents('php://input');
        $obj = json_decode($json, TRUE);
        $circle_code = $obj['circle_code'];
        $target_achive = $obj['target_achive'];
        $round_set = $obj['round_set'];
        $p_round = $obj['p_round'];
        $start_date = date('Y-m-d',strtotime(str_replace('/', '-', $obj['start_date'])));
        $authorization = explode('Bearer ', $request->header('Authorization'));
        $authorization = end($authorization);

        if($authorization){
            if($circle_code) {
                $user_authorize = $this->userRepository->findByCondition(array('remember_token'=>$authorization));
                //print_r($authorization);die;
                if(count($user_authorize) > 0) {
                    $findUser = $this->circleUserTempRepository->findByCondition(array('circle_code'=>$circle_code),'ASC');
                    if(count($findUser) > 0){
                        $round = ceil($target_achive/$round_set);

                        if($p_round == 'weekly') {
                            $total = $round*7;
                        } elseif($p_round == 'bi-weekly') {
                            $total = $round*14;
                        } else if($p_round == 'monthly') {
                            $total = $round*30;
                        } else {
                            $total = $round*10;
                        }
                        $end_date = date('Y-m-d', strtotime($start_date. ' + '.$total.' days'));


                        $status = 100;
                        $statusCode = 200;
                        $output = $findUser;
                        $end_date = date('d/m/Y',strtotime($end_date));
                        $estimate_round = ceil($round);

                        $exceed_amount = ($estimate_round*$round_set) - $target_achive;
                        $message = 'Successful';
                    } else {
                        $status = 300;
                        $statusCode = 404;
                        $message = "Please assign a user first";
                    }
                } else {
                    $status = 300;
                    $statusCode = 404;
                    $message = "Unauthenticated user";
                }
            } else {
                $status = 300;
                $statusCode = 404;
                $message = "Please add circle code properly";
            }
        } else {
            $status = 300;
            $statusCode = 404;
            $message = "Authorization required";
        }
        $response = array('status'=>$status, 'message'=>$message, 'result'=>$output, 'end_date'=>$end_date, 'estimate_round'=>$estimate_round, 'exceed_amount'=>$exceed_amount);        
        return response()->json($response);
    }

    /**
     * Create Circle.
     *
     * @param Json ApiRequest $request
     *
     * @return \Illuminate\Http\JsonResponse
     * @throws GeneralException
     */
    public function create_circle(Request $request)
    {
        $response = array();
        $output = array();
        $json = file_get_contents('php://input');
        $obj = json_decode($json, TRUE);
        $circle_code = $obj['circle_code'];
        $target_achive = $obj['target_achive'];
        $round_set = $obj['round_set'];
        $p_round = $obj['p_round'];
        $start_date = date('Y-m-d',strtotime(str_replace('/', '-', $obj['start_date'])));
        $reason_for_circle = $obj['reason_for_circle']?$obj['reason_for_circle']:'';
        $authorization = explode('Bearer ', $request->header('Authorization'));
        $authorization = end($authorization);
        $device_tokens = [];
        if($authorization){
            if($circle_code) {
                $user_authorize = $this->userRepository->findByCondition(array('remember_token'=>$authorization));
                //print_r($authorization);die;
                if(count($user_authorize) > 0) {
                    $findUser = $this->circleUserTempRepository->findByCondition(array('circle_code'=>$circle_code));
                    if(count($findUser) > 0){
                        foreach ($findUser as $key => $value) {
                            $instArr = array(
                                                'user_id'=>$value->user_id,
                                                'username'=>$value->username,
                                                'mobile_country_code' => $value->mobile_country_code,
                                                'mobile_number'=>$value->mobile_number,
                                                'circle_code'=>$value->circle_code,
                                                'preference'=>$value->preference,
                                                'accept_status'=>$value->accept_status,
                                                'status_date'=>$value->status_date,
                                                'created_at'=>$value->created_at,
                                                'updated_at'=>$value->updated_at,
                                            );
                            $inst = $this->circleUserRepository->create($instArr);
                            $circleUserDetails = $this->userRepository->findByCondition(array('mobile_number'=>$value->mobile_number));
                            if($circleUserDetails->count()>0){
                                $userDevice = $this->userDeviceTokenRepository->findByCondition(array('user_id'=>$circleUserDetails[0]->id));
                                if($userDevice->count()>0){
                                    array_push($device_tokens, $userDevice[0]->device_tokens);
                                }
                                /*************email********************/
                                //$to = 'sayan@digitalaptech.com';
                                $to = $circleUserDetails[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="">'.$circleUserDetails[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>You are requested to join into a circle.</p>
                                                       <p>Please find the follwing circle details:</p>
                                                       
                                                       <p>Circle Code: '.$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>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', 'DART APP');
                                    $message->to($to);
                                    $message->subject('Circle joining request mail');
                                });
                                /*************email********************/
                            }
                        }
                        $round = ceil($target_achive/$round_set);
                        if($p_round == 'weekly') {
                            $total = $round*7;
                        } elseif($p_round == 'bi-weekly') {
                            $total = $round*14;
                        } else if($p_round == 'monthly') {
                            $total = $round*30;
                        } else {
                            $total = $round*10;
                        }
                        $end_date = date('Y-m-d', strtotime($start_date. ' + '.$total.' days'));

                        $instCircleArr = array(
                                            'user_id'=>$user_authorize[0]->id,
                                            'circle_code'=>$circle_code,
                                            'target_achive'=>$target_achive,
                                            'round_set'=>$round_set,
                                            'p_round'=>$p_round,
                                            'reason_for_circle'=>$reason_for_circle,
                                            'start_date'=>$start_date,
                                            'no_of_member'=>count($findUser),
                                            'end_date'=>$end_date,
                                            'estimate_round' => ceil($round),
                                            'status'=>0
                                        );
                        $instCircle = $this->circleRepository->create($instCircleArr);
                        $delete = $this->circleUserTempRepository->deleteByCondition(array('circle_code'=>$circle_code));

                        for($i=0; $i<ceil($round);$i++){
                            if($p_round == 'weekly') {
                                $payments_date = date('Y-m-d', strtotime($start_date. ' + '.($i*7).' days'));
                                $payments_grace_date = date('Y-m-d', strtotime($start_date. ' + '.(($i*7)+1).' days'));
                            } elseif($p_round == 'bi-weekly') {
                                $payments_date = date('Y-m-d', strtotime($start_date. ' + '.($i*14).' days'));
                                $payments_grace_date = date('Y-m-d', strtotime($start_date. ' + '.(($i*14)+2).' days'));
                            } else if($p_round == 'monthly') {
                                $payments_date = date('Y-m-d', strtotime($start_date. ' + '.($i*30).' days'));
                                $payments_grace_date = date('Y-m-d', strtotime($start_date. ' + '.(($i*30)+4).' days'));
                            } else {
                                $payments_date = date('Y-m-d', strtotime($start_date. ' + '.($i*10).' days'));
                                $payments_grace_date = date('Y-m-d', strtotime($start_date. ' + '.(($i*10)+1).' days'));
                            }
                            $instCircleArr = array(
                                                'circle_code'=>$circle_code,
                                                'round_no'=>$i+1,
                                                'payments_date'=>$payments_date,
                                                'payments_grace_date'=>$payments_grace_date
                                            );
                            $instCircleRound = $this->circleRoundRepository->create($instCircleArr);
                        }
                        //dd(implode(',', $device_tokens));
                        if($instCircle){
                            //$response = $this->siteSettingsRepository->notification(implode(',', $device_tokens), $circle_code);
                            //print_r($response);die;
                        }
                        $status = 100;
                        $statusCode = 200;
                        $output = $instCircle;
                        $output['circle_users'] = $findUser;
                        $message = 'Circle created successful';
                    } else {
                        $status = 300;
                        $statusCode = 404;
                        $message = "Please assign a user first";
                    }
                } else {
                    $status = 300;
                    $statusCode = 404;
                    $message = "Unauthenticated user";
                }
            } else {
                $status = 300;
                $statusCode = 404;
                $message = "Please add circle properly";
            }
        } else {
            $status = 300;
            $statusCode = 404;
            $message = "Authorization required";
        }
        $response = array('status'=>$status, 'message'=>$message, 'result'=>$output);        
        return response()->json($response);
    }

    /**
     * Circle terminate.
     *
     * @param Json ApiRequest $request
     *
     * @return \Illuminate\Http\JsonResponse
     * @throws GeneralException
     */
    public function circleTerminate(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'] : '');
        $authorization = explode('Bearer ', $request->header('Authorization'));
        $authorization = end($authorization);

        if($authorization){
            if($circle_code!='') {
                $user_authorize = $this->userRepository->findByCondition(array('remember_token'=>$authorization));
                //print_r($authorization);die;
                if(count($user_authorize) > 0) {
                    $update = $this->circleRepository->updateByCondition(array('circle_code'=>$circle_code),array('status'=>3));
                    $status = 100;
                    $statusCode = 200;
                    $message = 'Circle terminated successfully';
                } else {
                    $status = 300;
                    $statusCode = 401;
                    $message = "Unauthenticated user";
                }
            } else {
                $status = 300;
                $statusCode = 404;
                $message = "Please send circle code";
            }
        } else {
            $status = 300;
            $statusCode = 404;
            $message = "Authorization required";
        }
        
        $response = array('status'=>$status, 'message'=>$message, 'result'=>$output);
        
        return response()->json($response);
    }

    /**
     * Circle report.
     *
     * @param Json ApiRequest $request
     *
     * @return \Illuminate\Http\JsonResponse
     * @throws GeneralException
     */
    public function circleReport(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'] : '');
        $user_type = (isset($obj['user_type']) ? $obj['user_type'] : ''); // 1->Admin, 2->user
        $authorization = explode('Bearer ', $request->header('Authorization'));
        $authorization = end($authorization);

        if($authorization){
            if($circle_code!='') {
                $user_authorize = $this->userRepository->findByCondition(array('remember_token'=>$authorization));
                //print_r($authorization);die;
                if(count($user_authorize) > 0) {
                    /*************email********************/
                        $to = 'sayan@digitalaptech.com';
                        $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 Admin, </p>
                                            </td>
                                        </tr>
                                        <tr>
                                            <td style="font-family: sans-serif; color: #333; padding: 0px 10px 40px; font-size: 16px; line-height: 30px;">
                                               <p>Request for Circle Report.</p>
                                               
                                               <p>Circle Code: '.$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', 'DART APP');
                            $message->to($to);
                            $message->subject('Circle report mail');
                        });
                    /*************email********************/
                    $status = 100;
                    $statusCode = 200;
                    $message = 'Reported successfully';
                } else {
                    $status = 300;
                    $statusCode = 401;
                    $message = "Unauthenticated user";
                }
            } else {
                $status = 300;
                $statusCode = 404;
                $message = "Please send circle code";
            }
        } else {
            $status = 300;
            $statusCode = 404;
            $message = "Authorization required";
        }
        
        $response = array('status'=>$status, 'message'=>$message, 'result'=>$output);
        
        return response()->json($response);
    }
    public function test_admin_email(){
        //echo 'hi'; die;
        echo get_admin_email(); die;
    }
}
