HEX
Server: Apache/2.4.46 (Ubuntu)
System: Linux localhost 5.11.0-49-generic #55-Ubuntu SMP Wed Jan 12 17:36:34 UTC 2022 x86_64
User: root (0)
PHP: 7.4.16
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/html/fieldsblaze-heroku/app/Http/Controllers/UserController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Validator;
use DB;
use App\Library\UserLib;
use App\Models\User;
use App\Models\UserAuth;
use App\Models\Countries;
use App\Models\States;
use App\Models\Profiles;
use App\Models\Departments;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\Facades\App;

use Illuminate\Routing\Controller as BaseController;

class UserController extends Controller
{
    protected $userLib;
    protected $TeamList;

    public function __construct(UserLib $userLib)
    {
        $this->userLib = $userLib;
    }

    // public function uploadprocess(Request $request)
    // {

    //     $data = array();

    //     $data['ufile'] =  $request->file('ufile');

    //     $imageName = $this->userLib->useridGenrator();
    //     if ($request->hasFile('ufile')) {
    //         $file = $request->file('ufile');
    //         $extension = $file->getClientOriginalExtension();
    //         $newFileName = $imageName . '-' . time() . '.' . $extension;

    //         Storage::putFileAs(
    //             'public/products',
    //             $file,
    //             $newFileName
    //         );

    //         $path = Storage::url('products/' . $newFileName);

    //         $data['ThumbnailUrl'] =  $path;

    //     }

    //     print_r($data);

    //     exit;
    // }


    public function uploadprocess(Request $request)
    {
        //echo "uploadprocess";
        $data = array();
        $imageName = $this->userLib->useridGenrator();
        if ($request->hasFile('ufile')) {
            $file = $request->file('ufile');
            $extension = $file->getClientOriginalExtension();
            $newFileName = $imageName . '-' . time() . '.' . $extension;

            $destinationPath = 'storage/products';

            $isUploaded = $file->move($destinationPath,$newFileName);
            if($isUploaded)
            {
                $path = 'storage/products/' . $newFileName;
                echo env('APP_URL').'/'.$path;
            }


            Storage::putFileAs(
                'public/collection', $file, $newFileName
            );
           echo ", Path = ". $path = Storage::url('collection/'.$newFileName);



            // $ok = Storage::putFileAs(
            //     'public/collection', $file, $newFileName
            // );
            // $path = Storage::url('collection/'.$newFileName);
            // $data['ufile'] = $path;
            // $data['ok'] = $ok;
            //print_r($data);
        }
      //  print_r($ThumbnailUrl);

        exit;
    }

    public function uploadprocessTT(Request $request)
    {
        $file = $request->file('ufile');

        //Display File Name
        echo 'File Name: '.$file->getClientOriginalName();
        echo '<br>';

        //Display File Extension
        echo 'File Extension: '.$file->getClientOriginalExtension();
        echo '<br>';

        //Display File Real Path
        echo 'File Real Path: '.$file->getRealPath();
        echo '<br>';

        //Display File Size
        echo 'File Size: '.$file->getSize();
        echo '<br>';

        //Display File Mime Type
        echo 'File Mime Type: '.$file->getMimeType();

        //Move Uploaded File
        $destinationPath = 'uploads';

        echo "destinationPath = ".$destinationPath;

        echo "getClientOriginalName = ".$file->getClientOriginalName();


        $file->move($destinationPath,$file->getClientOriginalName());



        exit;

    }

    public function upload(Request $request)
    {
        // echo url()->current()."<br/>";

        // $environment = App::environment();

        // echo $environment."<br/>";

        // echo basename(__DIR__) ;

        // echo env('APP_URL')."<br/>";

        echo $path = storage_path();

        return view('admin.upload');
    }

    public function getStates(Request $request)
    {
        $country_id = $request->post('country_id');

        $state_data = States::where('country_id', $country_id)->orderBy('state_name', 'asc')->get();
        echo "<option value=''>Please select state</option>";
        foreach ($state_data as $state) {
            $state_name = $state->state_name;
            echo "<option value='" . $state_name . "'>" . $state_name . "</option>";
        }
    }

    public function login()
    {
        if (!empty(session('UserId'))) {
            return redirect('/dashboard');
        }
        return view('admin.login');
    }

    public function register()
    {

        return view('admin.register');
    }

    public function forgotPassword()
    {
        return view('admin.forgot-password');
    }

    public function recoverPassword()
    {
        return view('admin.recover-password');
    }

    public function addUser()
    {
        $countries_data = Countries::orderBy('country_name', 'asc')->get();
        $profiles_data = Profiles::orderBy('ProfileName', 'asc')->get();
        $departments_data = Departments::orderBy('DepartmentName', 'asc')->get();
        $data = array();
        $data['countries'] = $countries_data;
        $data['profiles'] = $profiles_data;
        $data['departments'] = $departments_data;
        return view('admin.add-user', $data);
    }

