KUJUNTI.ID MINISH3LL
Path : /var/www/html/thb_loan_system/app/Http/Controllers/
(S)h3ll Cr3at0r :
F!le Upl0ad :

B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H

Current File : /var/www/html/thb_loan_system/app/Http/Controllers/CollateralController.php


<?php

namespace App\Http\Controllers;

use App\Helpers\GeneralHelper;

use App\Models\Collateral;
use App\Models\CollateralVehicle;
use App\Models\CollateralType;
use App\Models\CustomField;
use App\Models\CustomFieldMeta;
use Cartalyst\Sentinel\Laravel\Facades\Sentinel;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Validator;
use Laracasts\Flash\Flash;

class CollateralController extends Controller
{
    public function __construct()
    {
        $this->middleware(['sentinel', 'branch']);
    }


    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        if (!Sentinel::hasAccess('collateral')) {
            Flash::warning("Permission Denied");
            return redirect('/');
        }

        $data = Collateral::query()
            ->with(['collateral_type:id,name', 'borrower:id,first_name,last_name'])
            ->orderBy('id', 'desc')
            ->paginate(default_paginate());

        return view('collateral.data', compact('data'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create($id)
    {
        if (!Sentinel::hasAccess('collateral.create')) {
            Flash::warning("Permission Denied");
            return redirect('/');
        }
        $types = array();
        foreach (CollateralType::all() as $key) {
            $types[$key->id] = $key->name;
        }
        //get custom fields
        $custom_fields = CustomField::where('category', 'collateral')->get();
        return view('collateral.create', compact('types', 'custom_fields', 'id'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request, $loan)
    {
        if (!Sentinel::hasAccess('collateral.create')) {
            Flash::warning("Permission Denied");
            return redirect('/');
        }
        $collateral = new Collateral();
        $collateral->collateral_type_id = $request->collateral_type_id;
        $collateral->name = $request->name;
        $collateral->loan_id = $loan->id;
        $collateral->borrower_id = $loan->borrower_id;
        $collateral->value = $request->value;
        $collateral->status = $request->status;
        $collateral->owner_name = $request->owner_name;
        $collateral->relationship = $request->relationship;
        $collateral->date = $request->date;
        $date = explode('-', $request->date);
        $collateral->year = $date[0];
        $collateral->month = $date[1];
        if ($request->hasFile('photo')) {
            $file = array('photo' => $request->file('photo'));
            $rules = array('photo' => 'required|mimes:jpeg,jpg,bmp,png');
            $validator = Validator::make($file, $rules);
            if ($validator->fails()) {
                Flash::warning(translate('validation_error'));
                return redirect()->back()->withInput()->withErrors($validator);
            } else {
                $fname = "collateral_" . uniqid() . '.' . $request->file('photo')->guessExtension();
                $collateral->photo = $fname;
                $request->file('photo')->move(public_path() . '/uploads',
                    $fname);
            }

        }
        $files = array();
        if (!empty($request->file('files'))) {
            $count = 0;
            foreach ($request->file('files') as $key) {
                $file = array('files' => $key);
                $rules = array('files' => 'required|mimes:jpeg,jpg,bmp,png,pdf,docx,xlsx');
                $validator = Validator::make($file, $rules);
                if ($validator->fails()) {
                    Flash::warning(translate('validation_error'));
                    return redirect()->back()->withInput()->withErrors($validator);
                } else {
                    $fname = "collateral_" . uniqid() . '.' . $key->guessExtension();
                    $files[$count] = $fname;
                    $key->move(public_path() . '/uploads',
                        $fname);
                }
                $count++;
            }
        }
        $collateral->files = serialize($files);
        $collateral->save();
        // Fields for vehicle
        $vehicleTypes = ["Car", "Motor", "car", "motor", "ឡាន", "ម៉ូតូ"];
        if (in_array($collateral->collateral_type->name, $vehicleTypes)) {
            // create new collateral vehicle
            $collateralVehicle = new CollateralVehicle();
            $collateralVehicle->collateral_id = $collateral->id;
            $collateralVehicle->color = $request->color;
            $collateralVehicle->model_name = $request->model_name;
            $collateralVehicle->model_number = $request->model_number;
            $collateralVehicle->manufacture_date = $request->manufacture_date;
            $collateralVehicle->manufacture_date = $request->manufacture_date;
            $collateralVehicle->manufacture_date = $request->manufacture_date;
            $collateralVehicle->engine_number = $request->engine_number;
            $collateralVehicle->frame_number = $request->frame_number;
            $collateralVehicle->license_plate = $request->license_plate;
            $collateralVehicle->steering_wheel = 'left';//$request->steering_wheel;
            $collateralVehicle->serial_number = $request->serial_number;
            $collateralVehicle->save();
        }


        $custom_fields = CustomField::where('category', 'collateral')->get();
        foreach ($custom_fields as $key) {
            $custom_field = new CustomFieldMeta();
            $id = $key->id;
            $custom_field->name = $request->$id;
            $custom_field->parent_id = $collateral->id;
            $custom_field->custom_field_id = $key->id;
            $custom_field->category = "collateral";
            $custom_field->save();
        }
        GeneralHelper::audit_trail("Added collateral  with id:" . $collateral->id);
        Flash::success(translate('successfully_saved'));
        if (isset($request->return_url)) {
            return redirect($request->return_url);
        }
        return redirect('collateral/data');
    }


    public function show($collateral)
    {
        if (!Sentinel::hasAccess('collateral.view')) {
            Flash::warning("Permission Denied");
            return redirect('/');
        }
        //get custom fields
        $custom_fields = CustomFieldMeta::where('category', 'collateral')->where('parent_id', $collateral->id)->get();
        return view('collateral.show', compact('collateral', 'custom_fields'));
    }


    public function edit($collateral)
    {
        if (!Sentinel::hasAccess('collateral.update')) {
            Flash::warning("Permission Denied");
            return redirect('/');
        }
        $types = array();
        foreach (CollateralType::all() as $key) {
            $types[$key->id] = $key->name;
        }
        //get custom fields
        $custom_fields = CustomField::where('category', 'collateral')->get();
        return view('collateral.edit', compact('collateral', 'types', 'custom_fields'));
    }

    /**
     * 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 (!Sentinel::hasAccess('collateral.update')) {
            Flash::warning("Permission Denied");
            return redirect('/');
        }
        $collateral = Collateral::find($id);
        $collateral->collateral_type_id = $request->collateral_type_id;
        $collateral->name = $request->name;
        $collateral->value = $request->value;
        $collateral->status = $request->status;

        // Fields for vehicle
        $vehicleTypes = ["Car", "Motor", "car", "motor", "ឡាន", "ម៉ូតូ"];

        if (in_array($collateral->collateral_type->name, $vehicleTypes)) {
            if ($collateral->collateralVehicle) {
                // Edit collateral Vehicle
                $collateralVehicle = $collateral->collateralVehicle;
            } else {
                // create new collateral vehicle
                $collateralVehicle = new CollateralVehicle();
            }
            $collateralVehicle->collateral_id = $collateral->id;
            $collateralVehicle->color = $request->color;
            $collateralVehicle->model_name = $request->model_name;
            $collateralVehicle->model_number = $request->model_number;
            $collateralVehicle->manufacture_date = $request->manufacture_date;
            $collateralVehicle->manufacture_date = $request->manufacture_date;
            $collateralVehicle->manufacture_date = $request->manufacture_date;
            $collateralVehicle->engine_number = $request->engine_number;
            $collateralVehicle->frame_number = $request->frame_number;
            $collateralVehicle->license_plate = $request->license_plate;
            $collateralVehicle->steering_wheel = 'left';//$request->steering_wheel;
            $collateralVehicle->serial_number = $request->serial_number;
            $collateralVehicle->save();
        }


        $collateral->date = $request->date;
        $collateral->owner_name = $request->owner_name;
        $collateral->relationship = $request->relationship;
        $date = explode('-', $request->date);
        $collateral->year = $date[0];
        $collateral->month = $date[1];
        if ($request->hasFile('photo')) {
            $file = array('photo' => $request->file('photo'));
            $rules = array('photo' => 'required|mimes:jpeg,jpg,bmp,png');
            $validator = Validator::make($file, $rules);
            if ($validator->fails()) {
                Flash::warning(translate('validation_error'));
                return redirect()->back()->withInput()->withErrors($validator);
            } else {
                $fname = "collateral_" . uniqid() . '.' . $request->file('photo')->guessExtension();
                $collateral->photo = $fname;
                $request->file('photo')->move(public_path() . '/uploads',
                    $fname);
            }

        }
        $files = unserialize($collateral->files);
        $count = count($files);
        if (!empty($request->file('files'))) {
            foreach ($request->file('files') as $key) {
                $count++;
                $file = array('files' => $key);
                $rules = array('files' => 'required|mimes:jpeg,jpg,bmp,png,pdf,docx,xlsx');
                $validator = Validator::make($file, $rules);
                if ($validator->fails()) {
                    Flash::warning(translate('validation_error'));
                    return redirect()->back()->withInput()->withErrors($validator);
                } else {
                    $fname = "collateral_" . uniqid() . '.' . $key->guessExtension();
                    $files[$count] = $fname;
                    $key->move(public_path() . '/uploads',
                        $fname);
                }

            }
        }
        $collateral->files = serialize($files);
        $collateral->save();
        $custom_fields = CustomField::where('category', 'collateral')->get();
        foreach ($custom_fields as $key) {
            if (!empty(CustomFieldMeta::where('custom_field_id', $key->id)->where('parent_id', $id)->where('category',
                'collateral')->first())
            ) {
                $custom_field = CustomFieldMeta::where('custom_field_id', $key->id)->where('parent_id',
                    $id)->where('category', 'collateral')->first();
            } else {
                $custom_field = new CustomFieldMeta();
            }
            $kid = $key->id;
            $custom_field->name = $request->$kid;
            $custom_field->parent_id = $id;
            $custom_field->custom_field_id = $key->id;
            $custom_field->category = "collateral";
            $custom_field->save();
        }
        GeneralHelper::audit_trail("Updated collateral  with id:" . $collateral->id);
        Flash::success(translate('successfully_saved'));
        if (isset($request->return_url)) {
            return redirect($request->return_url);
        }
        return redirect('collateral/data');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param int $id
     * @return \Illuminate\Http\Response
     */
    public function delete($id)
    {
        if (!Sentinel::hasAccess('collateral.delete')) {
            Flash::warning("Permission Denied");
            return redirect('/');
        }
        Collateral::destroy($id);
        GeneralHelper::audit_trail("Deleted collateral  with id:" . $id);
        Flash::success(translate('successfully_deleted'));
        return redirect('collateral/data');
    }

    public function deleteFile(Request $request, $id)
    {
        if (!Sentinel::hasAccess('collateral.delete')) {
            Flash::warning("Permission Denied");
            return redirect('/');
        }
        $collateral = Collateral::find($id);
        $files = unserialize($collateral->files);
        @unlink(public_path() . '/uploads/' . $files[$request->id]);
        $files = array_except($files, [$request->id]);
        $collateral->files = serialize($files);
        $collateral->save();


    }

    //expense type
    public function indexType()
    {
        $data = CollateralType::query()
            ->latest('id')
            ->paginate(default_paginate());

        return view('collateral.type.data', compact('data'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function createType()
    {

        return view('collateral.type.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     * @return \Illuminate\Http\Response
     */
    public function storeType(Request $request)
    {
        $type = new CollateralType();
        $type->name = $request->name;
        $type->save();
        Flash::success(translate('successfully_saved'));
        return redirect('collateral/type/data');
    }

    public function editType($collateral_type)
    {
        return view('collateral.type.edit', compact('collateral_type'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     * @param int $id
     * @return \Illuminate\Http\Response
     */
    public function updateType(Request $request, $id)
    {
        $type = CollateralType::find($id);
        $type->name = $request->name;
        $type->save();
        Flash::success(translate('successfully_saved'));
        return redirect('collateral/type/data');
    }

    public function deleteType($id)
    {
        CollateralType::destroy($id);
        Flash::success(translate('successfully_deleted'));
        return redirect('collateral/type/data');
    }
}

© KUJUNTI.ID