ProductStockService.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. namespace App\Services;
  3. use App\Models\ProductStock;
  4. use App\Utility\ProductUtility;
  5. use Combinations;
  6. class ProductStockService
  7. {
  8. public function store(array $data, $product)
  9. {
  10. $collection = collect($data);
  11. $options = ProductUtility::get_attribute_options($collection);
  12. //Generates the combinations of customer choice options
  13. $combinations = Combinations::makeCombinations($options);
  14. $variant = '';
  15. if (count($combinations[0]) > 0) {
  16. $product->variant_product = 1;
  17. $product->save();
  18. foreach ($combinations as $key => $combination) {
  19. $str = ProductUtility::get_combination_string($combination, $collection);
  20. $product_stock = new ProductStock();
  21. $product_stock->product_id = $product->id;
  22. $product_stock->variant = $str;
  23. $product_stock->price = request()['price_' . str_replace('.', '_', $str)];
  24. $product_stock->sku = request()['sku_' . str_replace('.', '_', $str)];
  25. $product_stock->qty = request()['qty_' . str_replace('.', '_', $str)];
  26. $product_stock->image = request()['img_' . str_replace('.', '_', $str)];
  27. $product_stock->save();
  28. }
  29. } else {
  30. unset($collection['colors_active'], $collection['colors'], $collection['choice_no']);
  31. $qty = $collection['current_stock'];
  32. $price = $collection['unit_price'];
  33. unset($collection['current_stock']);
  34. $data = $collection->merge(compact('variant', 'qty', 'price'))->toArray();
  35. ProductStock::create($data);
  36. }
  37. }
  38. public function product_duplicate_store($product_stocks, $product_new, $profitPrice = 0)
  39. {
  40. foreach ($product_stocks as $key => $stock) {
  41. $product_stock = new ProductStock;
  42. $product_stock->product_id = $product_new->id;
  43. $product_stock->variant = $stock->variant;
  44. $product_stock->price = $stock->price + $profitPrice;
  45. $product_stock->sku = $stock->sku;
  46. $product_stock->qty = $stock->qty;
  47. $product_stock->save();
  48. }
  49. }
  50. }