    /*
        Function: Add user process
        Author: RS
        Date: 14-06-2021
    */
    public function addUserProcess(Request $request)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }
        $CreatedDate = date('Y-m-d H:i:s', time());
        $token = $this->userLib->tokenGenrator();
        $g_userId = $this->userLib->useridGenrator();
        $UserId = $g_userId;
        $data = $request->all();

        // $FirstName = $request->post('FirstName');
        // $LastName = $request->post('LastName');


        // print_r($data);exit;

        //User Image
        // if ($request->hasFile('ProfilePic')) {
        //     $imageName = $this->userLib->useridGenrator();
        //     $path = '';
        //     $file = $request->file('ProfilePic');
        //     $extension = $file->getClientOriginalExtension();
        //     $newFileName = $imageName . '-' . time() . '.' . $extension;

        //     Storage::putFileAs(
        //         'public/user',
        //         $file,
        //         $newFileName
        //     );
        //     $path = Storage::url('user/' . $newFileName);
        //     $data['UserProfileImage'] = $path;
        // }
        // $imageName = $this->userLib->useridGenrator();
        // if ($request->hasFile('ProfilePic'))
        // {
        //     $path = '';
        //     $file = $request->file('ProfilePic');
        //     $extension = $file->getClientOriginalExtension();
        //     $newFileName = $imageName . '-' . time() . '.' . $extension;

        //     Storage::putFileAs(
        //         'public/user',
        //         $file,
        //         $newFileName
        //     );
        //     $destinationPath = 'user';
        //     $isUploaded = $file->move($destinationPath,$newFileName);

        //     if($isUploaded)
        //     {
        //         $path = 'user/' . $newFileName;
        //         $ThumbnailUrl = $path;
        //     }
        //     $data['UserProfileImage'] = $ThumbnailUrl;
        // }
        $imageName = $this->userLib->useridGenrator();
        if ($request->hasFile('ProfilePic')) {
            $path = '';
            $file = $request->file('ProfilePic');
            $extension = $file->getClientOriginalExtension();
            $newFileName = $imageName . '-' . time() . '.' . $extension;

            Storage::putFileAs(
                'public/user/',
                $file,
                $newFileName
            );
            $destinationPath = 'user/';
            $isUploaded = $file->move($destinationPath,$newFileName);

            $uploadedFileURL = '';
            if($isUploaded)
            {
                $path = 'user/' . $newFileName;
                $ThumbnailUrl = $path;
            //File Upload Service as s3
            $sourceFileURL = env('APP_URL').'/'.$path;
            $curl = curl_init();
            curl_setopt_array($curl, array(
            CURLOPT_URL => 'http://172.105.42.62/s3-file-server/api-upload.php',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => array('file_url' => $sourceFileURL),
            CURLOPT_HTTPHEADER => array(
                'Cookie: private_content_version=3f7abce738dd8b52d0dcb8653bfe8e93; mage-messages=%5B%7B%22type%22%3A%22error%22%2C%22text%22%3A%22Invalid%20Form%20Key.%20Please%20refresh%20the%20page.%22%7D%2C%7B%22type%22%3A%22error%22%2C%22text%22%3A%22Invalid%20Form%20Key.%20Please%20refresh%20the%20page.%22%7D%2C%7B%22type%22%3A%22error%22%2C%22text%22%3A%22Invalid%20Form%20Key.%20Please%20refresh%20the%20page.%22%7D%5D'
            ),
            ));
            $response = curl_exec($curl);
            curl_close($curl);
            $uploadedFile = json_decode($response,true);
            $uploadedFileURL = isset($uploadedFile['url']) ? $uploadedFile['url'] : '';
            }
            $data['UserProfileImage'] = $uploadedFileURL;
        }

        $data['UserId'] = $UserId;
        $data['TempPassword'] = $data['Password'];
        $data['Password'] = Crypt::encryptString($data['Password']);
        if ($data['AssignExpenseAmount']) {
            $data['AssignExpenseAmount'] = $data['AssignExpenseAmount'];
        } else {
            $data['AssignExpenseAmount'] = '0.00';
        }


        $data['ModifiedDate'] = $CreatedDate;
        $data['OtpCreatedDate'] = $CreatedDate;
        $data['Created_at'] = $CreatedDate;
        $data['Created_by'] = session('UserId');
        $data['Updated_at'] = $CreatedDate;
        $data['Updated_by'] = session('UserId');
        unset($data['_token']);
        unset($data['save']);
        unset($data['ProfilePic']);

        $user_insert = User::insert($data);

        $UserId = $g_userId;
        $FirstName = $request->post('FirstName');
        if($request->post('LastName')){
        $LastName = $request->post('LastName');
        }
        else{
            $LastName = 'null';
        }
        $FullName = $FirstName." ".$LastName;
        if($request->post('Email')){
        $Email = $request->post('Email');
        }
        else{
            $Email ='demo@gmail.com';
        }
        $Mobile = $request->post('Mobile');
        $TemPassword = $request->post('Password');
        $Password  = Crypt::encryptString($request->post('Password'));
        $CompanyName = $request->post('CompanyName');
        $CompanyCode = $request->post('CrmId');
        $Department = $request->post('Department');
        $AboutMe = $request->post('AboutMe');
        $CommunityNickname = $request->post('CommunityNickname');
        $Address = $request->post('Address');
        $City = $request->post('City');
        $CountryPrimaryId = $request->post('Country');
        $Country = '';
        if($CountryPrimaryId){
            $customer_details = Countries::select('tbl_countries.country_name')
            ->where('tbl_countries.id', $CountryPrimaryId)
            ->get()->first();
            $Country = $customer_details->country_name;
        }
        $State = $request->post('State');
        $PostalCode = $request->post('PostalCode');
        $OtpCreatedDate = $CreatedDate;
        $OtpVerified = $request->post('OtpVerified');
        $ProfileId = $request->post('ProfileId');
        $AssignExpenseAmount = $request->post('AssignExpenseAmount');
        $Username = 'xyz@acme.com';
        $Alias = 'xyz';
        $TimeZoneSidKey = 'Asia/Kolkata';
        $LocaleSidKey = 'en_US';
        $EmailEncodingKey = 'UTF-8';
        // $Profile_Id = '0052w00000CV72t123';ProfileId,'$Profile_Id',
        $LanguageLocaleKey = 'en_US';
        $IsDeleted = '1';
        $Status = '0';
        $active = '0';

        DB::connection('pgsql')->insert("insert into salesforce.User__c (UserId__c,FirstName__c,LastName__c,Email__c,Mobile__c,Temp_Password__c,Password__c,Company_Name__c,CrmId__c,Department__c,About_Me__c,Community_Nick_name__c,Address__c,City__c,Country__c,State__c,PostalCode__c,Otp_Created_Date__c,Otp_Verified__c,ProfileId__c,Assign_Expense_Amount__c,Is_Deleted__c,Status__c,Name,isActive__c) values ('$UserId','$FirstName','$LastName','$Email','$Mobile','$TemPassword','$Password','$CompanyName','$CompanyCode','$Department','$AboutMe','$CommunityNickname','$Address','$City','$Country','$State','$PostalCode','$OtpCreatedDate','$OtpVerified','$ProfileId','$AssignExpenseAmount','$IsDeleted','$Status','$FullName','$active')");

        if ($user_insert) {
            return redirect('/all-user?m=success');
            //echo "<br/><br/>Inserted<br/><br/>";
        } else {
            return redirect('/all-user?m=failed');
            echo "<br/><br/>Not Inserted<br/><br/>";
        }
    }

    #### Check Mobile Number In Add User Page
    public function checkUserMobile(Request $request)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }
        $CreatedDate = date('Y-m-d H:i:s', time());

        $data = $request->all();

        $user = User::where('Mobile', $data['Mobile'])->get();
        if ($user->count() > 0) {   //mobile exist
            $user = $user->first();
            $UserId = $user->UserId;

            $response = [
                'Success' => false,
                'ResponseMessage' => "Number already exist in CRM!",
                'ResponseCode' => '201',
            ];
            return response()->json($response);
        } else {
            $response = [
                'Success' => true,
                'ResponseMessage' => "",
                'ResponseCode' => '200',
            ];
            return response()->json($response);
        }
    }

    #### Check Mobile Number In Add User Modal
    public function checkMobile(Request $request)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }

        $Mobile = $request->input('MobileNumber');
        $GetMobile = User::where('Mobile', $Mobile)
            ->get()->first();
        if ($GetMobile) {
            return response()->json(array("exists" => true));
        } else {
            return response()->json(array("exists" => false));
        }
    }

    #### Check User Name In Add User Modal
    public function checkUserName(Request $request)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }

        $UserNameId = $request->input('UserNameId');
        $GetUserNameId = User::where('UserNameId', $UserNameId)
            ->get()->first();
        if ($GetUserNameId) {
            return response()->json(array("exists" => true));
        } else {
            return response()->json(array("exists" => false));
        }
    }

    #### All User
    public function allUser()
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }

        //$user = User::orderBy('CreatedDate', 'desc')->get();
        //$data = array();
        //$data['users'] = $user;
        $users = User::select('tbl_user.*', 'tbl_profiles.ProfileName as ProfileName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_profiles', 'tbl_user.ProfileId', '=', 'tbl_profiles.ProfileId')
            //->leftJoin('tbl_countries', 'tbl_sales_area.Country', '=', 'tbl_countries.id')
            ->leftJoin('tbl_admin', 'tbl_user.Updated_by', '=', 'tbl_admin.UserId')
            ->where('tbl_user.IsDeleted', '=', '0')
            //->where('tbl_user.Status', '=', 'Activated')
            ->orderBy('tbl_user.id', 'desc')
            ->get();
        $ActiveUser = User::select('tbl_user.*', 'tbl_profiles.ProfileName as ProfileName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_profiles', 'tbl_user.ProfileId', '=', 'tbl_profiles.ProfileId')
            //->leftJoin('tbl_countries', 'tbl_sales_area.Country', '=', 'tbl_countries.id')
            ->leftJoin('tbl_admin', 'tbl_user.Updated_by', '=', 'tbl_admin.UserId')
            ->where('tbl_user.IsDeleted', '=', '0')
            ->where('tbl_user.isActive', '=', '1')
            ->orderBy('tbl_user.id', 'desc')
            ->get();
        $InActiveUser = User::select('tbl_user.*', 'tbl_profiles.ProfileName as ProfileName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_profiles', 'tbl_user.ProfileId', '=', 'tbl_profiles.ProfileId')
            //->leftJoin('tbl_countries', 'tbl_sales_area.Country', '=', 'tbl_countries.id')
            ->leftJoin('tbl_admin', 'tbl_user.Updated_by', '=', 'tbl_admin.UserId')
            ->where('tbl_user.IsDeleted', '=', '0')
            ->where('tbl_user.isActive', '=', '0')
            ->orderBy('tbl_user.id', 'desc')
            ->get();
        $TrashUser = User::select('tbl_user.*', 'tbl_profiles.ProfileName as ProfileName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_profiles', 'tbl_user.ProfileId', '=', 'tbl_profiles.ProfileId')
            //->leftJoin('tbl_countries', 'tbl_sales_area.Country', '=', 'tbl_countries.id')
            ->leftJoin('tbl_admin', 'tbl_user.Updated_by', '=', 'tbl_admin.UserId')
            ->where('tbl_user.IsDeleted', '=', '1')
            ->orderBy('tbl_user.id', 'desc')
            ->get();

        return view('admin.all-user', ['user' => $users, 'ActiveUser' => $ActiveUser, 'InActiveUser' => $InActiveUser, 'TrashUser' => $TrashUser]);
    }

    ### Active User
    public function activeUser()
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }
        $users = User::select('tbl_user.*', 'tbl_profiles.ProfileName as ProfileName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_profiles', 'tbl_user.ProfileId', '=', 'tbl_profiles.ProfileId')
            //->leftJoin('tbl_countries', 'tbl_sales_area.Country', '=', 'tbl_countries.id')
            ->leftJoin('tbl_admin', 'tbl_user.Updated_by', '=', 'tbl_admin.UserId')
            ->where('tbl_user.IsDeleted', '=', '0')
            //->where('tbl_user.Status', '=', 'Activated')
            ->orderBy('tbl_user.id', 'desc')
            ->get();

        $ActiveUser = User::select('tbl_user.*', 'tbl_profiles.ProfileName as ProfileName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_profiles', 'tbl_user.ProfileId', '=', 'tbl_profiles.ProfileId')
            //->leftJoin('tbl_countries', 'tbl_sales_area.Country', '=', 'tbl_countries.id')
            ->leftJoin('tbl_admin', 'tbl_user.Updated_by', '=', 'tbl_admin.UserId')
            ->where('tbl_user.IsDeleted', '=', '0')
            ->where('tbl_user.isActive', '=', '1')
            ->orderBy('tbl_user.id', 'desc')
            ->get();
        $InActiveUser = User::select('tbl_user.*', 'tbl_profiles.ProfileName as ProfileName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_profiles', 'tbl_user.ProfileId', '=', 'tbl_profiles.ProfileId')
            //->leftJoin('tbl_countries', 'tbl_sales_area.Country', '=', 'tbl_countries.id')
            ->leftJoin('tbl_admin', 'tbl_user.Updated_by', '=', 'tbl_admin.UserId')
            ->where('tbl_user.IsDeleted', '=', '0')
            ->where('tbl_user.isActive', '=', '0')
            ->orderBy('tbl_user.id', 'desc')
            ->get();
        $TrashUser = User::select('tbl_user.*', 'tbl_profiles.ProfileName as ProfileName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_profiles', 'tbl_user.ProfileId', '=', 'tbl_profiles.ProfileId')
            //->leftJoin('tbl_countries', 'tbl_sales_area.Country', '=', 'tbl_countries.id')
            ->leftJoin('tbl_admin', 'tbl_user.Updated_by', '=', 'tbl_admin.UserId')
            ->where('tbl_user.IsDeleted', '=', '1')
            ->orderBy('tbl_user.id', 'desc')
            ->get();

        return view('admin.active-user', ['user' => $users, 'ActiveUser' => $ActiveUser, 'InActiveUser' => $InActiveUser, 'TrashUser' => $TrashUser]);
    }

    ### In-aActive User
    public function inActiveUser()
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }
        $users = User::select('tbl_user.*', 'tbl_profiles.ProfileName as ProfileName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_profiles', 'tbl_user.ProfileId', '=', 'tbl_profiles.ProfileId')
            //->leftJoin('tbl_countries', 'tbl_sales_area.Country', '=', 'tbl_countries.id')
            ->leftJoin('tbl_admin', 'tbl_user.Updated_by', '=', 'tbl_admin.UserId')
            ->where('tbl_user.IsDeleted', '=', '0')
            //->where('tbl_user.Status', '=', 'Activated')
            ->orderBy('tbl_user.id', 'desc')
            ->get();

        $ActiveUser = User::select('tbl_user.*', 'tbl_profiles.ProfileName as ProfileName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_profiles', 'tbl_user.ProfileId', '=', 'tbl_profiles.ProfileId')
            //->leftJoin('tbl_countries', 'tbl_sales_area.Country', '=', 'tbl_countries.id')
            ->leftJoin('tbl_admin', 'tbl_user.Updated_by', '=', 'tbl_admin.UserId')
            ->where('tbl_user.IsDeleted', '=', '0')
            ->where('tbl_user.isActive', '=', '1')
            ->orderBy('tbl_user.id', 'desc')
            ->get();
        $InActiveUser = User::select('tbl_user.*', 'tbl_profiles.ProfileName as ProfileName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_profiles', 'tbl_user.ProfileId', '=', 'tbl_profiles.ProfileId')
            //->leftJoin('tbl_countries', 'tbl_sales_area.Country', '=', 'tbl_countries.id')
            ->leftJoin('tbl_admin', 'tbl_user.Updated_by', '=', 'tbl_admin.UserId')
            ->where('tbl_user.IsDeleted', '=', '0')
            ->where('tbl_user.isActive', '=', '0')
            ->orderBy('tbl_user.id', 'desc')
            ->get();
        $TrashUser = User::select('tbl_user.*', 'tbl_profiles.ProfileName as ProfileName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_profiles', 'tbl_user.ProfileId', '=', 'tbl_profiles.ProfileId')
            //->leftJoin('tbl_countries', 'tbl_sales_area.Country', '=', 'tbl_countries.id')
            ->leftJoin('tbl_admin', 'tbl_user.Updated_by', '=', 'tbl_admin.UserId')
            ->where('tbl_user.IsDeleted', '=', '1')
            ->orderBy('tbl_user.id', 'desc')
            ->get();

        return view('admin.inactive-user', ['user' => $users, 'ActiveUser' => $ActiveUser, 'InActiveUser' => $InActiveUser, 'TrashUser' => $TrashUser]);
    }

    ### Trash User
    public function trashUser()
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }
        $users = User::select('tbl_user.*', 'tbl_profiles.ProfileName as ProfileName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_profiles', 'tbl_user.ProfileId', '=', 'tbl_profiles.ProfileId')
            //->leftJoin('tbl_countries', 'tbl_sales_area.Country', '=', 'tbl_countries.id')
            ->leftJoin('tbl_admin', 'tbl_user.Updated_by', '=', 'tbl_admin.UserId')
            ->where('tbl_user.IsDeleted', '=', '0')
            //->where('tbl_user.Status', '=', 'Activated')
            ->orderBy('tbl_user.id', 'desc')
            ->get();

        $ActiveUser = User::select('tbl_user.*', 'tbl_profiles.ProfileName as ProfileName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_profiles', 'tbl_user.ProfileId', '=', 'tbl_profiles.ProfileId')
            //->leftJoin('tbl_countries', 'tbl_sales_area.Country', '=', 'tbl_countries.id')
            ->leftJoin('tbl_admin', 'tbl_user.Updated_by', '=', 'tbl_admin.UserId')
            ->where('tbl_user.IsDeleted', '=', '0')
            ->where('tbl_user.isActive', '=', '1')
            ->orderBy('tbl_user.id', 'desc')
            ->get();
        $InActiveUser = User::select('tbl_user.*', 'tbl_profiles.ProfileName as ProfileName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_profiles', 'tbl_user.ProfileId', '=', 'tbl_profiles.ProfileId')
            //->leftJoin('tbl_countries', 'tbl_sales_area.Country', '=', 'tbl_countries.id')
            ->leftJoin('tbl_admin', 'tbl_user.Updated_by', '=', 'tbl_admin.UserId')
            ->where('tbl_user.IsDeleted', '=', '0')
            ->where('tbl_user.isActive', '=', '0')
            ->orderBy('tbl_user.id', 'desc')
            ->get();
        $TrashUser = User::select('tbl_user.*', 'tbl_profiles.ProfileName as ProfileName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_profiles', 'tbl_user.ProfileId', '=', 'tbl_profiles.ProfileId')
            //->leftJoin('tbl_countries', 'tbl_sales_area.Country', '=', 'tbl_countries.id')
            ->leftJoin('tbl_admin', 'tbl_user.Updated_by', '=', 'tbl_admin.UserId')
            ->where('tbl_user.IsDeleted', '=', '1')
            ->orderBy('tbl_user.id', 'desc')
            ->get();

        return view('admin.trash-user', ['user' => $users, 'ActiveUser' => $ActiveUser, 'InActiveUser' => $InActiveUser, 'TrashUser' => $TrashUser]);
    }

    //Team List
    public function getManagerTeamList($ManagerId='') {





        //Check user is exist or not
         $users = User::select('UserId', 'FirstName', 'LastName', 'Email','Mobile', 'ManagerId')
         ->leftJoin('tbl_profiles', 'tbl_user.ProfileId', '=', 'tbl_profiles.ProfileId')
         ->where('tbl_user.ManagerId',$ManagerId)
         ->orderBy('tbl_profiles.InOrder', 'asc')
         ->get();

        if ($users->count() > 0)
        {
            foreach ($users as $key => $UValue)
            {

                $UserId = $UValue['UserId'];
                $FirstName = $UValue['FirstName'];
                $LastName = $UValue['LastName'];
                $ManagerId = $UValue['ManagerId'];

                //echo "Userid = ".$UserId.", Name = ".$FirstName."<br/>";

                if($UserId)  {
                    $this->TeamList[] = $UserId;
                    $this->getManagerTeamList($UserId);
                }
            }
        }


       return $responseData = $this->TeamList;
    }


    #### View Record
    public function viewUser($UserId)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }
        $user = User::select('tbl_user.*', 'tbl_profiles.ProfileName as ProfileName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by', 'tbl_countries.country_name as Country')
            ->where('tbl_user.UserId', '=', $UserId)
            ->leftJoin('tbl_profiles', 'tbl_user.ProfileId', '=', 'tbl_profiles.ProfileId')
            //->leftJoin('tbl_countries', 'tbl_sales_area.Country', '=', 'tbl_countries.id')
            ->leftJoin('tbl_admin', 'tbl_user.Updated_by', '=', 'tbl_admin.UserId')
            ->leftJoin('tbl_countries', 'tbl_user.Country', '=', 'tbl_countries.id')
            //->where('tbl_user.Status', '=', 'Activated')
            ->get()->first();

            $ManagerId = $user['ManagerId'];

        if ($ManagerId) {
        $Manager = '';
        $ManagerName = User::select('tbl_user.FirstName as ManagerFirstName', 'tbl_user.LastName as ManagerLastName')
            ->where('tbl_user.UserId', '=', $ManagerId)
            ->get()->first();

            if ($ManagerName) {
                $Manager = $ManagerName->ManagerFirstName . ' ' . $ManagerName->ManagerLastName ;
            }

        } else {
            $Manager = 'N/A';
        }
        // Team List

        $TeamUserIds = "";
        $TeamUserIds = $this->getManagerTeamList($UserId);
        $TeamUser = array();
       if($TeamUserIds){
        $TeamUser = User::select('tbl_user.*', 'tbl_profiles.ProfileName as ProfileName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_profiles', 'tbl_user.ProfileId', '=', 'tbl_profiles.ProfileId')
            ->leftJoin('tbl_admin', 'tbl_user.Updated_by', '=', 'tbl_admin.UserId')
            ->whereIn('tbl_user.UserId', $TeamUserIds)
            ->where('tbl_user.IsDeleted', '=', '0')
            //->where('tbl_user.Status', '=', '1')
            ->orderBy('tbl_profiles.InOrder', 'asc')
            ->get();


            if ($TeamUser->count() > 0)
            {   //email is exist
                foreach ($TeamUser as $key => $UValue)
                {

                    $ManagerId = $UValue->ManagerId;
                    $usersDeatils = User::select('UserId', 'FirstName', 'LastName', 'Email','Mobile', 'ManagerId', 'ProfileId')
                    ->where('UserId',$ManagerId)
                    // ->where('IsDeleted', '=', '0')
                    // ->where('Status', '=', '1')
                    ->get();
                    $fullname = '';
                    if($usersDeatils->count() > 0){
                    $userData = $usersDeatils->first();
                    $FirstName = $userData->FirstName;
                    $LastName = $userData->LastName;
                    $fullname = $FirstName.' '.$LastName;
                    }
                    $UValue['ManagerName'] = $fullname;
                }
            }



       }
       return view('admin.view-user', compact(['user', 'Manager', 'TeamUser']));

        // if ($ManagerId) {
        //     return view('admin.view-user', compact(['user', 'ManagerName']));
        // } else {
        //     return view('admin.view-user', ['user' => $user]);
        // }


    }


    #### Delete Temporary
    public function deleteUser($id)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }
        $CreatedDate = date('Y-m-d H:i:s', time());

        $value = array();
        $value['Updated_at'] = $CreatedDate;
        $value['IsDeleted'] = '1';
        $value['isActive'] = '0';

        $delete_user = User::where('UserId', $id)->update($value);

        DB::connection('pgsql')->update("update salesforce.User__c set Is_Deleted__c='1',Status__c='0' where UserId__c='$id'");

        if ($delete_user) {
            $UserData = User::where('UserId', $id)
                ->get()->first();
            $UserId = $UserData->UserId;
            if ($UserId) {
                $UserAuthData = UserAuth::where('UserId', $UserId)->delete();
            }
            // if ($UserAuthData) {
            //     return response()->json('status_success');
            // } else {
            //     return response()->json('status_failed');
            // }
        }
    }

    #### Delete Selected User
    public function deleteSelectedUser(Request $request)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }

        $id = $request->input('SelectedUser');
        if ($id) {
            foreach ($id as $user) {
                $checkData = User::find($user);
                if ($checkData->IsDeleted == '0') {
                    $CreatedDate = date(
                        'Y-m-d H:i:s',
                        time()
                    );
                    $data = array();
                    $data['Updated_at'] = $CreatedDate;
                    $data['IsDeleted'] = '1';
                    $data['Status'] = '0';

                    $selected_user = User::where('id', $user)->update($data);

                    // DB::connection('pgsql')->update("update salesforce.User__c set Is_Deleted__c='1',Status__c='0' where UserId__c='$user'");

                    if ($selected_user) {
                        echo '1';
                    } else {
                        echo '0';
                    }
                } else {
                    $selected_user = User::where('UserId', $user);
                    $selected_user->delete();
                }
            }
        }

        return redirect()->back()->with('status_success');
    }

    #### Restore
    public function restoreUser($id)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }
        $value = array('IsDeleted' => '0', 'isActive' => '0', 'Status' => 'In-Active');
        User::where('UserId', $id)->update($value);

        DB::connection('pgsql')->update("update salesforce.User__c set Is_Deleted__c='0',Status__c='0' where UserId__c='$id'");
    }

    #### Delete Permanent
    public function destroyUser($id)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }
        $destroyData = User::where('UserId', $id);
        $destroyData->delete();
    }

    #### Approve User
    public function approveUser($id)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }
        $CreatedDate = date('Y-m-d H:i:s', time());

        $value = array();
        $value['Updated_at'] = $CreatedDate;
        $value['Updated_by'] = session('UserId');
        $value['isActive'] = '1';
        $value['Status'] = 'Activated';
        User::where('UserId', $id)->update($value);
    }

    #### Activate User
    public function activateUser($id)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }
        $CreatedDate = date('Y-m-d H:i:s', time());

        $value = array();
        $value['Updated_at'] = $CreatedDate;
        $value['Updated_by'] = session('UserId');
        $value['isActive'] = '1';
        $value['Status'] = 'Activated';
        $is_active = User::where('UserId', $id)->update($value);
        if($is_active)
        {
            DB::connection('pgsql')->update("update salesforce.User__c set isActive__c='1' where UserId__c='$id'");
        }

    }

    #### De-Activate User
    public function deActivateUser($id)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }
        $CreatedDate = date('Y-m-d H:i:s', time());

        $value = array();
        $value['Updated_at'] = $CreatedDate;
        $value['Updated_by'] = session('UserId');
        $value['isActive'] = '0';
        $value['Status'] = 'In-Active';
        $deactivate_user = User::where('UserId', $id)->update($value);

        if ($deactivate_user) {
            $UserData = User::where('UserId', $id)
                ->get()->first();
            $UserId = $UserData->UserId;

            DB::connection('pgsql')->update("update salesforce.User__c set isActive__c='0' where UserId__c='$id'");

            if ($UserId) {
                $UserAuthData = UserAuth::where('UserId', $UserId)->delete();
            }
        }
    }

    ### Edit User
    public function editUser($id)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }

        $User = User::select('tbl_user.*', 'tbl_profiles.ProfileName as ProfileName')
            ->leftJoin('tbl_profiles', 'tbl_user.ProfileId', '=', 'tbl_profiles.ProfileId')
            ->where('tbl_user.UserId', $id)
            ->get()->first();
        return response()->json([
            'Status' => 200,
            'User' => $User
        ]);
    }

    ### Update User
    public function updateUser(Request $request)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }

        $input = $request->all();
        $data = $input;

        // print_r($data);exit;

        $UserId = $input['UserId'];

        ##User Image
        // $imageName = $this->userLib->useridGenrator();
        // if ($request->hasFile('ProfilePic')) {
        //     $path = '';
        //     $file = $request->file('ProfilePic');
        //     $extension = $file->getClientOriginalExtension();
        //     $newFileName = $imageName . '-' . time() . '.' . $extension;

        //     Storage::putFileAs(
        //         'public/user',
        //         $file,
        //         $newFileName
        //     );
        //     $destinationPath = 'user';
        //     $isUploaded = $file->move($destinationPath,$newFileName);

        //     if($isUploaded)
        //     {
        //         $path = Storage::url('user/') . $newFileName;
        //         $ThumbnailUrl = $path;
        //     }
        //     $data['UserProfileImage'] = $ThumbnailUrl;
        // }
        $imageName = $this->userLib->useridGenrator();
        if ($request->hasFile('ProfilePic')) {
            $path = '';
            $file = $request->file('ProfilePic');
            $extension = $file->getClientOriginalExtension();
            $newFileName = $imageName . '-' . time() . '.' . $extension;

            Storage::putFileAs(
                'public/user/',
                $file,
                $newFileName
            );
            $destinationPath = 'user/';
            $isUploaded = $file->move($destinationPath,$newFileName);

            $uploadedFileURL = '';
            if($isUploaded)
            {
                $path = 'user/' . $newFileName;
                $ThumbnailUrl = $path;
            //File Upload Service as s3
            $sourceFileURL = env('APP_URL').'/'.$path;
            $curl = curl_init();
            curl_setopt_array($curl, array(
            CURLOPT_URL => 'http://172.105.42.62/s3-file-server/api-upload.php',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => array('file_url' => $sourceFileURL),
            CURLOPT_HTTPHEADER => array(
                'Cookie: private_content_version=3f7abce738dd8b52d0dcb8653bfe8e93; mage-messages=%5B%7B%22type%22%3A%22error%22%2C%22text%22%3A%22Invalid%20Form%20Key.%20Please%20refresh%20the%20page.%22%7D%2C%7B%22type%22%3A%22error%22%2C%22text%22%3A%22Invalid%20Form%20Key.%20Please%20refresh%20the%20page.%22%7D%2C%7B%22type%22%3A%22error%22%2C%22text%22%3A%22Invalid%20Form%20Key.%20Please%20refresh%20the%20page.%22%7D%5D'
            ),
            ));
            $response = curl_exec($curl);
            curl_close($curl);
            $uploadedFile = json_decode($response,true);
            $uploadedFileURL = isset($uploadedFile['url']) ? $uploadedFile['url'] : '';
            }
            $data['UserProfileImage'] = $uploadedFileURL;
        }

        $data['Updated_by'] = session('UserId');
        $data['Updated_at'] = date('Y-m-d H:i:s', time());

        $isActiveTemp = isset($data['isActive']) ? $data['isActive'] : '';


        if($isActiveTemp == '1')
        {
            $data['Status'] = 'Activated';
        }
        else if($isActiveTemp == '0')
        {
            $data['Status'] = 'In-Active';
        }

        unset($data['_token']);
        unset($data['ProfilePic']);
        $update_user = User::where('UserId', $UserId)->update($data);

        $FirstName = $request->post('FirstName');
        $LastName = $request->post('LastName');
        $FullName = $FirstName." ".$LastName;
        $Email = $request->post('Email');
        $Mobile = $request->post('Mobile');
        $CompanyName = $request->post('CompanyName');
        $CompanyCode = $request->post('CrmId');
        $Department = $request->post('Department');
        $AboutMe = $request->post('AboutMe');
        $CommunityNickname = $request->post('CommunityNickname');
        $Street = $request->post('Address');
        $City = $request->post('City');
        $State = $request->post('State');
        $CountryPrimaryId = $request->post('Country');
        $Country = '';
        if($CountryPrimaryId){
            $customer_details = Countries::select('tbl_countries.country_name')
            ->where('tbl_countries.id', $CountryPrimaryId)
            ->get()->first();
            $Country = $customer_details->country_name;
        }
        $PostalCode = $request->post('PostalCode');
        $OtpVerified = $request->post('OtpVerified');
        $ProfileId = $request->post('ProfileId');
        $AssignExpenseAmount = $request->post('AssignExpenseAmount');
        $UpdatedBy = session('UserId');

        DB::connection('pgsql')->update("update salesforce.User__c set FirstName__c='$FirstName',LastName__c='$LastName',Email__c='$Email',Mobile__c='$Mobile',Company_Name__c='$CompanyName',CrmId__c='$CompanyCode',Department__c='$Department',About_Me__c='$AboutMe',Community_Nick_name__c='$CommunityNickname',Address__c='$Street',City__c='$City',Country__c='$Country',State__c='$State',PostalCode__c='$PostalCode',Otp_Verified__c='$OtpVerified',ProfileId__c='$ProfileId',Assign_Expense_Amount__c='$AssignExpenseAmount',Updated_by__c='$UpdatedBy',
        Name='$FullName' where UserId__c='$UserId'");

        if ($update_user) {
            return response()->json('status_success');
        } else {
            return response()->json('status_failed');
        }
    }

    ### Update User Password
    public function updatePassword(Request $request)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }


        $UserId = $request->input('UserId');
        $Password = $request->input('Password');

        $data['TempPassword'] = $Password;
        $data['Password'] = Crypt::encryptString($Password);

        $data['Updated_by'] = session('UserId');
        $data['Updated_at'] = date('Y-m-d H:i:s', time());

        $update_password = User::where('UserId', $UserId)->update($data);

        $TempPassword = $Password;
        $NPassword = Crypt::encryptString($Password);
        DB::connection('pgsql')->update("update salesforce.User__c set Temp_Password__c='$TempPassword',Password__c='$NPassword' where userid__c='$UserId'");

        if ($update_password) {
            return response()->json('status_success');
        } else {
            return response()->json('status_failed');
        }
    }
}