Advertisement
linhtd99

Untitled

Nov 22nd, 2019
2,343
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. public function store(Request $request)
  2.     {
  3.         $validator = Validator::make(
  4.             $request->all(),
  5.             [
  6.                 'name' => 'required|unique:products,name|max:191|min:2',
  7.                 'slug' => 'required|unique:products,slug|max:191|min:2|regex:/^[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*$/',
  8.                 'category_id' => 'required',
  9.                 'g_regular_price' => [
  10.                     'numeric',
  11.                     'gt:0',
  12.                     'required_unless:is_simple,1',
  13.                 ],
  14.                 'g_sale_price' => 'nullable|numeric|gt:0|lt:g_regular_price',
  15.                 'status' => 'required|in:-1,1',
  16.                 'data' => 'nullable',
  17.                 'is_simple' => 'required|in:-1,1',
  18.                 'data' => 'required_unless:is_simple,-1',
  19.                 'data.*.regular_price' => 'required|gt:0',
  20.                 'data.*.sale_price' => 'nullable|numeric|gt:0|lt:data.*.regular_price',
  21.                 'data.*.status' => 'required|in:-1,1',
  22.                 'data.*.value_id' => 'exists:attribute_value,id',
  23.             ],
  24.             [
  25.                 // tên sản phẩm
  26.                 'name.required' => 'Mời nhập tên sản phẩm.',
  27.                 'name.unique' => 'Tên sản phẩm đã tồn tại.',
  28.                 'name.max' => 'Tên sản phẩm không vượt quá 191 kí tự.',
  29.                 'name.min' => 'Tên sản phẩm nhiều hơn 2 kí tự.',
  30.                 // slug
  31.                 'slug.required' => 'Mời nhập đường dẫn.',
  32.                 'status.required' => 'Mời chọn trạng thái.',
  33.                 'status.in' => 'Trạng thái không hợp lệ',
  34.                 'data.*.status.required' => 'Mời chọn trạng thái.',
  35.                 'data.*.status.in' => 'Trạng thái không hợp lệ',
  36.                 'slug.unique' => 'Đường dẫn đã tồn tại.',
  37.                 'slug.max' => 'Đường dẫn không vượt quá 191 kí tự.',
  38.                 'slug.min' => 'Đường dẫn phải nhiều hơn 2 kí tự.',
  39.                 'slug.regex' => 'Không đúng định dạng đường dẫn.',
  40.                 'category_id.required' => 'Mời chọn danh mục.',
  41.  
  42.                 'data.*.regular_price.required' => 'Mời nhập giá',
  43.                 'data.*.regular_price.gt' => 'Giá phải lớn hơn 0',
  44.                 'data.*.regular_price.numeric' => 'Giá phải là số',
  45.  
  46.                 'data.*.sale_price.required' => 'Mời nhập giá',
  47.                 'data.*.sale_price.gt' => 'Giá phải lớn hơn 0',
  48.                 'data.*.sale_price.numeric' => 'Giá phải là số',
  49.                 'data.*.sale_price.lt' => 'Giá khuyến mãi phải nhỏ hơn giá bán',
  50.  
  51.                 'g_sale_price.required' => 'Mời nhập giá',
  52.                 'g_sale_price.required' => 'Mời nhập giá',
  53.                 'g_sale_price.gt' => 'Giá phải lớn hơn 0',
  54.                 'g_sale_price.lt' => 'Giá khuyến mãi phải nhỏ hơn giá bán',
  55.  
  56.                 'g_regular_price.required' => 'Mời nhập giá',
  57.                 'g_regular_price.required' => 'Mời nhập giá',
  58.                 'g_regular_price.required_if' => 'Mời nhập giá',
  59.                 'g_regular_price.gt' => 'Giá phải lớn hơn 0',
  60.                 'g_regular_price.numeric' => 'Giá phải là số',
  61.                 'g_sale_prices.numeric' => 'Giá phải là số',
  62.                 'data.*.value_id.required' => 'Mời chọn giá trị',
  63.                 'data.*.status.required' => 'Mời chọn trạng thái',
  64.                 'data.required_if' => 'Mời thêm biến thể',
  65.  
  66.             ],
  67.         );
  68.  
  69.         if ($validator->fails()) {
  70.             $errors = [
  71.                 'errors' => true,
  72.                 'messages' => $request->all(),
  73.             ];
  74.             return response($errors);
  75.         }
  76.  
  77.         // product data
  78.         $product = new Product();
  79.         $product->name = $request->name;
  80.         $product->name = $request->name;
  81.         $product->slug = $request->slug;
  82.         $product->image = $request->image;
  83.         $product->is_simple = $request->is_simple;
  84.         $product->description = $request->description;
  85.         $product->content = $request->content;
  86.         $product->regular_price = $request->g_regular_price;
  87.         $product->sale_price = $request->g_sale_price;
  88.         $product->status = $request->status;
  89.         $product->save();
  90.         // product_id
  91.         $product_id = $product->id;
  92.  
  93.         // product_category
  94.         $product->categories()->sync(explode(',', $request->category_id));
  95.  
  96.         // thư viện ảnh
  97.  
  98.         if (!empty($request->gallery)) {
  99.             $galleries = [];
  100.  
  101.             foreach ($request->gallery as $value) {
  102.                 $galleries[] = [
  103.                     'product_id' => $product_id,
  104.                     'url' => $value,
  105.                     'created_at' => date('Y-m-d H:i:s'),
  106.                 ];
  107.             }
  108.             Gallery::insert($galleries);
  109.  
  110.         }
  111.  
  112.         // biến thể
  113.         if (!empty($request->data)) {
  114.             foreach ($request->data as $key => $variant) {
  115.                 $variant['product_id'] = $product_id;
  116.                 $variant['product_id'] = $product_id;
  117.                 $variant['attribute_id'] = Attribute_value::getAttributeID($variant['value_id']);
  118.                 $variant['created_at'] = date('Y-m-d H:i:s');
  119.                 Product_attribute::insert($variant);
  120.             }
  121.         }
  122.  
  123.         // dd($request->data);
  124.  
  125.         return response()->json([
  126.             'errors' => false,
  127.             'data' => $request->all(),
  128.         ]);
  129.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement