HEX
Server: Apache
System: Linux amsngx344.inmotionhosting.com 4.18.0-553.40.1.lve.el8.x86_64 #1 SMP Wed Feb 12 18:54:57 UTC 2025 x86_64
User: raniho6 (2736)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: /home/raniho6/public_html/raniworks.stream/app/Http/Controllers/ClientController.php
<?php

namespace App\Http\Controllers;

use App\Models\Client;
use App\Models\ClientProject;
use App\Models\ClientWorkspace;
use App\Models\Mail\SendClientLoginDetail;
use App\Exports\clientsExport;
use App\Imports\clientsImport;
use Maatwebsite\Excel\Facades\Excel;
use App\Models\Plan;
use App\Models\Utility;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Validator;


class ClientController extends Controller
{
    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\Support\Renderable
     */

    public function clientLogout(Request $request)
    {
        \Auth::guard('client')->logout();

        $request->session()->invalidate();

        return redirect()->route('client.login');
    }

    public function index($slug)
    {
        $this->middleware('auth');
        $currentWorkspace = Utility::getWorkspaceBySlug($slug);
        if ($currentWorkspace->creater->id == \Auth::user()->id) {
            $clients = Client::select(
                [
                    'clients.*',
                    'client_workspaces.is_active',
                ]
            )->join('client_workspaces', 'client_workspaces.client_id', '=', 'clients.id')->where('client_workspaces.workspace_id', '=', $currentWorkspace->id)->get();

            return view('clients.index', compact('currentWorkspace', 'clients'));
        } else {
            return redirect()->route('home');
        }
    }

    public function create($slug)
    {
        $currentWorkspace = Utility::getWorkspaceBySlug($slug);

        return view('clients.create', compact('currentWorkspace'));
    }

    public function store($slug, Request $request)
    {
        $objUser = \Auth::user();
        $currentWorkspace = Utility::getWorkspaceBySlug($slug);
        $setting = Utility::getAdminPaymentSettings();

        $registerClient = Client::where('email', '=', $request->email)->first();
        $clientPassword = $request->password;
        $password = !is_null($clientPassword) ? Hash::make($clientPassword) : null;
        $passwordSwitch = 0;
        if (!empty($request->password_switch) && $request->password_switch == 'on') {
            $passwordSwitch = 1;
            $validator = Validator::make($request->all(), ['password' => 'required|min:6']);
            if ($validator->fails()) {
                return redirect()->back()->with('error', $validator->errors()->first());
            }
        }
        if (!$registerClient) {
            $arrUser['name'] = $request->name;
            $arrUser['email'] = $request->email;
            $arrUser['password'] = $password;
            $arrUser['currant_workspace'] = $currentWorkspace->id;
            $arrUser['lang'] = isset($currentWorkspace->lang) ? $currentWorkspace->lang : 'en';
            $arrUser['is_enable_login'] = $passwordSwitch;
            $registerClient = Client::create($arrUser);

            try {
                $registerClient->password = $request->password;
                $user = Client::where('email', '=', $request->email)->first();
                $uArr = [
                    'user_name' => $request->name,
                    // 'app_name' => env('APP_NAME'),
                    'app_name' => $setting['app_name'],
                    'email' => $request->email,
                    'password' => $request->password,
                    'app_url' => env('APP_URL'),
                ];

                // Send Email
                $resp = Utility::sendclientEmailTemplate('New Client', $user->id, $uArr);
                // Mail::to($request->email)->send(new SendClientLoginDetail($registerClient));
            } catch (\Exception $e) {
                $smtp_error = __('E-Mail has been not sent due to SMTP configuration');
            }
        }
        $checkClient = ClientWorkspace::where('client_id', '=', $registerClient->id)->where('workspace_id', '=', $currentWorkspace->id)->first();
        if (!$checkClient) {
            ClientWorkspace::create(
                [
                    'client_id' => $registerClient->id,
                    'workspace_id' => $currentWorkspace->id,
                ]
            );
        } else {
            return redirect()->back()->with('error', __('Client Is Already Exist.'));
        }

        return redirect()->route('clients.index', $currentWorkspace->slug)->with('success', __('Client Created Successfully!') . ((isset($smtp_error)) ? ' <br> <span class="text-danger">' . $smtp_error . '</span>' : ''));
    }




