MOON
Server: Apache
System: Linux 101-53-147-124.cprapid.com 4.18.0-553.121.1.el8_10.x86_64 #1 SMP Thu Apr 30 09:06:34 EDT 2026 x86_64
User: clientsoftwares (1005)
PHP: 8.2.30
Disabled: show_source, system, shell_exec, passthru, exec, popen, proc_open
Upload Files
File: /home/clientsoftwares/www/advocate.clientsoftwares.com/app/Http/Controllers/ClientController.php
<?php

namespace App\Http\Controllers;

use App\Exports\ClientExport;
use App\Imports\ClientsImport;
use App\Models\Advocate;
use App\Models\group;
use App\Models\Order;
use App\Models\Plan;
use App\Models\Hearing;
use App\Models\PointOfContacts;
use App\Models\User;
use App\Models\Bill;
use App\Models\Fee;
use App\Models\UserDetail;
use App\Models\Utility;
use Database\Seeders\UserSeeder;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Spatie\Permission\Models\Role;
use DB;
use Carbon\Carbon;
use Maatwebsite\Excel\Facades\Excel;

class ClientController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {

        if (Auth::user()->can('manage member') || Auth::user()->can('manage user')) {

            $users = User::where('created_by', '=', Auth::user()->creatorId())
                    ->where('type','client')
                    ->get();

            $user_details = UserDetail::get();

            return view('client.index', compact('users', 'user_details'));

        } else {
            return redirect()->back()->with('error', __('Permission Denied.'));

        }

    }

    public function userList()
    {

        if (Auth::user()->can('manage member') || Auth::user()->can('manage user')) {

            $users = User::where('created_by', '=', Auth::user()->creatorId())->where('type','client')->get();
            $user_details = UserDetail::get();

            return view('client.list', compact('users', 'user_details'));

        } else {
            return redirect()->back()->with('error', __('Permission Denied.'));

        }

    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        if (Auth::user()->can('create member') || Auth::user()->can('create user')) {

            $roles = Role::where('created_by', Auth::user()->creatorId())->where('id', '!=', Auth::user()->id)->where('name','!=','Advocate')->get()->pluck('name', 'id');

            return view('client.create', compact('roles'));
        } else {
            return redirect()->back()->with('error', __('Permission Denied.'));
        }
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        if (Auth::user()->can('create member') || Auth::user()->can('create user')) {

            if (Auth::user()->type == 'company') {
                $validator = Validator::make(
                    $request->all(), [
                        'name' => 'required|max:120',
                        'email' => 'nullable|email|unique:users',
                        'password' => 'required|min:8',
                    ]
                );

                if ($validator->fails()) {
                    $messages = $validator->getMessageBag();
                    return redirect()->back()->with('error', $messages->first());
                }

                $user = Auth::user();
                $user = new User();
                $user['name'] = $request->name;
                $user['email'] = $request->email;
                $user['password'] = Hash::make($request->password);
                $user['lang'] = 'en';
                $user['created_by'] = Auth::user()->creatorId();
                $user['email_verified_at'] = date('Y-m-d H:i:s');

                $user->assignRole('client');
                $user['type'] = 'client';

                $user->save();

                $detail = new UserDetail();
                $detail->user_id = $user->id;
                $detail->save();

                return redirect()->route('client.index')->with('success', __('Member successfully created.'));


            } else {

                $validator = Validator::make(
                    $request->all(), [
                        'name' => 'required|max:120',
                        'email' => 'required|email|unique:users',
                        'password' => 'required|min:8',
                    ]
                );

                if ($validator->fails()) {
                    $messages = $validator->getMessageBag();
                    return redirect()->back()->with('error', $messages->first());
                }

                $user = new User();
                $user['name'] = $request->name;
                $user['email'] = $request->email;
                $user['password'] = Hash::make($request->password);
                $user['lang'] = 'en';
                $user['created_by'] = Auth::user()->creatorId();
                $user['plan'] = Plan::first()->id;

                if (Utility::settings()['email_verification'] == 'off') {
                   $user['email_verified_at'] = date('Y-m-d H:i:s');
                }

                $role_r = Role::findByName('company');
                $user->assignRole($role_r);
                $user['type'] = 'company';

                $user->save();

                $detail = new UserDetail();
                $detail->user_id = $user->id;
                $detail->save();

                //create company default roles
                $user->MakeRole($user->id);

                return redirect()->route('users.index')->with('success', __('Member successfully created.'));

            }

        } else {
            return redirect()->back()->with('error', __('Permission Denied.'));

        }

    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($user_id)
    {


        $user= User::where('id', $user_id)->first();

        if ($user) {

            $case = DB::table("cases")
                        ->select("cases.*")
                        ->get();
            $cases=[];
            foreach($case as $value)
            {
               $data=json_decode($value->your_party_name);
               foreach($data as $key => $val)
               {
                   if(isset($val->clients)&& $val->clients ==$user->id)
                   {
                        $hearings = Hearing::where('case_id',$value->id)->get();
                        $value->hearings=$hearings;
                        $cases[$value->id]=$value;
                   }
               }
            }
            $bills = Bill::where('bill_to',$user->id)->get();
             $fees = Fee::where('member',$user->id)->get();
            return view('client.view', compact('user','cases','bills','fees'));
        }

    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {

        $user = User::find($id);
        $user_detail = UserDetail::where('user_id', $user->id)->first();
        $roles = Role::where('created_by', '=', $user->creatorId())->get()->pluck('name', 'id');
        $advocate = $contacts = [];

        if(Auth::user()->type == 'advocate'){
            $advocate = Advocate::where('user_id',$user->id)->first();
            $contacts = PointOfContacts::where('advocate_id',$advocate->id)->get();
        }
        return view('users.edit', compact('user', 'roles', 'user_detail','advocate','contacts'));

    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {

        $validator = Validator::make(
            $request->all(), [
                'name' => 'required|max:120',
                'email' => 'required|email',
            ]
        );
        if (!empty($request->mobile_number)) {

            $validator = Validator::make(
                $request->all(), [
                    'mobile_number' => 'required|regex:/^([0-9\s\-\+\(\)]*)$/|min:10',
                ]
            );
        }

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

            return redirect()->back()->with('error', $messages->first());
        }
        $user = User::find($id);

        if ($user) {
            if (Auth::user()->type == 'advocate') {

                $adv = Advocate::where('user_id',$user->id)->first();

                if ($adv) {


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

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

                    $advocate = Advocate::find($adv->id);
                    $userAdd = $advocate->getAdvUser($advocate->user_id);

                    if ($userAdd->email != $request->email) {

                        $users = User::where('email',$request->email)->first();
                        if (!empty($users)) {
                            return redirect()->back()->with('error', __('Email address already exist.'));
                        }
                    }

                    $advocate['phone_number'] = !empty($request->phone_number) ? $request->phone_number : NULL;
                    $advocate['age'] = !empty($request->age) ? $request->age : NULL;
                    $advocate['company_name'] = $request->company_name;
                    $advocate['website'] = $request->website;
                    $advocate['ofc_address_line_1'] = $request->ofc_address_line_1;
                    $advocate['ofc_address_line_2'] = $request->name;
                    $advocate['ofc_country'] = $request->ofc_country;
                    $advocate['ofc_state'] = !empty($request->ofc_state) ? $request->ofc_state : NULL;
                    $advocate['ofc_city'] = $request->ofc_city;
                    $advocate['ofc_zip_code'] = !empty($request->ofc_zip_code) ? $request->ofc_zip_code : NULL;
                    $advocate['home_address_line_1'] = $request->home_address_line_1;
                    $advocate['home_address_line_2'] = $request->home_address_line_2;
                    $advocate['home_country'] = $request->home_country;
                    $advocate['home_state'] = $request->home_state;
                    $advocate['home_city'] = $request->home_city;
                    $advocate['home_zip_code'] = !empty($request->home_zip_code) ? $request->home_zip_code : NULL;
                    $advocate->save();

                    $userAdd->name = $request->name;
                    $userAdd->email = $request->email;

                    if ($request->hasFile('profile')) {
                        $filenameWithExt = $request->file('profile')->getClientOriginalName();
                        $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
                        $extension = $request->file('profile')->getClientOriginalExtension();
                        $fileNameToStore = $filename . '_' . time() . '.' . $extension;
                        $dir = 'uploads/profile/';
                        $path = Utility::upload_file($request, 'profile', $fileNameToStore, $dir, []);

                        if ($path['flag'] == 1) {
                            $url = $path['url'];
                        } else {
                            return redirect()->route('users.index', Auth::user()->id)->with('error', __($path['msg']));
                        }

                        $userAdd->avatar = $fileNameToStore;
                    }

                    $userAdd->save();

                    return redirect()->back()->with('success', __('Successfully Updated!'));

                }else{
                    return redirect()->back()->with('error', __('Advocate not found.'));

                }


            }else{
                $user['name'] = $request->name;
                $user['email'] = $request->email;

                if ($request->hasFile('profile')) {
                    if (Auth::user()->type == 'super admin') {
                        $filenameWithExt = $request->file('profile')->getClientOriginalName();
                        $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
                        $extension = $request->file('profile')->getClientOriginalExtension();
                        $fileNameToStore = $filename . '_' . time() . '.' . $extension;
                        $settings = Utility::Settings();
                        $url = '';
                        $dir = 'uploads/profile/';
                        $path = Utility::upload_file($request, 'profile', $fileNameToStore, $dir, []);

                        if ($path['flag'] == 1) {
                            $url = $path['url'];
                        } else {
                            return redirect()->route('users.index', Auth::user()->id)->with('error', __($path['msg']));
                        }

                        $user->avatar = $fileNameToStore;
                    }else{
                        $dir        = 'uploads/profile/';
                        $file_path = $dir.$user['avatar'];
                        $image_size = $request->file('profile')->getSize();

                        $result = Utility::updateStorageLimit(Auth::user()->id, $image_size);

                        if($result==1) {

                            Utility::changeStorageLimit(Auth::user()->id, $file_path);
                            $filenameWithExt = $request->file('profile')->getClientOriginalName();
                            $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
                            $extension = $request->file('profile')->getClientOriginalExtension();
                            $fileNameToStore = $filename . '_' . time() . '.' . $extension;
                            $settings = Utility::Settings();
                            $url = '';
                            $dir = 'uploads/profile/';
                            $path = Utility::upload_file($request, 'profile', $fileNameToStore, $dir, []);

                            if ($path['flag'] == 1) {
                                $url = $path['url'];
                            } else {
                                return redirect()->route('users.index', Auth::user()->id)->with('error', __($path['msg']));
                            }

                            $user->avatar = $fileNameToStore;
                        }
                    }


                }

                $user->update();

                $detail = UserDetail::where('user_id', $user->id)->first();

                $detail->mobile_number = !empty($request->mobile_number) ? $request->mobile_number : null;
                $detail->address = $request->address;
                $detail->city = $request->city;
                $detail->state = $request->state;
                $detail->zip_code = !empty($request->zip_code) ? $request->zip_code : null;
                $detail->landmark = $request->landmark;
                $detail->about = $request->about;

                $detail->save();

                return redirect()->route('users.index')->with('success', __('Successfully Updated!'));
            }


        } else {
            return redirect()->back()->with('error', __('Member not found.'));

        }



    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        if (Auth::user()->can('delete member') || Auth::user()->can('delete user')) {
            $user = User::find($id);
            $detail = UserDetail::where('user_id', $user->id)->first();

            if ($user->created_by != Auth::user()->creatorId()) {
                return redirect()->back()->with('error', __('You cant delete yourself.'));
            } else {
                if ($user && $detail) {
                    $user->delete();
                    $detail->delete();

                    $data = explode(',', $detail->my_group);
                    $my_groups = group::whereIn('id', $data)->get();

                    foreach ($my_groups as $key => $value) {
                        if (str_contains($value->members, $detail->user_id)) {
                            $value->members = trim($value->members, $detail->user_id);
                            $value->save();
                        }
                    }

                    return redirect()->back()->with('success', __('Member deleted successfully.'));
                }
            }
        } else {
            return redirect()->back()->with('error', __('Member not found.'));
        }
    }

    public function changeMemberPassword(Request $request, $id)
    {

        $validator = Validator::make(
            $request->all(),
            [
                'password' => 'required|same:confirm_password',
            ]
        );

        if ($validator->fails()) {
            $messages = $validator->getMessageBag();
            return redirect()->back()->with('error', $messages->first());
        }

        $objUser = User::find($id);
        $objUser->password = Hash::make($request->password);
        $objUser->save();

        return redirect()->back()->with('success', __('Password updated successfully.'));

    }

    public function companyPassword($id)
    {
        $eId   = Crypt::decrypt($id);
        $user  = User::find($eId);

        $employee = User::where('id', $eId)->first();

        return view('users.reset', compact('user', 'employee'));
    }

    public function upgradePlan($user_id)
    {
        $user  = User::find($user_id);
        $plans = Plan::get();
        $admin_payment_setting = Utility::settings();
        return view('users.plan', compact('user', 'plans','admin_payment_setting'));
    }

    public function activePlan($user_id, $plan_id)
    {
        $user       = User::find($user_id);
        $user->plan = $plan_id;
        $user->save();
        $assignPlan = $user->assignPlan($plan_id);
        $plan       = Plan::find($plan_id);

        if($assignPlan['is_success'] == true && !empty($plan))
        {
            $orderID = strtoupper(str_replace('.', '', uniqid('', true)));
            Order::create(
                [
                    'order_id' => $orderID,
                    'name' => null,
                    'card_number' => null,
                    'card_exp_month' => null,
                    'card_exp_year' => null,
                    'plan_name' => $plan->name,
                    'plan_id' => $plan->id,
                    'price' => $plan->price,
                    'price_currency' => env('CURRENCY'),
                    'txn_id' => '',
                    'payment_type' => __('Manually Upgrade By Super Admin'),
                    'payment_status' => 'succeeded',
                    'receipt' => null,
                    'user_id' => $user->id,
                ]
            );
        }

        return redirect()->back()->with('success', __('Plan successfully activated.'));
    }

    public function fileImport()
    {
        return view('client.import');
    }

    public function import(Request $request)
    {
        $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());
        }

        $clients = (new ClientsImport())->toArray(request()->file('file'))[0];

        $totalcase = count($clients) - 1;
        $errorArray    = [];

        $user = Auth::user();
        $plan = $user->getPlan();

        $total_user = User::where('type', '=', 'user')->where('type', '!=', 'client')->where('created_by', '=', $user->creatorId())->count();

        if ($total_user < $plan->max_users || $plan->max_users == -1) {

            for ($i = 1; $i <= count($clients) - 1; $i++) {
                $deal          = $clients[$i];
                $check_user = User::where('type', '=', 'client')->where('created_by', '=', $user->creatorId())->first();

                if(!$check_user){

                    $dealData = new User();
                    $dealData->name = $deal[0];
                    $dealData->email = $deal[1];
                    $dealData->password = Hash::make($deal[2]);
                    $dealData->lang = 'en';
                    $dealData->created_by = Auth::user()->creatorId();
                    $dealData->email_verified_at = date('Y-m-d H:i:s');
                    $dealData->created_by = Auth::user()->id;
                    $dealData->type = 'client';
                    $dealData->save();

                    $dealData->assignRole('client');

                    $detail = new UserDetail();
                    $detail->user_id = $dealData->id;
                    $detail->save();
                }else{
                    $errorArray[] = $i;
                    $data['status'] = 'error';
                    $data['msg'] = $totalcase . '  ' . __($check_user->email.' Already exist.');
                }
            }
            if (!empty($errorArray)) {
                $data['status'] = 'error';
                $data['msg'] = $totalcase . '  ' . __('Record imported fail out of' . ' ' . count($errorArray) . ' ' . 'record');
            } else {
                $data['status'] = 'success';
                $data['msg']    = __('Record successfully imported');
            }

        }else{
            $data['status'] = 'error';
            $data['msg'] = $totalcase . '  ' . __('Record imported fail out of' . ' ' . count($errorArray) . ' ' . 'record');
        }

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


    }

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