<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\UserPermission;
use App\Models\CwoSubscription;
use App\Models\CarWashOwner;
use App\Models\User;
use App\Models\Permission;
use App\Models\AppVersion;
use Carbon\Carbon;
use DB;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Validator;

class CwoPermissionController extends Controller
{
    public function __construct(){
    }


    public function index(){
    }

    public function userPermission(Request $request){
        $validate = Validator::make($request->all(), 
            [
                'user_id' => 'required',
            ]);
            
        if($validate->fails()){
            $errorString = implode(",",$validate->messages()->all());
            return response()->json([
                'success' => 0,
                // 'message' => $validate->errors(),
                'message' => $errorString,
            ]);
        }

        $user_id = $request->input('user_id');
        $dt = Carbon::now(); 

        $dataDisplay=[];
        $dataArray = [];
        $getAllPermissions = Permission::where('is_active', 1)->get();
        if($getAllPermissions != '') {
            foreach ($getAllPermissions as $p) {
                $dataDisplay['id'] = $p->id;
                $dataDisplay['permission_name'] = $p->permission_name;
                $dataDisplay['short_key'] = $p->short_key;

                $getUserPer = UserPermission::where('user_id', $user_id)->where('permission_id', $p->id)->first();
                if($getUserPer != ''){
                    $dataDisplay['status'] = true;    
                } else {
                    $dataDisplay['status'] = false; 
                }

                $dataArray[] = $dataDisplay;
            }
        }

        // $userPermissions = UserPermission::select('permissions.id', 'permissions.permission_name')
        //     ->join('permissions','permissions.id','=','user_permissions.permission_id')
        //     ->where('user_permissions.user_id', $user_id)
        //     ->where('permissions.is_active', 1)
        //     ->get();
        // echo "<pre>";print_r($userPermissions->toArray());exit;  
        
        $user_detail = User::find($user_id);
        // echo "<pre>";print_r($user_detail->toArray());exit; 
        // echo $user_detail->cwo_id;exit;
        /*$cwoSubscription = CwoSubscription::where('cwo_id', $user_detail->cwo_id)->select('status','end_date')->orderBy('id', 'desc')->take(1)->get();
        // echo "<pre>";print_r($cwoSubscription->toArray());exit; 
        if(isset($cwoSubscription) && count($cwoSubscription)>0){
            $subscription_end_date = $cwoSubscription[0]['end_date'];
            if($cwoSubscription[0]['status'] == 1){
                $subscription_status = 'Active';
            } else {
                $subscription_status = 'Inactive';
            }
        } else {
            $subscription_end_date = '';
            $subscription_status = 'Inactive';
        }*/

        $cwoSubs = CarWashOwner::where('id', $user_detail->cwo_id)->select('is_paid','end_date','free_trial','cwo_subscription_id','is_bill_generated')->first();
        if($cwoSubs->is_paid == 1){
            if($cwoSubs->free_trial == 1 && $cwoSubs->cwo_subscription_id == 0){
                $subscription_status = 'Free Trial';
            } else {
                $subscription_status = 'Active';
            }
        } else {
            $subscription_status = 'Inactive';
        }
        $subscription_end_date = $cwoSubs->end_date;
        $free_trial = $cwoSubs->free_trial;
        $isBillGenerated = $cwoSubs->is_bill_generated;

        $generateBillInvoiceId = DB::table('invoice')
        ->where('cwo_id', $user_detail->cwo_id)
        ->where('is_paid', 0)
        ->first();
    
    $bill_id = $generateBillInvoiceId->id ?? null;
    
    $getInvoice = $bill_id ? DB::table('invoice')->where('id', $bill_id)->first() : null;
    
    $getInvoiceId = $getInvoice->id ?? null;
    
    $finalDownloadUrl = $getInvoiceId ? route('cwodownloadInvoice', ['invoice_id' => $getInvoiceId]) : '';
    
        $appVersion = AppVersion::select('app_version_android','app_version_ios','version_notification_message')->first();
        if($appVersion != ''){
            $app_version_android = $appVersion->app_version_android;
            $app_version_ios = $appVersion->app_version_ios;
            $version_notification_message = $appVersion->version_notification_message;
        } else {
            $app_version_android = '';
            $app_version_ios = '';
            $version_notification_message = '';
        }

        return response()->json([
            'success' => 1,
            'message' => 'Success',
            // 'userPermissions' => $userPermissions,
            'userPermissions' => $dataArray,
            'subscription_end_date' => $subscription_end_date,
            'subscription_status' => $subscription_status,
            'free_trial' => $free_trial,
            'app_version_android' => $app_version_android,
            'app_version_ios' => $app_version_ios,
            'version_notification_message' => $version_notification_message,
            'is_bill_generated'=>$isBillGenerated,
            'invoice_download_link'=>$finalDownloadUrl
        ]);

    }


}