    public function export()
    {
        $name = 'clients_' . date('Y-m-d i:h:s');
        $data = Excel::download(new clientsExport(), $name . '.xlsx');
        ob_end_clean();

        return $data;
    }




    public function importFile($slug)
    {

        return view('clients.import', compact('slug'));
    }


    public function import(Request $request)
    {
        $slug = $request->slug;


        $currentWorkspace = Utility::getWorkspaceBySlug($slug);

        $rules = [
            'file' => 'required|mimes:csv,txt',
        ];

        $validator = \Validator::make($request->all(), $rules);

        if ($validator->fails()) {
            $messages = $validator->getMessageBag();

            return redirect()->back()->with('error', $messages->first());
        }

        $Users = (new clientsImport())->toArray(request()->file('file'))[0];

        $totalCustomer = count($Users) - 1;
        $errorArray = [];


        for ($i = 1; $i <= count($Users) - 1; $i++) {
            $user = $Users[$i];

            $userByEmail = Client::where('email', $user[2])->first();


            if (!empty($userByEmail)) {
                $userData = $userByEmail;
            } else {
                $userData = new Client();
                // $userData->id = $this->UserNumber();

            }
            $userData->name = $user[1];
            $userData->email = $user[2];
            $userData->password = Hash::make($user[3]);
            $userData->currant_workspace  = $currentWorkspace->id;

            if (empty($userData)) {
                $errorArray[] = $userData;
            } else {
                $userData->save();
            }

            $clientByEmail = ClientWorkspace::where('client_id', $userData->id)->first();
            if (!$clientByEmail) {
                $objWorkspace = new ClientWorkspace();
                $objWorkspace->client_id = $userData->id;
                $objWorkspace->workspace_id = $currentWorkspace->id;
                if (empty($objWorkspace)) {
                    $errorArray[] = $objWorkspace;
                } else {
                    $objWorkspace->save();
                }
            } else {
                return redirect()->back()->with("error", __($user[1] . " client already exits."));
            }
        }

        $errorRecord = [];
        if (empty($errorArray)) {
            $data['status'] = 'success';
            $data['msg'] = __('Record successfully imported');
        } else {
            $data['status'] = 'error';
            $data['msg'] = count($errorArray) . ' ' . __('Record imported fail out of' . ' ' . $totalCustomer . ' ' . 'record');


            foreach ($errorArray as $errorData) {

                $errorRecord[] = implode(',', $errorData);
            }

            \Session::put('errorArray', $errorRecord);
        }

        return redirect()->back()->with($data['status'], $data['msg']);
    }

    public function edit($slug, $id)
    {
        $client = Client::find($id);
        $currentWorkspace = Utility::getWorkspaceBySlug($slug);

        return view('clients.edit', compact('client', 'currentWorkspace'));
    }

    public function update($slug, $id, Request $request)
    {
        $client = Client::find($id);
        $user_auth = \Auth::user();
        $client_keyword = isset($user_auth) ? (($user_auth->getGuard() == 'client') ? 'client.' : '') : '';
        if ($client) {
            $currentWorkspace = Utility::getWorkspaceBySlug($slug);
            $client->name = $request->name;
            if ($request->email) {
                $client->email = $request->email;
            }
            // if ($request->password) {
            //     $client->password = Hash::make($request->password);

            // }
            $client->save();
            if ($user_auth->getGuard() == 'client') {
                return redirect()->route($client_keyword . 'users.my.account')->with('success', __('Client Updated Successfully!'));
            } else {
                return redirect()->route('clients.index', $currentWorkspace->slug)->with('success', __('Client Updated Successfully!'));
            }
        } else {
            return redirect()->back()->with('error', __('Something is wrong.'));
        }
    }

    // public function destroy($slug, $id)
    // {
    //     $client = Client::find($id);

