| Server IP : 139.59.63.204 / Your IP : 216.73.216.39 Web Server : Apache/2.4.58 (Ubuntu) System : Linux ubuntu-s-1vcpu-1gb-blr1-01 6.8.0-110-generic #110-Ubuntu SMP PREEMPT_DYNAMIC Thu Mar 19 15:09:20 UTC 2026 x86_64 User : root ( 0) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/html/app/Http/Controllers/ |
Upload File : |
<?php
namespace App\Http\Controllers;
use App\Models\Product;
use App\Models\Invoice;
use App\Models\LineItem;
use Illuminate\Http\Request;
use App\Imports\ProductImport;
use App\Exports\ProductExport;
use Illuminate\Support\Arr;
use DataTables;
use Auth;
use Maatwebsite\Excel\Facades\Excel;
class ProductController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
if ($request->ajax()) {
$products = Product::where('posted_by', '=', auth()->id());//->orderBy('id','desc');
return DataTables::of($products)
->addIndexColumn()
->addColumn('date', function($product){
return $product->created_at->format('M d Y');
})
->addColumn('status', function($product){
$status =($product->status==1)?'<span class="text-success">Active</span>':'<span class="text-danger">Inactive</span>';
return $status;
})
->addColumn('action', function($product){
$id = $product->id;
$btn = ' <a href="javascript:void(0)" onclick="viewProduct(0,';
$btn .= "'".route('product.view',$id)."'";
$btn .= ')" data-bs-toggle="modal" data-bs-target="#view"><i class="fas fa-eye text-success fs-2"></i></a>
|
<a href="'.route('product.edit',$id).'"><i class="fas fa-edit text-info fs-2"></i></a> | <a href="javascript:void(0)" data-bs-toggle="modal" data-bs-target="#delete" id="deleteBtn" onclick="setValue('.$id.')"><i class="fas fa-trash text-danger fs-2"></i>
</a>';
return $btn;
})
->rawColumns(['status','action'])
->make(true);
}
return view('products.index');
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('products.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$this->validate($request,[
'name' => 'required|string|max:255',
'sku_id' => 'string|max:50',
'price' => 'required|numeric',
'qty' => 'required|numeric',
'description' => 'required|string',
'status' => 'string|max:5',
]);
$status = ($request->status == "on")?1:0;
$product = new Product;
$product->posted_by = auth()->user()->id;
$product->name = $request->name;
$product->sku_id = $request->sku_id;
$product->price = $request->price;
$product->qty = $request->qty;
$product->description = $request->description;
$product->status = $status;
if($product->save())
{
return redirect()->route('product.index')->with('success','Product Added Successfully!!');
}
return redirect()->route('product.create')->with('fail','Fail!! To Add Product');
}
/**
* Display the specified resource.
*
* @param \App\Models\Product $product
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$id = trim($id);
$product = Product::findOrFail($id);
if(!empty($product))
{
return response()->json(['data'=>$product],200);
}
return response()->json(['data'=>''],500);
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Product $product
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$product = Product::findOrFail($id);
return view('products.edit',compact('product'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Product $product
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$this->validate($request,[
'name' => 'required|string|max:255',
'sku_id' => 'string|max:50',
'price' => 'required|numeric',
'qty' => 'required|numeric',
'description' => 'required|string',
'status' => 'string|max:5',
]);
$status = ($request->status == "on")?1:0;
$product = Product::findOrFail($id);
$product->posted_by = auth()->user()->id;
$product->name = $request->name;
$product->sku_id = $request->sku_id;
$product->price = $request->price;
$product->qty = $request->qty;
$product->description = $request->description;
$product->status = $status;
if($product->save())
{
return redirect()->route('product.index')->with('success','Product Updated Successfully!!');
}
return redirect()->route('product.create')->with('fail','Fail!! To Update Product');
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Product $product
* @return \Illuminate\Http\Response
*/
public function destroy(Request $request)
{
$id = trim($request->delete_id);
$product = Product::where('id',$id)->delete();
if($product)
{
$user_id = auth()->user()->id;
LineItem::where(['product_id'=>$id,'posted_by'=>$user_id])->delete();
$invoice_ids =LineItem::where(['posted_by'=>$user_id])->get(['invoice_id'])->toArray();
$invoice_ids = Arr::flatten($invoice_ids);
$cust_ids = Arr::flatten(Auth::user()->customer->toArray());
Invoice::whereIn('customer_id', $cust_ids)->whereNotIn('id',$invoice_ids)->delete();
return redirect()->route('product.index')->with('success','Product deleted Successfully!!');
}
return redirect()->route('product.index')->with('fail','Fail!! To delete Product');
}
public function importView()
{
return view('products.import');
}
public function import(Request $request)
{
Excel::import(new ProductImport, $request->file('file'));
return redirect()->route('product.import')->with('success','Product Imported Successfully!!');
}
public function export()
{
return Excel::download(new ProductExport, 'products.xlsx');
}
}