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

namespace App\Http\Controllers;

use App\Exports\CasesExport;
use App\Imports\ImportCase;
use App\Models\Advocate;
use App\Models\Cases;
use App\Models\Court;
use App\Models\Document;
use App\Models\Hearing;
use App\Models\HearingType;
use App\Models\Motion;
use App\Models\User;
use App\Models\Utility;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Validator;
use Maatwebsite\Excel\Facades\Excel;

class CaseController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        if (Auth::user()->can('manage case')) {
            if (Auth::user()->type == 'client') {
                $user = Auth::user()->id;
                $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) {
                            $cases[$value->id] = $value;
                        }
                    }
                }
            } else {

                $cases = Cases::with('getCourt')
                    ->where('created_by', Auth::user()->creatorId())
                    ->get();
            }


            return view('cases.index', compact('cases'));
        } 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 case')) {
            $courts = Court::where('created_by', Auth::user()->creatorId())->pluck('name', 'id');
            $advocates = User::where('created_by', Auth::user()->creatorId())->where('type', 'advocate')->pluck('name', 'id');
            $clients = User::where('created_by', Auth::user()->creatorId())->where('type', 'client')->pluck('name', 'id')->prepend('Please Select', '');
            $team = User::where('created_by', Auth::user()->creatorId())->where('type', '!=', 'advocate')->pluck('name', 'id');

            $HearingType = HearingType::where('created_by', Auth::user()->creatorId())->pluck('type', 'id');
            $motions = Motion::where('created_by', Auth::user()->creatorId())->pluck('type', 'id');
            return view('cases.create', compact('courts', 'advocates', 'team', 'HearingType', 'motions', 'clients'));
        } 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 case')) {
            $validator = Validator::make(
                $request->all(),
                [
                    'court' => 'required',
                    'year' => 'required',
                    'case_number' => 'required',
                    'title' => 'required',
                    'filing_date' => 'required',
                    'your_party' => 'required',
                ]
            );

            if ($validator->fails()) {
                $messages = $validator->getMessageBag();
                return redirect()->back()->with('error', $messages->first());
            }
            $your_party_name_temp = array();
            foreach ($request->your_party_name as $items) {

                foreach ($items as $k => $item) {

                    if (($k == 'name')  && (!empty($item) && $item != null)) {
                        $your_party_name_temp[] = $items;
                    }

                    if (empty($item) && $item < 0) {

                        $msg['flag'] = 'error';
                        $msg['msg'] = __('Please enter your party name');

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


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

            foreach ($request->opp_party_name as $items) {
                foreach ($items as $ke => $item) {
                    if ($ke == 'name' && !empty($item) && $item != null) {
                        $opp_party_name_temp[] = $items;
                    }
                    if (empty($item) && $item < 0) {
                        $msg['flag'] = 'error';
                        $msg['msg'] = __('Please enter your opponent party name');

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

                // $validator = Validator::make(
                //     $items, [
                //         'name' => 'required',

                //     ]
                // );

            }

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

            $case = new Cases();
            $case['court'] = $request->court;
            $case['highcourt'] = $request->highcourt;
            $case['bench'] = $request->bench;
            $case['casetype'] = $request->casetype;
            $case['casenumber'] = $request->casenumber;
            $case['diarybumber'] = !empty($request->diarybumber) ? $request->diarybumber : null;
            $case['year'] = $request->year;
            $case['case_number'] = $request->case_number;
            $case['filing_date'] = $request->filing_date;
            $case['court_hall'] = $request->court_hall;
            $case['floor'] = $request->floor;
            $case['title'] = $request->title;
            $case['description'] = $request->description;
            $case['under_acts'] = $request->under_acts;
            $case['under_sections'] = $request->under_sections;
            $case['FIR_number'] = $request->FIR_number;
            $case['FIR_year'] = $request->FIR_year;
            $case['opponents'] = json_encode($request->opponents);
            $case['filing_party'] = $request->filing_party;
            $case['case_status'] = $request->case_status;
            $case['motion'] = $request->motion;
            $case['opponent_advocates'] = json_encode($request->opponent_advocates);
            $case['advocates'] = $request->advocates != null ? implode(',', $request->advocates) : '';
            $case['court_room'] = $request->court_room;
            $case['opp_adv'] = $request->opp_adv;
            $case['stage'] = $request->stage;
            $case['created_by'] = Auth::user()->creatorId();
            $case['judge'] =  isset($request->judge) ? $request->judge : '';
            $case['police_station'] = $request->police_station;
            $case['your_party_name'] = json_encode($your_party_name_temp);
            $case['opp_party_name'] = json_encode($opp_party_name_temp);


            $file_name = [];
            if (!empty($request->case_docs) && count($request->case_docs) > 0) {
                foreach ($request->case_docs as $key => $file) {
                    $image_size = $file->getSize();
                    $result = Utility::updateStorageLimit(Auth::user()->creatorId(), $image_size);
                    if ($result == 1) {
                        $filenameWithExt = $file->getClientOriginalName();
                        $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
                        $extension = $file->getClientOriginalExtension();
                        $fileNameToStore = $filename . '_' . time() . rand(1, 100) . '.' . $extension;

                        $dir = 'uploads/case_docs/';
                        $path = Utility::keyWiseUpload_file($request, 'case_docs', $fileNameToStore, $dir, $key, []);
                        if ($path['flag'] == 1) {
                            $url = $path['url'];
                            $file_name[] = $fileNameToStore;
                        }
                    }
                }
            }

            $case['case_docs'] = !empty($file_name) ? implode(',', $file_name) : '';

            $case->save();


            return redirect()->route('cases.index')->with('success', __('Case successfully created.'));
        } 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 case')) {

            $case = Cases::find($id);
            $docs = Document::where('created_by', Auth::user()->creatorId())->where('cases', $case->id)->get();

            $documents = [];
            if (!empty($case->case_docs)) {
                $documents = explode(',', $case->case_docs);
            }
            $hearings = Hearing::where('case_id', $id)->get();
            return view('cases.view', compact('case', 'documents', 'hearings', 'docs'));
        } 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 case')) {
            $courts = Court::where('created_by', Auth::user()->creatorId())->pluck('name', 'id')->prepend('Please Select', '');
            $advocates = User::where('created_by', Auth::user()->creatorId())->where('type', 'advocate')->pluck('name', 'id');
            $team = User::where('created_by', Auth::user()->creatorId())->where('type', '!=', 'advocate')->pluck('name', 'id');
            $case = Cases::find($id);
            $your_advocates = [];
            if (!empty($case->advocates)) {
                $your_advocates = User::whereIn('id', explode(',', $case->advocates))
                    ->where(function ($query) {
                        $query->where('created_by', Auth::user()->creatorId())->orWhere('id', Auth::user()->creatorId());
                    })->get();
            }
            $your_team = User::where('created_by', Auth::user()->creatorId())->whereIn('id', explode(',', $case->your_team))->get();
            $priorities = ['Super Critical' => 'Super Critical', 'Critical' => 'Critical', 'Important' => 'Important', 'Routine' => 'Routine', 'Normal' => 'Normal'];
            $motions = Motion::where('created_by', Auth::user()->creatorId())->pluck('type', 'id');
            $clients = User::where('created_by', Auth::user()->creatorId())->where('type', 'client')->pluck('name', 'id');
            $case_typ = Cases::caseType();
            $documents = [];
            if (!empty($case->case_docs)) {
                $documents = explode(',', $case->case_docs);
            }
            return view('cases.edit', compact('courts', 'advocates', 'team', 'case', 'your_advocates', 'your_team', 'priorities', 'case_typ', 'motions', 'clients', 'documents'));
        } 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 case')) {

            $validator = Validator::make(
                $request->all(),
                [
                    'court' => 'required',
                    'year' => 'required',
                    'case_number' => 'required',
                    'title' => 'required',
                    'filing_date' => 'required',
                    'your_party' => 'required',
                ]
            );
            if ($validator->fails()) {
                $messages = $validator->getMessageBag();
                return redirect()->back()->with('error', $messages->first());
            }
            $your_party_name_temp = array();
            if ($request->your_party_name != null && !empty($request->your_party_name) && $request->your_party_name != "") {
                foreach ($request->your_party_name as $items) {

                    foreach ($items as $k => $item) {

                        if (($k == 'name')  && (!empty($item) && $item != null)) {
                            $your_party_name_temp[] = $items;
                        }

                        if (empty($item) && $item < 0) {

                            $msg['flag'] = 'error';
                            $msg['msg'] = __('Please enter your party name');

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

            if ($request->opp_party_name != null && !empty($request->opp_party_name) && $request->opp_party_name != "") {
                foreach ($request->opp_party_name as $items) {
                    foreach ($items as $ke => $item) {
                        if ($ke == 'name' && !empty($item) && $item != null) {
                            $opp_party_name_temp[] = $items;
                        }
                        if (empty($item) && $item < 0) {
                            $msg['flag'] = 'error';
                            $msg['msg'] = __('Please enter your opponent party name');

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

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


            $case = Cases::find($id);
            $case['court'] = $request->court;
            $case['highcourt'] = $request->highcourt;
            $case['bench'] = $request->bench;
            $case['casetype'] = $request->casetype;
            $case['casenumber'] = $request->casenumber;
            $case['diarybumber'] = !empty($request->diarybumber) ? $request->diarybumber : null;
            $case['year'] = $request->year;
            $case['case_number'] = $request->case_number;
            $case['filing_date'] = $request->filing_date;
            $case['court_hall'] = $request->court_hall;
            $case['floor'] = $request->floor;
            $case['title'] = $request->title;
            $case['description'] = $request->description;
            $case['under_acts'] = $request->under_acts;
            $case['under_sections'] = $request->under_sections;
            $case['FIR_number'] = $request->FIR_number;
            $case['FIR_year'] = $request->FIR_year;
            $case['opponents'] = json_encode($request->opponents);
            $case['opponent_advocates'] = json_encode($request->opponent_advocates);
            $case['filing_party'] = $request->filing_party;
            $case['case_status'] = $request->case_status;
            $case['motion'] = $request->motion;
            $case['advocates'] = $request->advocates != null ? implode(',', $request->advocates) : '';
            $case['court_room'] = $request->court_room;
            $case['judge'] =  isset($request->judge) ? $request->judge : '';
            $case['police_station'] = $request->police_station;
            $case['your_party_name'] = json_encode($your_party_name_temp);
            $case['opp_party_name'] = json_encode($opp_party_name_temp);
            $case['opp_adv'] = $request->opp_adv;
            $case['stage'] = $request->stage;
            $file_name = [];

            if (!empty($request->case_docs) && count($request->case_docs) > 0) {

                foreach ($request->case_docs as $key => $file) {

                    $image_size = $file->getSize();
                    $result = Utility::updateStorageLimit(Auth::user()->creatorId(), $image_size);

                    if ($result == 1) {
                        $filenameWithExt = $file->getClientOriginalName();
                        $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
                        $extension = $file->getClientOriginalExtension();
                        $fileNameToStore = $filename . '_' . time() . '.' . $extension;

                        $dir = 'uploads/case_docs/';
                        $path = Utility::keyWiseUpload_file($request, 'case_docs', $fileNameToStore, $dir, $key, []);

                        if ($path['flag'] == 1) {
                            $url = $path['url'];
                            $file_name[] = $fileNameToStore;
                        }
                    }
                }

                if(!empty($case['case_docs'])){
                    $old_data = explode(',',$case->case_docs);
                    $file_name  = array_merge($file_name,$old_data);

                }
            }

            $case['case_docs'] = !empty($file_name) ? implode(',', $file_name) : '';

            $case->save();

            return redirect()->route('cases.index')->with('success', __('Case 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 case')) {

            $case = Cases::find($id);

            if ($case) {
                if (!empty($case->case_docs)) {
                    $documents = explode(',', $case->case_docs);
                    foreach ($documents as $pro) {

                        if (isset($pro)) {

                            $filePath = 'uploads/case_docs/' . $pro;

                            Utility::changeStorageLimit(Auth::user()->creatorId(), $filePath);

                            if (File::exists($filePath)) {
                                File::delete($filePath);
                            }
                        }
                    }
                }


                $case->delete();
            }

            return redirect()->route('cases.index')->with('success', __('Case successfully deleted.'));
        } else {
            return redirect()->back()->with('error', __('Permission Denied.'));
        }
    }

    public function journey($id)
    {
        $case = Cases::find($id);

        if ($case) {
            return view('cases.journey', compact('case'));
        }
    }
    public function updateJourney(Request $request, $id)
    {
        $case = Cases::find($id);

        if ($case) {
            if (!$request->journeys) {
                $journeys = null;
            } else {
                $journeys = implode(',', $request->journeys);
            }
            $case->journey = $journeys;
            $case->update();

            return response()->json([
                'status' => 'success',
                'msg' => 'Case journey updated.',
            ]);
        }
    }

    public function importFile()
    {
        return view('cases.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());
        }

        $cases = (new ImportCase())->toArray(request()->file('file'))[0];

        $totalcase = count($cases) - 1;
        $errorArray    = [];
        $n=0;

        try {
            for($i = 1; $i <= count($cases) - 1; $i++)
            {
                $case = $cases[$i];


                $your_party_name_temp=array();
                $temp_your_party_name=explode('-',$case[16]);
                $temp_your_party_client_name=explode('-',$case[17]);
                foreach ($temp_your_party_name as $ke => $items) {
                    if(!empty($items))
                    {
                        $client=isset($temp_your_party_client_name[$ke])?$temp_your_party_client_name[$ke]:'';
                        $clients = User::where('name',$client)->where('created_by',Auth::user()->creatorId())->where('type','client')->first();
                        if($clients)
                        {
                            $client=$clients->id;
                        }
                        else{
                            $client='';
                        }
                        $name=isset($items)?$items:'';
                        $your_party_name_temp[]=array('name'=>$name,'clients'=>$client);
                    }


                }

                $temp_opp_party_name = explode('-',$case[18]);
                $opp_party_name = [];
                foreach ($temp_opp_party_name as $key => $value) {
                    $opp_party_name[]=array("name"=> $value);
                }
                $temp_adv = explode('-',$case[19]);
                $adv_ids=[];
                foreach ($temp_adv as $key => $value) {
                    $advocates = User::where('name',$value)->where('created_by',Auth::user()->creatorId())->where('type','!=','super admin')->where('type','!=','company')->where('type','!=','client')->first();
                    if($advocates)
                    {
                        $adv_ids[]=$advocates->id;
                    }

                }

                $court = Court::where("name",$case[1])->first();
                if($court)
                {
                    $case[1] = $court->id ;
                }
                else
                {
                    $case[1]=1;
                }
                if($case[15] == 'Respondent/Defendant')
                {
                    $party=1;
                }
                else
                {
                    $party=0;
                }
                $caserData = new Cases();
                $advocates = implode(",",$adv_ids);

                if( !empty($case[3]) && !empty($case[2])&&!empty($case[4])&&!empty($case[5]) &&  !empty($party))
                {
                    $caserData->court               = $case[1];
                    $caserData->case_number         = $case[2];
                    $caserData->year                = $case[3];
                    $caserData->title               = $case[4];
                    $caserData->filing_date         = $case[5];
                    $caserData->Judge               = isset($case[6])?$case[6]:'';
                    $caserData->court_room          = $case[7];
                    $caserData->description         = $case[8];
                    $caserData->under_acts          = $case[9];
                    $caserData->under_sections      = $case[10];
                    $caserData->police_station      = $case[11];
                    $caserData->FIR_number          = $case[12];
                    $caserData->FIR_year            = $case[13];
                    $caserData->stage               = $case[14];
                    $caserData->your_party          = $party;
                    $caserData->your_party_name     = json_encode($your_party_name_temp);
                    $caserData->opp_party_name      = json_encode($opp_party_name);
                    $caserData->advocates           = $advocates;
                    $caserData->opp_adv             = $case[20];
                    $caserData->created_by          = \Auth::user()->creatorId();
                    $caserData->save();
                }

                if(isset($caserData->id) && !empty($caserData->id))
                {
                    $caserData->save();
                }
                else
                {
                    $n++;
                    $errorArray[]=$n;
                }
            }
        } catch (\Throwable $th) {
            //throw $th;
            return redirect()->back()->with('error', 'Please follow sample file structure');

        }


        $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' . ' ' . $totalcase . ' ' . 'record');



        }

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

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


    public function casesDocsDestroy($id,$key){
        $case = Cases::find($id);
        if(!empty($case->case_docs)){
            $docs = explode(',',$case->case_docs);
            foreach($docs as $ky => $doc){
                if($key == $ky){
                    unset($docs[$ky]);
                }
            }
            $case->update([
                'case_docs' => implode(',',$docs)
            ]);
        }
         return redirect()->back()->with('success', 'Case doc removed.');
    }
}