    //     if ($client) {
    //         $currentWorkspace = Utility::getWorkspaceBySlug($slug);
    //         ClientWorkspace::where('client_id', '=', $client->id)->delete();
    //         ClientProject::where('client_id', '=', $client->id)->delete();
    //         $client->delete();

    //         return redirect()->route('clients.index', $currentWorkspace->slug)->with('success', __('Client Deleted Successfully!'));
    //     } else {
    //         return redirect()->back()->with('error', __('Something is wrong.'));
    //     }
    // }
    public function destroy($slug, $id)
    {
        $client = Client::find($id);
        if ($client) {
            $currentWorkspace = Utility::getWorkspaceBySlug($slug);
            $clientAllWorkspace = ClientWorkspace::where('client_id', $id)->get();
            if (count($clientAllWorkspace) > 1) {
                $clientAllWorkspace = ClientWorkspace::where('client_id', $id)->first();
                $client->currant_workspace = $clientAllWorkspace->workspace_id;
                $client->save();
                // ClientWorkspace::where('workspace_id', '=', $currentWorkspace->id)->delete();
                // ClientProject::where('workspace_id', '=', $currentWorkspace->id)->delete();
                ClientWorkspace::where('workspace_id', '=', $currentWorkspace->id)->where('client_id', '=', $id)->delete();
                ClientProject::where('workspace_id', '=', $currentWorkspace->id)->where('client_id', '=', $id)->delete();
                return redirect()->back()->with('success', __('Client Deleted Successfully!'));
            } else {
                // ClientWorkspace::where('workspace_id', '=', $currentWorkspace->id)->delete();
                // ClientProject::where('workspace_id', '=', $currentWorkspace->id)->delete();
                ClientWorkspace::where('workspace_id', '=', $currentWorkspace->id)->where('client_id', '=', $id)->delete();
                ClientProject::where('workspace_id', '=', $currentWorkspace->id)->where('client_id', '=', $id)->delete();
                $client->delete();
                return redirect()->back()->with('success', __('Client Deleted Successfully!'));
            }
        } else {
            return redirect()->back()->with('error', __('Something is wrong.'));
        }
    }

    public function updateBilling(Request $request)
    {
        $objUser = \Auth::user();
        $objUser->address = $request->address;
        $objUser->city = $request->city;
        $objUser->state = $request->state;
        $objUser->zipcode = $request->zipcode;
        $objUser->country = $request->country;
        $objUser->telephone = $request->telephone;
        $objUser->save();
        return redirect()->back()->with('success', __('Billing Details Updated Successfully!'));
    }
    public function resetPassword($slug, $id)
    {
        $client = Client::find($id);
        $currentWorkspace = Utility::getWorkspaceBySlug($slug);
        return view('clients.reset_password', compact('client', 'currentWorkspace'));
    }

    public function changePassword($slug, $id, Request $request)
    {
        $request->validate(
            [
                'password' => 'required|same:password',
                'password_confirmation' => 'required|same:password',
            ]
        );
        $client = Client::find($id);
        if ($client) {
            $currentWorkspace = Utility::getWorkspaceBySlug($slug);
            if ($request->login_enable == true) {
                $client->password = Hash::make($request->password);
                $client->is_enable_login = 1;
                $client->save();
            } else {
                $client->password = Hash::make($request->password);
                $client->save();
            }
            return redirect()->route('clients.index', $currentWorkspace->slug)->with('success', __('Password Updated Successfully!'));
        } else {
            return redirect()->back()->with('error', __('Something is wrong.'));
        }
    }

    public function clientManageLogin(Request $request, $clientId)
    {
        $clientId = decrypt($clientId);
        $client = Client::where('id', $clientId)->first();
        if ($client) {
            if ($client->is_enable_login == 1) {
                $client->is_enable_login = 0;
                $client->save();

                return redirect()->back()->with('success', 'client login disable successfully.');
            } else {
                $client->is_enable_login = 1;
                $client->save();
                return redirect()->back()->with('success', 'client login enable successfully.');
            }
        } else {
            return redirect()->back()->with('error', 'client Not Found !!!');
        }
    }
}