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/AdvocateController.php
<?php

namespace App\Http\Controllers;

use App\Exports\AdvocatesExport;
use App\Imports\AdvocatesImport;
use App\Models\Advocate;
use App\Models\Bill;
use App\Models\Cases;
use App\Models\PointOfContacts;
use App\Models\User;
use App\Models\UserDetail;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Throwable;
use Illuminate\Validation\Rules;
use Maatwebsite\Excel\Facades\Excel;
use Spatie\Permission\Models\Role;


class AdvocateController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        if(Auth::user()->can('manage advocate')){

            $advocates = Advocate::where('created_by', Auth::user()->creatorId())
                        ->with('getAdvUser')
                        ->get();

            return view('advocate.index',compact('advocates'));
        }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 advocate')){
            return view('advocate.create');

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

            $validator = Validator::make(
                $request->all(), [
                    'name' => 'required|max:120',
                    'email' => 'required|string|email|max:255|unique:users',
                    'password' => ['required','min:8'],
                    'phone_number' => 'required|regex:/^([0-9\s\-\+\(\)]*)$/',
                ]
            );


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

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

            $user = Auth::user();
            $plan = $user->getPlan();
            $total_user = Advocate::where('created_by',$user->creatorId())->count();

            if ($total_user < $plan->max_advocates || $plan->max_advocates == -1) {
                $new_user = User::create(
                    [
                        'name' => $request->name,
                        'email' => $request->email,
                        'password' => Hash::make($request->password),
                        'type' => 'advocate',
                        'lang' => 'en',
                        'avatar' => '',
                        'created_by' => Auth::user()->creatorId(),
                        'email_verified_at' => now(),
                    ]
                );
                $new_user->assignRole('advocate');

                $advocate = new Advocate();
                $advocate['user_id']              = $new_user->id;
                $advocate['phone_number']         = $request->phone_number;
                $advocate['age']                  = $request->age;
                $advocate['company_name']         = $request->company_name;
                $advocate['bank_details']         = $request->bank_details;
                $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']            = $request->ofc_state;
                $advocate['ofc_city']             = $request->ofc_city;
                $advocate['ofc_zip_code']         = $request->ofc_zip_code;
                $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']        = $request->home_zip_code;
                $advocate['created_by']           = Auth::user()->creatorId();
                $advocate->save();

                return redirect()->route('advocate.index')->with('success', __('Advocate successfully created.'));
            }else{

                return redirect()->route('advocate.index')->with('error', __('Your user limit is over, Please upgrade plan.'));
            }
        }else{
            return redirect()->back()->with('error', __('Permission Denied.'));

        }

    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        if (Auth::user()->can('view advocate')) {

            $cases = [];
            $cases_data = Cases::get();

            foreach($cases_data as $key => $case){

                if(str_contains($case->advocates, $id)){
                    $cases[$key]['id']          = $case->id;
                    $cases[$key]['court']       = $case->court;
                    $cases[$key]['case_number'] = $case->case_number;
                    $cases[$key]['title']       = $case->title;
                    $cases[$key]['advocates']   = $case->advocates;
                    $cases[$key]['year']        = $case->year;
                    $cases[$key]['filing_date'] = $case->filing_date;
                }
            }

            return view('advocate.view',compact('cases'));

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

        }

    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        if (Auth::user()->can('edit advocate')) {

            $advocate = Advocate::find($id);
            if($advocate){
                $userAdd = User::where('email',$advocate->email)->first();
                $contacts = PointOfContacts::where('advocate_id',$advocate->id)->get();
                return view('advocate.edit',compact('advocate','contacts','userAdd'));
            }else{

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

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

        }

    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        if (Auth::user()->can('edit advocate')) {

            $validator = Validator::make(
                $request->all(), [
                    'name' => 'required|max:120',
                    'email' => 'required|email',
                    'phone_number' => 'required|regex:/^([0-9\s\-\+\(\)]*)$/',
                ]
            );


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

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

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

            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']         = $request->phone_number;
            $advocate['age']                  = $request->age;
            $advocate['company_name']         = $request->company_name;
            $advocate['bank_details']              = $request->bank_details;
            $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'] = $request->ofc_state;
            $advocate['ofc_city'] = $request->ofc_city;
            $advocate['ofc_zip_code'] = $request->ofc_zip_code;
            $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'] = $request->home_zip_code;
            $advocate->save();

            $userAdd->name = $request->name;
            $userAdd->email = $request->email;
            $userAdd->referral_id ='#'.time();
            $userAdd->save();

            return redirect()->route('advocate.index')->with('success', __('Advocate successfully updated.'));

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

        }

    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        if (Auth::user()->can('delete advocate')) {
            try {
                $adv = Advocate::find($id);

                if ($adv) {
                    $userAdd = $adv->getAdvUser($adv->user_id);

                    if($userAdd) {
                        $userAdd->delete();
                    }

                    $adv->delete();
                    return redirect()->route('advocate.index')->with('success', __('Advocate successfully deleted.'));
                }else{


                }

            } catch (Throwable $th) {

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



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

        }

    }

    public function contacts($id){
        if(Auth::user()->can('view advocate')){
            $contacts = PointOfContacts::where('advocate_id',$id)->get();
            return view('advocate.contacts',compact('contacts'));
        }else{
            return redirect()->back()->with('error', __('Permission Denied.'));

        }
    }

    public function bills($id){
        if(Auth::user()->can('view advocate')){
            $bills = Bill::where('advocate',$id)->get();
            return view('advocate.bills',compact('bills'));
        }else{
            return redirect()->back()->with('error', __('Permission Denied.'));

        }
    }

    public function view($id){
        if(Auth::user()->can('view advocate')){
            $advocate = Advocate::find($id);
            return view('advocate.detail',compact('advocate'));
        }else{
            return redirect()->back()->with('error', __('Permission Denied.'));
        }
    }
    public function manageHearings($id){
        if(Auth::user()->can('view advocate')){
            $advocate = Advocate::find($id);

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

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

    public function fileImport()
    {
        return view('advocate.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 AdvocatesImport())->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', '=', 'advocate')->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 = 'advocate';
                    $dealData->save();

                    $dealData->assignRole('advocate');

                    $detail = new Advocate();
                    $detail->user_id = $dealData->id;
                    $detail->created_by = Auth::user()->creatorId();
                    $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']);


    }
}