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

namespace App\Http\Controllers;

use App\Models\Cases;
use App\Models\DocSubType;
use App\Models\DocType;
use App\Models\Document;
use App\Models\Utility;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Validator;

class DocumentController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        if (Auth::user()->can('manage document')) {
            $docs = Document::where('created_by', Auth::user()->creatorId())->with('user','getDocType')->get();
            
            return view('documents.index', compact('docs'));

        } 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 document')) {
            $types = DocType::where('created_by',Auth::user()->creatorId())->get()->pluck('name', 'id');
            $cases = Cases::where('created_by',Auth::user()->creatorId())->get()->pluck('title','id');
            return view('documents.create', compact('types','cases'));

        } 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 document')) {
            $doc = new Document();
            $doc['name'] = $request->name;
            $doc['type'] = $request->type;
            $doc['purpose'] = $request->purpose;
            $doc['description'] = $request->description;
            $doc['document_subtype'] = $request->document_subtype;
            $doc['created_by'] = Auth::user()->creatorId();
            $doc['cases'] =  $request->cases;
            $doc['doc_link'] = $request->doc_link;
            if(!empty($request->file('file'))){

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

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

                    $settings = Utility::getStorageSetting();
                    if ($settings['storage_setting'] == 'local') {
                        $dir = 'uploads/documents/';
                    } else {
                        $dir = 'uploads/documents/';
                    }
                    $path = Utility::upload_file($request, 'file', $fileNameToStores, $dir, []);

                    if ($path['flag'] == 1) {
                        $url = $path['url'];
                    } else {
                        return redirect()->back()->with('error', __($path['msg']));
                    }

                    $filesize = number_format($request->file('file')->getSize() / 1000000, 4);
                    $doc['file'] = $fileNameToStores;
                    $doc['doc_size'] = $filesize;
                }
            }
            $doc->save();

            return redirect()->route('documents.index')->with('success', __('Document 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 document')) {
            $doc = Document::find($id);
            $cases = '-';
            if(!empty($doc->cases)){
                $cases = Cases::whereIn('id',explode(',',$doc->cases))->get()->pluck('title')->toArray();
                $cases = implode(',',$cases);

            }
            return view('documents.view', compact('doc','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 document')) {
            $doc = Document::find($id);
            $types = DocType::where('created_by',Auth::user()->creatorId())->orWhere('created_by',0)->get()->pluck('name', 'id');
            $cases = Cases::where('created_by',Auth::user()->creatorId())->get()->pluck('title','id');
            $your_cases= [];
            if (!empty($doc->cases)) {
                $your_cases = Cases::whereIn('id', explode(',', $doc->cases))->get();
            }
            $doc_typ =$doc->type;

            return view('documents.edit', compact('doc', 'types','cases','doc_typ','your_cases'));

        } 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 document')) {

            $doc = Document::find($id);
            $doc['name'] = $request->name;
            $doc['type'] = $request->type;
            $doc['purpose'] = $request->purpose;
            $doc['description'] = $request->description;
            $doc['created_by'] = Auth::user()->id;
            $doc['document_subtype'] = $request->document_subtype;
            $doc['cases'] =  $request->cases;
            $doc['doc_link'] = $request->doc_link;
            if(!empty($request->file('file'))){
                $dir        = 'uploads/documents/';
                $file_path = $dir.$doc->file;

                $image_size = $request->file('file')->getSize();

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

                if($result==1) {

                    Utility::changeStorageLimit(Auth::user()->creatorId(), $file_path);
                    $filenameWithExt = $request->file('file')->getClientOriginalName();
                    $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
                    $extension = $request->file('file')->getClientOriginalExtension();
                    $fileNameToStores = 'document_' . time() . '.' . $extension;

                    $settings = Utility::getStorageSetting();
                    if ($settings['storage_setting'] == 'local') {
                        $dir = 'uploads/documents/';
                    } else {
                        $dir = 'uploads/documents/';
                    }
                    $path = Utility::upload_file($request, 'file', $fileNameToStores, $dir, []);

                    if ($path['flag'] == 1) {
                        $url = $path['url'];
                    } else {
                        return redirect()->back()->with('error', __($path['msg']));
                    }

                    $filesize = number_format($request->file('file')->getSize() / 1000000, 4);

                    $doc['file'] = $fileNameToStores;
                    $doc['doc_size'] = $filesize;
                }
            }

            $doc->save();

            return redirect()->route('documents.index')->with('success', __('Document 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 document')) {
            $doc = Document::find($id);
            if ($doc) {

                $filepath = storage_path('uploads/documents/'.$doc->file);
                Utility::changeStorageLimit(Auth::user()->creatorId(),'uploads/documents/'.$doc->file);

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

                $doc->delete();
            }
            return redirect()->route('documents.index')->with('success', __('Document successfully deleted.'));


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

        }

    }
}