/
home
/
henzagold
/
server
/
app
/
Http
/
Controllers
/
Adm
/
File Upload :
llllll
Current File: /home/henzagold/server/app/Http/Controllers/Adm/ProductController.php
<?php namespace App\Http\Controllers\Adm; use App\DB\Te\TableEngine; use App\Http\Controllers\Controller; use App\Models\Category; use App\Models\CinyProduct; use App\Models\Collect; use App\Models\Product; use App\Models\ProductImage; use App\Models\ProductVariant; use http\Client\Response; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Validator; use App\Models\ProductTags; use App\Http\Controllers\Api\SiteController as siteC; class ProductController extends Controller { public function createImage($item,$id,$w = null){ ProductImage::create([ 'image_id' => $item, 'w' => $w, 'product_id' => $id ]); } public function store(Request $request) { // return $request->product_code; if ($product = Product::where('product_code', $request->product_code)->first()) { return response()->json([ 'message' => "محصول با کد «{$request->product_code}» با عنوان «{$product->title}» قبلاً ثبت شده است.", 'error' => "محصول با کد «{$request->product_code}» با عنوان «{$product->title}» قبلاً ثبت شده است." ], 400); } $validator = Validator::make($request->all(), [ 'cats' => 'required|array', 'title' => 'required', // 'product_code'=>'required|unique:product,product_code' ]); if ($validator->fails()) { return response()->json($validator->errors(),422); } $input = $request->all(); $min = 0; $max = 0; if (count($input['variant'])>0){ $max =$input['variant'][0]['grams']; $min =$input['variant'][0]['grams']; } $input['indicator_id_id'] = $input['indicator_id']; $input['mobile_pic_id'] = $input['mobile_pic']; $input['number_of_purchase'] = 0; $input['is_active'] = 1; $product = Product::create($input); foreach ($input['gallery'] ?? [] as $item) { $this->createImage($item, $product->id); } foreach ($input['images'] ?? [] as $item) { $this->createImage($item, $product->id, 'mobile'); } foreach ($input['tags'] ?? [] as $item) { ProductTags::create([ 'const_id' => $item['const_id'], 'product_id' => $product->id ]); } foreach ($input['ciny_ids'] ?? [] as $item) { CinyProduct::create([ 'ciny_id' => $item, 'product_id' => $product->id ]); } foreach ($input['variant'] ?? [] as $variant) { if ($variant['grams']>$max){ $max = $variant['grams']; } if ($variant['grams']<$min){ $min = $variant['grams']; } $variant['product_id_id'] = $product->id; ProductVariant::create($variant); } Category::reloadCategory($input['cats'], $product->id); $product->update([ 'min_gram'=>$min, 'max_gram'=>$max, ]); return response()->json(true); } public function show($id){ $product = Product::with(['images','variantsAll','gallery','tags','thumb','tmobile','file','collect.collection','ciny.ciny'])->findOrFail($id); return response()->json($product); } public function update(Request $request,$id){ if ($product = Product::where('product_code', $request->product_code)->where('id', '!=', $id)->first()) { return response()->json([ 'message' => "محصول با کد «{$request->product_code}» با عنوان «{$product->title}» قبلاً ثبت شده است." ], 422); } $validator = Validator::make($request->all(), [ // 'product_code'=>'required|unique:product,product_code,'.$id ]); if ($validator->fails()) { return response()->json($validator->errors(),422); } $input = $request->all(); $input['indicator_id_id'] = $input['indicator_id']; $input['mobile_pic_id'] = $input['mobile_pic']; $input['number_of_purchase'] = 0; // $input['is_active'] = 0; $product = Product::findOrFail($id) ->update($input); ProductImage::where('product_id', $id)->forceDelete(); foreach ($input['gallery'] ?? [] as $item) { $this->createImage($item, $id); } foreach ($input['images'] ?? [] as $item) { $this->createImage($item, $id, 'mobile'); } CinyProduct::where('product_id', $id)->delete(); foreach ($input['ciny_ids'] ?? [] as $item) { CinyProduct::create([ 'ciny_id' => $item, 'product_id' => $id ]); } foreach ($input['tags'] ?? [] as $item) { if (!isset($item['id'])) { ProductTags::create([ 'const_id' => $item['const_id'], 'product_id' => $id ]); } if (isset($item['remove']) && isset($item['id'])) { ProductTags::destroy($item['id']); } } // foreach ($input['variant']??[] as $variant){ $this->updateVariant($input['variant'], $id); // } $collect = Collect::where('product_id_id', $id)->first(); Category::reloadCategory($input['cats'] , $id); $collect->save(); } protected function updateVariant($data, $id){ $min = 0; $max = 0; if (count($data)>0){ $max =$data[0]['grams']; $min =$data[0]['grams']; } $variant_exist = ProductVariant::where('product_id_id',$id)->get(); $column = array_column($variant_exist->toArray(),'id'); foreach ($data as $key=>$data_variant){ if ($data_variant['grams']>$max){ $max = $data_variant['grams']; } if ($data_variant['grams']<$min){ $min = $data_variant['grams']; } if (!isset($data_variant['id'])){ $data_variant['product_id_id'] = $id; ProductVariant::create($data_variant); } else{ $search = array_search($data_variant['id'],$column); if(in_array($data_variant['id'],$column)){ unset($variant_exist[$search]); } $v = ProductVariant::findOrFail($data_variant['id']); $v->update($data_variant); } } foreach ($variant_exist as $e){ $e->delete(); } Product::findOrFail($id)->update([ 'min_gram'=>$min, 'max_gram'=>$max, ]); } public function testSearch(Request $request){ $cols = $request->cols; $search = $request->search; $p = Product::where(function ($q)use($cols,$search){ $first = true; foreach ($cols as $col){ if ($first){ $where = 'whereRaw'; }else{ $where = 'orWhereRaw'; } $q->$where('lower(`'.$col.'`) like ?', ['%' . strtolower($search) . '%']); $first = false; } return $q; })->get(); return response()->json($p); } public function report(Request $request){ $records = ProductVariant::with(['product']); TableEngine::create($records, $request->all()) ->initSearch(['id', 'product.title', 'title']) ->select([ '*', ])->export($records); return response()->json($records); } public function color(){ return response()->json(ProductVariant::$COLORS); } public function getProductsVaraints(Request $request) { Log::info('getProductsVaraints'); (new siteC())->sendDiscount(); $products = Product::with(['promotion','collect.collection', 'image', 'variantsAll.promotion', 'gallery'])->whereIn('id', $request->products_id)->get(); return new JsonResponse($products); } public function changeOffer($product_id){ $product = Product::findOrFail($product_id); $product->update([ 'offer_day'=>!($product->offer_day) ]); return response()->json(true); } public function changeIsExist($product_id){ $product = Product::findOrFail($product_id); $product->update([ 'is_exist'=>!($product->is_exist) ]); return response()->json(true); } public function changeHasWarranty($product_id){ $product = Product::findOrFail($product_id); $product->update([ 'has_warranty'=>!($product->has_warranty) ]); return response()->json(true); } }
Copyright ©2k19 -
Hexid
|
Tex7ure