File manager - Edit - /var/www/payraty/inventory_main/app/Http/Controllers/Admin/Warehouse/WarehousesController.php
Back
<?php namespace App\Http\Controllers\Admin\Warehouse; use App\DataTables\WarehouseDataTable; use App\Http\Controllers\Controller; use App\Http\Requests\WarehouseRequest; use App\Models\Warehouse; use App\Models\Shelf; use App\Services\Warehouse\WarehouseService; use Illuminate\Support\Facades\Auth; use PDF; use Illuminate\Http\Request; use Excel; use App\Exports\WarehousesExport; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\DB; class WarehousesController extends Controller { protected $warehouseService; /** * __construct * * @param mixed $warehouseService * @return void */ public function __construct(WarehouseService $warehouseService) { $this->warehouseService = $warehouseService; $this->middleware(['permission:List Warehouse'])->only(['index']); $this->middleware(['permission:Add Warehouse'])->only(['create']); $this->middleware(['permission:Edit Warehouse'])->only(['edit']); $this->middleware(['permission:Delete Warehouse'])->only(['destroy']); } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index(WarehouseDataTable $dataTable) { set_page_meta(__('custom.warehouse')); $user = Auth::user(); $orgId = $user->organisation_id; $warehouses = Warehouse::where("organisation_id", $orgId)->paginate(10); //return $dataTable->render('admin.warehouses.index'); $profile = DB::table('profiles')->where('user_id', $user->id)->first(); return view('admin.warehouses.index', compact('warehouses', 'profile')); } public function getAll(WarehouseDataTable $dataTable) { $user = Auth::user(); $orgId = $user->organisation_id; $warehouses = Warehouse::where("organisation_id", $orgId)->paginate(10); return response()->json([ "status" => 'Success', "message" => 'Warehouses returned successfully', 'data' => $warehouses ]); } public function filter(Request $request) { $user = Auth::user(); $orgId = $user->organisation_id; $period = $request->get('period', 'all'); $query = Warehouse::where('organisation_id', $orgId); switch ($period) { case 'monthly': $query->whereMonth('created_at', now()->month); break; case 'yearly': $query->whereYear('created_at', now()->year); break; // 'all' case doesn't need additional filtering } $warehouses = $query->paginate(10); if ($request->ajax()) { return response()->json([ 'warehouses' => $warehouses ]); } // Fallback for non-AJAX requests return redirect()->route('admin.warehouses.index'); } public function search(Request $request) { $user = Auth::user(); $orgId = $user->organisation_id; $searchTerm = $request->get('q'); $warehouses = Warehouse::where('organisation_id', $orgId) ->where(function ($query) use ($searchTerm) { $query->where('name', 'LIKE', "%{$searchTerm}%") ->orWhere('email', 'LIKE', "%{$searchTerm}%") ->orWhere('company_name', 'LIKE', "%{$searchTerm}%"); }) ->paginate(10); if ($request->ajax()) { return response()->json([ 'warehouses' => $warehouses ]); } // Fallback for non-AJAX requests return view('admin.warehouses.index', compact('warehouses')); } /** * exportWareHouses * * @param mixed $request * @return void */ public function exportWareHouses(Request $request) { $warehouses = []; $type = $request->type; $user = Auth::user(); $orgId = $user->organisation_id; $warehouses = Warehouse::where("organisation_id", $orgId)->get(); $name = 'Warehouse_' . now()->format('YmdHis'); if ($type == 'pdf') { $pdf = PDF::loadView('admin.warehouses.pdf.index', ['warehouses' => $warehouses]); return $pdf->download($name . '.pdf'); } else if ($type == 'csv') { return Excel::download(new WarehousesExport($warehouses), $name . '.csv'); } else if ($type == 'excel') { return Excel::download(new WarehousesExport($warehouses), $name . '.xlsx'); } } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { set_page_meta(__('custom.add_warehouse')); return view('admin.warehouses.create'); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(WarehouseRequest $request) { $data = $request->validated(); $shelf = (int) $data['shelf']; $user = Auth::user(); $orgId = $user->organisation_id; $warehouse = $this->warehouseService->createOrUpdate($orgId, $data); if ($warehouse) { // Get the last shelf number for this warehouse $lastShelf = Shelf::where('warehouse_id', $warehouse->id) ->orderBy('id', 'desc') ->first(); $lastShelfNumber = $lastShelf ? (int) filter_var($lastShelf->name, FILTER_SANITIZE_NUMBER_INT) : 0; //For each number of shelf lets create one // If shelf count exists, create shelves if (!empty($shelf)) { // Create new shelves starting from last shelf number + 1 for ($i = 1; $i <= $shelf; $i++) { $shelfNumber = $lastShelfNumber + $i; Shelf::create([ 'name' => 'Shelf ' . $shelfNumber, 'organisation_id' => $orgId, 'warehouse_id' => $warehouse->id ]); } } flash(__('custom.warehouse_created_successfully'))->success(); } else { flash(__('custom.warehouse_create_failed'))->error(); } return redirect()->route('admin.warehouses.index'); } public function storeAPI(WarehouseRequest $request) { try { $data = $request->validated(); $shelf = (int) $data['shelf']; $user = Auth::user(); $orgId = $user->organisation_id; $warehouse = $this->warehouseService->createOrUpdate($orgId, $data); if ($warehouse) { // Get the last shelf number for this warehouse $lastShelf = Shelf::where('warehouse_id', $warehouse->id) ->orderBy('id', 'desc') ->first(); $lastShelfNumber = $lastShelf ? (int) filter_var($lastShelf->name, FILTER_SANITIZE_NUMBER_INT) : 0; //For each number of shelf lets create one // If shelf count exists, create shelves if (!empty($shelf)) { // Create new shelves starting from last shelf number + 1 for ($i = 1; $i <= $shelf; $i++) { $shelfNumber = $lastShelfNumber + $i; Shelf::create([ 'name' => 'Shelf ' . $shelfNumber, 'organisation_id' => $orgId, 'warehouse_id' => $warehouse->id ]); } } return response()->json([ "status" => 'Success', "message" => 'Warehouse created successfully', 'data' => $warehouse ]); } } catch (\Exception $e) { return response()->json([ 'status' => 'failed', 'message' => $e->getMessage(), ], 500); } } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show(Warehouse $warehouse) { $warehouse_details = $warehouse->load( 'product_stocks.product.category', 'product_stocks.product.manufacturer', 'product_stocks.product.weight_unit', 'product_stocks.attribute', 'product_stocks.attributeItem', 'shelves' ); set_page_meta($warehouse->name); return view('admin.warehouses.show', compact('warehouse_details')); } public function showPdf(Warehouse $warehouse) { $warehouse_details = $warehouse->load('product_stocks.product.category', 'product_stocks.product.manufacturer'); set_page_meta($warehouse->name); $pdf = PDF::loadView('admin.warehouses.show-pdf', compact('warehouse_details')); return $pdf->download($warehouse->name . '_details' . '.pdf'); return view('admin.warehouses.show-pdf', compact('warehouse_details')); } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { $warehouse = $this->warehouseService->get($id, ['shelves']); set_page_meta(__('custom.edit_warehouse')); return view('admin.warehouses.edit', compact('warehouse')); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(WarehouseRequest $request, $id) { $data = $request->validated(); $user = Auth::user(); $orgId = $user->organisation_id; if (!isset($data['is_default'])) $data['is_default'] = false; if ($this->warehouseService->createOrUpdate($orgId, $data, $id)) { flash(__('custom.warehouse_update_successfully'))->success(); } else { flash(__('custom.warehouse_update_failed'))->error(); } return redirect()->route('admin.warehouses.index'); } public function updateAPI(Request $request) { try { $data = $request->all(); $user = Auth::user(); $orgId = $user->organisation_id; $id = $request->id; if (!isset($data['is_default'])) $data['is_default'] = false; $warehouse = Warehouse::where("id", $id)->first(); if (empty($warehouse)) { return response()->json([ "status" => 'Failed', "message" => 'Warehouse not found', 'data' => [] ], 400); } $warehouse->name = $data["name"] ?? $warehouse->name; $warehouse->email = $data["email"] ?? $warehouse->email; $warehouse->phone = $data["phone"] ?? $warehouse->phone; $warehouse->company_name = $data["company_name"] ?? $warehouse->company_name; $warehouse->address_1 = $data["address_1"] ?? $warehouse->address_1; $warehouse->address_2 = $data["address_2"] ?? $warehouse->address_2; $warehouse->priority = isset($data["priority"]) ? (int) $data["priority"] : $warehouse->priority; $warehouse->is_default = isset($data["is_default"]) ? (bool) $data["is_default"] : $warehouse->is_default; $warehouse->status = $data["status"] ?? $warehouse->status; // Save the updated warehouse $warehouse->save(); return response()->json([ "status" => 'Success', "message" => 'Warehouse updated successfully', 'data' => $warehouse ]); } catch (\Exception $e) { return response()->json([ 'status' => 'failed', 'message' => $e->getMessage(), ], 500); } } public function getOneWarehouse(Request $request) { try { $user = Auth::user(); $orgId = $user->organisation_id; $id = $request->id; $warehouse = Warehouse::where("id", $id)->first(); if (empty($warehouse)) { return response()->json([ "status" => 'Failed', "message" => 'Warehouse not found', 'data' => [] ], 400); } return response()->json([ "status" => 'Success', "message" => 'Warehouse updated successfully', 'data' => $warehouse ]); } catch (\Exception $e) { return response()->json([ 'status' => 'failed', 'message' => $e->getMessage(), ], 500); } } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { try { if ($this->warehouseService->delete($id)) { flash(__('custom.warehouse_delete_successfully'))->success(); } else { flash(__('custom.warehouse_delete_failed'))->error(); } } catch (\Throwable $th) { flash(__('custom.this_record_already_used'))->warning(); } return redirect()->route('admin.warehouses.index'); } public function destroyAPI(Request $request) { try { $id = $request->id; $warehouse = Warehouse::where("id", $id)->first(); if (empty($warehouse)) { return response()->json([ "status" => 'Failed', "message" => 'Warehouse not found', 'data' => [] ], 400); } $warehouse->delete(); return response()->json([ "status" => 'Success', "message" => 'Warehouse deleted successfully', 'data' => $warehouse ]); } catch (\Exception $e) { return response()->json([ 'status' => 'failed', 'message' => $e->getMessage(), ], 500); } } public function addShelf(Request $request, Warehouse $warehouse) { $user = Auth::user(); $orgId = $user->organisation_id; $shelf = Shelf::create([ 'name' => 'Shelf ' . ($warehouse->shelves()->count() + 1), 'organisation_id' => $orgId, 'warehouse_id' => $warehouse->id ]); //update warehouse shelf count $warehouse->update([ 'shelf' => $warehouse->shelves()->count() ]); return response()->json([ 'message' => __('Shelf added successfully'), 'shelf' => $shelf ], 201); } public function deleteShelf(Request $request, Warehouse $warehouse) { $shelfId = $request->input('shelf_id'); // Validate that the shelf belongs to this warehouse $shelf = Shelf::where('id', $shelfId) ->where('warehouse_id', $warehouse->id) ->first(); if (!$shelf) { return response()->json([ 'message' => __('Shelf not found or does not belong to this warehouse') ], 404); } try { // Delete the shelf $shelf->delete(); // Update warehouse shelf count $warehouse->update([ 'shelf' => $warehouse->shelves()->count() ]); return response()->json([ 'message' => __('Shelf deleted successfully'), 'shelf_id' => $shelfId ], 200); } catch (\Exception $e) { // Log the error \Log::error('Shelf deletion error: ' . $e->getMessage()); return response()->json([ 'message' => __('Unable to delete shelf') ], 500); } } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.30 | Generation time: 0 |
proxy
|
phpinfo
|
Settings