Yohohohohohooho | Sanrei Aya
Sanrei Aya


Server : LiteSpeed
System : Linux barito.iixcp.rumahweb.net 5.14.0-611.49.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Apr 21 16:39:08 EDT 2026 x86_64
User : elvh3918 ( 1528)
PHP Version : 8.2.31
Disable Function : mail
Directory :  /home/elvh3918/public_html/pmm/app/Http/Controllers/Master/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/elvh3918/public_html/pmm/app/Http/Controllers/Master/PartController.php
<?php

namespace App\Http\Controllers\Master;

use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Request;
use Illuminate\Http\Request as HttpRequest;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\DB;
use App\Models\Master\Tenant;
use App\Models\Master\Part;
use Illuminate\Support\Facades\Auth;

class PartController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function index()
    {
        $breadcrumbs = [
            ['link' => "dashboard", 'name' => "Dashboard"], ['link' => "master.parts.index", 'name' => "Parts"]
        ];

        $data_input = [
            'tenant_id' => Request::input('tenant_id'),
            'supplier_id' => Request::input('supplier_id'),
        ];

        $query = Part::with('supplier', 'supplier.tenant');
        $tenant = Auth::user()->load('model');

        if ($tenant->model_type == 'App\Models\Master\Tenant') {
            $tenant = Tenant::where('id', '=', Auth::user()->model_id)->orderBy('name', 'asc')->get();

            if ($data_input['supplier_id'] == 0) {
                $query = $query->whereRelation('supplier.tenant', 'id', '=', Auth::user()->model_id)->orderBy('supplier_id', 'asc')->orderBy('name', 'asc')->get();
            } else {
                $query = $query->whereRelation('supplier.tenant', 'id', '=', Auth::user()->model_id)->where('supplier_id', '=', $data_input['supplier_id'])->orderBy('supplier_id', 'asc')->orderBy('name', 'asc')->get();
            }
        } else if ($tenant->model_type == 'App\Models\Bussiness') {
            $tenant = Tenant::orderBy('name', 'asc')->get();
            if ($data_input['tenant_id'] != 0) {
                $query = $query->whereRelation('supplier.tenant', 'id', '=', $data_input['tenant_id']);
            }

            if ($data_input['supplier_id'] == 0) {
                $query = $query->orderBy('supplier_id', 'asc')->orderBy('name', 'asc')->get();
            } else {
                $query = $query->where('supplier_id', '=', $data_input['supplier_id'])->orderBy('supplier_id', 'asc')->orderBy('name', 'asc')->get();
            }
        }

        return view('content.master.parts.index', compact('query', 'tenant', 'data_input'), ['breadcrumbs' => $breadcrumbs]);
    }

    /**
     * Show the form for creating a new resource.
     */
    public function create()
    {
        $breadcrumbs = [
            ['link' => "dashboard", 'name' => "Dashboard"], ['link' => "master.parts.index", 'name' => "Parts"], ['link' => "master.parts.create", 'name' => "Create Part"]
        ];

        $tenant = Auth::user()->load('model');
        if ($tenant->model_type == 'App\Models\Master\Tenant') {
            $tenant = Tenant::where('id', '=', Auth::user()->model_id)->orderBy('name', 'asc')->get();
        } else if ($tenant->model_type == 'App\Models\Bussiness') {
            $tenant = Tenant::orderBy('name', 'asc')->get();
        }

        return view('content.master.parts.create', compact('tenant'), ['breadcrumbs' => $breadcrumbs]);
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(HttpRequest $request)
    {
        $user = Auth::user()->load('model');
        if ($user->model_type == 'App\Models\Master\Tenant' && $user->model->id != Request::get('tenant_id')) {
            return redirect()->route('master.parts.create')->withInput()->with('message', 'system blocked, wrong id');
        }

        $validator = Validator::make(Request::all(), [
            // 'code' => ['required', 'string', 'max:100',
            //     Rule::unique('parts')->where(function ($query) {
            //         return $query->where('code', '=', Request::get('code'))->where('supplier_id', '=', Request::get('supplier_id'));
            //     }),
            // ],

            'name' => ['required', 'string', 'max:100'],
        ]);

        if ($validator->fails()) {
            return redirect()->route('master.parts.create')->withErrors($validator)->withInput()->with('message', 'input failed');
        }

        $image = null;
        DB::beginTransaction();
        try {
            // check uploaded image
            if (isset($request->image)) {
                $files = $request->image;
                $filename = $files->store(config('app.dir_file_part'), 'public');
                $image = pathinfo(storage_path($filename), PATHINFO_BASENAME);
            } else {
                $image = null;
            }
            
            Part::create([
                'code' => Request::get('code'),
                'name' => Request::get('name'),
                'rate' => Request::get('rate'),
                'image' => $image,
                'description' => Request::get('description'),
                'supplier_id' => Request::get('supplier_id'),
                'is_active' => Request::get('is_active') != null ? 1: 0,
            ]);
    
            DB::commit();
            return redirect()->route('master.parts.index')->with('message', 'store success');
        } catch (\Exception $e) {
            DB::rollBack();

            // remove image failed insert data
            if (Storage::disk('public')->exists(config('app.dir_file_part') . '/'. $image)) {
                Storage::disk('public')->delete(config('app.dir_file_part') . '/' . $image);
            }

            return redirect()->route('master.parts.create')->withErrors($validator)->withInput()->with('message', 'store error');
        }
    }

    /**
     * Display the specified resource.
     */
    public function show(string $id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     */
    public function edit(Part $part)
    {
        $tenant = $part->load('supplier', 'supplier.tenant');
        $user = Auth::user()->load('model');
        if ($user->model_type == 'App\Models\Master\Tenant' && $user->model->id != $tenant->supplier->tenant->id) {
            return redirect()->route('master.parts.index')->with('message', 'system blocked, wrong id');
        }

        $breadcrumbs = [
            ['link' => "dashboard", 'name' => "Dashboard"], ['link' => "master.parts.index", 'name' => "Parts"], ['link' => "master/parts/edit/$part->id", 'name' => "Edit Part"]
        ];

        $query = [
            'id' => $part->id,
            'code' => $part->code,
            'name' => $part->name,
            'rate' => $part->rate,
            'image' => $part->image,
            'description' => $part->description,
            'supplier_id' => $part->load('supplier', 'supplier.tenant'),
            'is_active' => $part->is_active,
            'updated_at' => $part->updated_at,
        ];

        $tenant = Auth::user()->load('model');
        if ($tenant->model_type == 'App\Models\Master\Tenant') {
            $tenant = Tenant::where('id', '=', Auth::user()->model_id)->orderBy('name', 'asc')->get();
        } else if ($tenant->model_type == 'App\Models\Bussiness') {
            $tenant = Tenant::orderBy('name', 'asc')->get();
        }

        return view('content.master.parts.edit', compact('query', 'tenant'), ['breadcrumbs' => $breadcrumbs]);
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(HttpRequest $request, Part $part)
    {
        $user = Auth::user()->load('model');
        if ($user->model_type == 'App\Models\Master\Tenant' && $user->model->id != Request::get('tenant_id')) {
            return redirect()->route('master.parts.edit', $part->id)->with('message', 'system blocked, wrong id');
        }

        $validator = Validator::make(Request::all(), [
            // 'code' => ['required', 'string', 'max:100',
            //     Rule::unique('parts')->where(function ($query) use ($part) {
            //         return $query->where('code', '=', Request::get('code'))->where('supplier_id', '=', Request::get('supplier_id'))->ignore($part->id);
            //     }),
            // ],

            'name' => ['required', 'string', 'max:100'],
        ]);

        if ($validator->fails()) {
            return redirect()->route('master.parts.edit', $part->id)->withErrors($validator)->withInput()->with('message', 'input failed');
        }

        $image = null;
        DB::beginTransaction();
        try {
            // check uploaded image
            if (isset($request->image)) {
                $files = $request->image;
                $filename = $files->store(config('app.dir_file_part'), 'public');
                $image = pathinfo(storage_path($filename), PATHINFO_BASENAME);

                // remove image for replace new image
                $iimage = $part->image;
                $exists = Storage::disk('public')->exists(config('app.dir_file_part') . '/'. $iimage);
                if ($exists) {
                    Storage::disk('public')->delete(config('app.dir_file_part') . '/' . $iimage);
                }
            } else {
                $image = null;
            }

            $part->update([
                'code' => Request::get('code'),
                'name' => Request::get('name'),
                'rate' => Request::get('rate'),
                'image' => $image,
                'description' => Request::get('description'),
                'supplier_id' => Request::get('supplier_id'),
                'is_active' => Request::get('is_active') != null ? 1: 0,
            ]);
    
            DB::commit();
            return redirect()->route('master.parts.index')->with('message', 'update success');
        } catch (\Exception $e) {
            DB::rollBack();

            // remove image failed insert data
            if (Storage::disk('public')->exists(config('app.dir_file_part') . '/'. $image)) {
                Storage::disk('public')->delete(config('app.dir_file_part') . '/' . $image);
            }

            return redirect()->route('master.parts.edit', $part->id)->withErrors($validator)->withInput()->with('message', 'update error');
        }
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy(Part $part)
    {
        $tenant = $part->load('supplier', 'supplier.tenant');
        $user = Auth::user()->load('model');
        if ($user->model_type == 'App\Models\Master\Tenant' && $user->model->id != $tenant->supplier->tenant->id) {
            return redirect()->route('master.parts.index')->with('message', 'system blocked, wrong id');
        }
        
        // remove image for replace new image
        $exists = Storage::disk('public')->exists(config('app.dir_file_part') . '/'. $part->image);
        if ($exists) {
            Storage::disk('public')->delete(config('app.dir_file_part') . '/' . $part->image);
        }

        $part->delete();
        return redirect()->route('master.parts.index')->with('message', 'delete success');
    }
}

Yohohohohohooho | Sanrei Aya