/
home
/
sjslayjy
/
public_html
/
theweavenest
/
app
/
Http
/
Controllers
/
Admin
/
Upload File
HOME
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Models\Admin\Product; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Storage; class ProductController extends Controller { public function index() { $result['data']=Product::all(); return view('admin/product',$result); } public function manage_product(Request $request, $id = '') { if ($id > 0) { $arr = Product::where(['id' => $id])->get(); $result['category_id'] = $arr[0]->category_id; $result['sub_category_id'] = $arr[0]->sub_category_id; $result['name'] = $arr[0]->name; $result['image'] = $arr[0]->image; $result['slug'] = $arr[0]->slug; $result['brand'] = $arr[0]->brand; $result['model'] = $arr[0]->model; $result['short_desc'] = $arr[0]->short_desc; $result['desc'] = $arr[0]->desc; $result['keywords'] = $arr[0]->keywords; $result['technical_specification'] = $arr[0]->technical_specification; $result['uses'] = $arr[0]->uses; $result['warranty'] = $arr[0]->warranty; $result['lead_time'] = $arr[0]->lead_time; $result['tax_id'] = $arr[0]->tax_id; $result['is_promo'] = $arr[0]->is_promo; $result['is_featured'] = $arr[0]->is_featured; $result['is_discounted'] = $arr[0]->is_discounted; $result['is_tranding'] = $arr[0]->is_tranding; $result['status'] = $arr[0]->status; $result['id'] = $arr[0]->id; $result['productAttrArr'] = DB::table('products_attr')->where(['products_id' => $id])->get(); $productImagesArr = DB::table('product_images')->where(['products_id' => $id])->get(); if (!isset($productImagesArr[0])) { $result['productImagesArr'][0]['id'] = ''; $result['productImagesArr'][0]['images'] = ''; } else { $result['productImagesArr'] = $productImagesArr; } } else { $result['category_id'] = ''; $result['sub_category_id'] = ''; $result['name'] = ''; $result['slug'] = ''; $result['image'] = ''; $result['brand'] = ''; $result['model'] = ''; $result['short_desc'] = ''; $result['desc'] = ''; $result['keywords'] = ''; $result['technical_specification'] = ''; $result['uses'] = ''; $result['warranty'] = ''; $result['lead_time'] = ''; $result['tax_id'] = ''; $result['is_promo'] = ''; $result['is_featured'] = ''; $result['is_discounted'] = ''; $result['is_tranding'] = ''; $result['status'] = ''; $result['id'] = 0; $result['productAttrArr'][0]['id'] = ''; $result['productAttrArr'][0]['products_id'] = ''; $result['productAttrArr'][0]['sku'] = ''; $result['productAttrArr'][0]['attr_image'] = ''; $result['productAttrArr'][0]['mrp'] = ''; $result['productAttrArr'][0]['price'] = ''; $result['productAttrArr'][0]['qty'] = ''; $result['productAttrArr'][0]['size_id'] = ''; $result['productAttrArr'][0]['color_id'] = ''; $result['productImagesArr'][0]['id'] = ''; $result['productImagesArr'][0]['images'] = ''; } $result['category'] = DB::table('categories')->get(); $result['sub_category'] = DB::table('sub_category')->get(); $result['sizes'] = DB::table('sizes')->where(['status' => 1])->get(); $result['colors'] = DB::table('colors')->where(['status' => 1])->get(); $result['brands'] = DB::table('brands')->where(['status' => 1])->get(); $result['taxes'] = DB::table('taxes')->where(['status' => 1])->get(); $selected_category_id = $result['sub_category_id']; $result['selected_category_id'] = $selected_category_id; return view('admin/manage_product', $result); } public function manage_product_process(Request $request) { // Retrieve form data $paidArr = $request->post('paid'); $skuArr = $request->post('sku'); $mrpArr = $request->post('mrp'); $priceArr = $request->post('price'); $qtyArr = $request->post('qty'); $size_idArr = $request->post('size_id'); $color_idArr = $request->post('color_id'); // Validate SKU uniqueness foreach($skuArr as $key => $val){ $check = DB::table('products_attr') ->where('sku', '=', $skuArr[$key]) ->where('id', '!=', $paidArr[$key]) ->get(); // Handle SKU error // if(isset($check[0])){ // $request->session()->flash('sku_error', $skuArr[$key].' SKU already used'); // return redirect(request()->headers->get('referer')); // } } // Determine if it's an update or insertion if($request->post('id') > 0){ $model = Product::find($request->post('id')); $msg = "Product updated"; } else { $model = new Product(); $msg = "Product inserted"; } // Handle main product image if($request->hasfile('image')){ // Delete existing image if updating if($request->post('id') > 0){ $arrImage = DB::table('products')->where(['id' => $request->post('id')])->get(); if(Storage::exists('/public/media/'.$arrImage[0]->image)){ Storage::delete('/public/media/'.$arrImage[0]->image); } } // Store new image $image = $request->file('image'); $ext = $image->extension(); $image_name = time().'.'.$ext; $image->storeAs('/public/media', $image_name); $model->image = $image_name; } // Assign product details $model->category_id = $request->post('category_id'); $model->sub_category_id = $request->post('sub_category_id'); $model->name = $request->post('name'); $model->slug = $request->post('slug'); $model->brand = $request->post('brand'); $model->model = $request->post('model'); $model->short_desc = $request->post('short_desc'); $model->desc = $request->post('desc'); $model->keywords = $request->post('keywords'); $model->technical_specification = $request->post('technical_specification'); $model->uses = $request->post('uses'); $model->warranty = $request->post('warranty'); $model->lead_time = $request->post('lead_time'); $model->tax_id = $request->post('tax_id'); $model->is_promo = $request->post('is_promo'); $model->is_featured = $request->post('is_featured'); $model->is_discounted = $request->post('is_discounted'); $model->is_tranding = $request->post('is_tranding'); $model->status = 1; $model->save(); $pid = $model->id; // Insert or update product attributes foreach($skuArr as $key => $val) { $productAttrArr = [ 'products_id' => $pid, 'sku' => $skuArr[$key], 'mrp' => (int)$mrpArr[$key], 'price' => (int)$priceArr[$key], 'qty' => (int)$qtyArr[$key], 'size_id' => isset($size_idArr[$key]) ? ($size_idArr[$key] == '' ? 0 : $size_idArr[$key]) : 0, 'color_id' => isset($color_idArr[$key]) ? ($color_idArr[$key] == '' ? 0 : $color_idArr[$key]) : 0, ]; if($request->hasFile("attr_image.$key")) { // Delete existing attribute image if updating if(isset($paidArr[$key])) { $arrImage = DB::table('products_attr')->where(['id' => $paidArr[$key]])->get(); if(isset($arrImage[0]) && Storage::exists('/public/media/' . $arrImage[0]->attr_image)) { Storage::delete('/public/media/' . $arrImage[0]->attr_image); } } // Store new attribute image $rand = rand('111111111', '999999999'); $attr_image = $request->file("attr_image.$key"); $ext = $attr_image->extension(); $image_name = $rand . '.' . $ext; $request->file("attr_image.$key")->storeAs('/public/media', $image_name); $productAttrArr['attr_image'] = $image_name; } if(isset($paidArr[$key])) { // Update existing product attribute DB::table('products_attr')->where(['id' => $paidArr[$key]])->update($productAttrArr); } else { // Insert new product attribute DB::table('products_attr')->insert($productAttrArr); } } // Handle product images $piidArr = $request->post('piid'); foreach($piidArr as $key => $val){ $productImageArr['products_id'] = $pid; if($request->hasFile("images.$key")){ // Delete existing product image if updating if($piidArr[$key] != ''){ $arrImage = DB::table('product_images')->where(['id' => $piidArr[$key]])->get(); if(Storage::exists('/public/media/'.$arrImage[0]->images)){ Storage::delete('/public/media/'.$arrImage[0]->images); } } // Store new product image $rand = rand('111111111', '999999999'); $images = $request->file("images.$key"); $ext = $images->extension(); $image_name = $rand . '.' . $ext; $request->file("images.$key")->storeAs('/public/media', $image_name); $productImageArr['images'] = $image_name; if($piidArr[$key] != ''){ // Update existing product image DB::table('product_images')->where(['id' => $piidArr[$key]])->update($productImageArr); } else { // Insert new product image DB::table('product_images')->insert($productImageArr); } } } // Flash message and redirect $request->session()->flash('message', $msg); return redirect('admin/product'); } public function delete(Request $request,$id){ $model=Product::find($id); $model->delete(); $request->session()->flash('message','Product deleted'); return redirect('admin/product'); } public function product_attr_delete(Request $request,$paid,$pid){ $arrImage=DB::table('products_attr')->where(['id'=>$paid])->get(); if(Storage::exists('/public/media/'.$arrImage[0]->attr_image)){ Storage::delete('/public/media/'.$arrImage[0]->attr_image); } DB::table('products_attr')->where(['id'=>$paid])->delete(); return redirect('admin/product/manage_product/'.$pid); } public function product_images_delete(Request $request,$paid,$pid){ $arrImage=DB::table('product_images')->where(['id'=>$paid])->get(); if(Storage::exists('/public/media/'.$arrImage[0]->images)){ Storage::delete('/spublictorage/media/'.$arrImage[0]->images); } DB::table('product_images')->where(['id'=>$paid])->delete(); return redirect('admin/product/manage_product/'.$pid); } public function status(Request $request,$status,$id){ $model=Product::find($id); $model->status=$status; $model->save(); $request->session()->flash('message','Product status updated'); return redirect('admin/product'); } public function all_product_images($product_id) { // Retrieve images for the specified product ID $all_product_images = DB::table('product_images') ->where('products_id', $product_id) ->select('images') ->get(); // Pass the data to the view and return the view return view('admin.all_product_images', compact('all_product_images')); } public function attr_product_images($product_id) { // Retrieve images for the specified product ID $attr_product_images = DB::table('products_attr') ->where('products_id', $product_id) ->select('attr_image') ->get(); // Pass the data to the view and return the view return view('admin.attr_product_images', compact('attr_product_images')); } }