PageRenderTime 43ms CodeModel.GetById 16ms RepoModel.GetById 1ms app.codeStats 0ms

/app/Http/Controllers/Frontend/BasketController.php

https://gitlab.com/NickZP/virtuozz.pp.ua
PHP | 134 lines | 105 code | 27 blank | 2 comment | 6 complexity | 4e4675d77323d417d1c88ac27cae3567 MD5 | raw file
  1. <?php
  2. namespace App\Http\Controllers\Frontend;
  3. use App\Http\Controllers\Controller;
  4. use Illuminate\Http\Request;
  5. use App\Http\Requests;
  6. use App\Models\Section;
  7. use App\Models\Product;
  8. use App\Models\Order;
  9. use App\Models\OrderHistory;
  10. use App\Models\OrderInfo;
  11. class BasketController extends Controller
  12. {
  13. public function show(Request $request){
  14. $sum = 0;
  15. $new_arr = [];
  16. if(isset($_COOKIE['basket'])){
  17. $orders = $_COOKIE['basket'];
  18. $orders = json_decode($orders);
  19. $ids = [];
  20. foreach($orders as $order){
  21. $ids[] = $order->item_id;
  22. $new_arr[$order->title . $order->measurement] = $order->amount;
  23. }
  24. $products = Product::whereIn('id', array_unique($ids))->get();
  25. }
  26. else{
  27. $products = [];
  28. }
  29. $parametrs = [
  30. 'products' => $products,
  31. 'new_arr' => $new_arr,
  32. 'sum' => $sum,
  33. ];
  34. if($request->ajax()){
  35. return \Response::json(view('frontend.BasketController.ajax.zakaz', $parametrs)->render())->header('Cache-Control', 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
  36. }
  37. else{
  38. return \Response::view('frontend.BasketController.show', $parametrs)->header('Cache-Control', 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
  39. }
  40. }
  41. public function Checkout(Requests\Frontend\BasketController\checkoutRequest $request){
  42. if(isset($_COOKIE['basket'])){
  43. $orders = $_COOKIE['basket'];
  44. $orders = json_decode($orders);
  45. }
  46. else{
  47. return redirect('/');
  48. }
  49. $orderDB = new Order;
  50. if(\Auth::check()){
  51. $orderDB->user_id = \Auth::user()->id;
  52. }
  53. else{
  54. $orderDB->user_id = 0;
  55. }
  56. $orderDB->order_state_id = 1;
  57. $orderDB->save();
  58. $orderHistory = $orderDB->history()->create([
  59. 'email' => $request->email,
  60. 'name' => $request->name,
  61. 'phone' => $request->phone,
  62. 'history' => $_COOKIE['basket'],
  63. ]);
  64. $orderStateHistory = $orderDB->orderStateHistories()->create([
  65. 'order_state_id' => 1,
  66. 'changed_at' => \Carbon\Carbon::now(),
  67. ]);
  68. $total_price = 0;
  69. foreach($orders as $order){
  70. $variantSale = Product::find($order->item_id)
  71. ->variantsales()
  72. ->where('measurement', $order->measurement)
  73. ->first();
  74. $orderDB->infos()->create([
  75. 'variant_sale_id' => $variantSale->id,
  76. 'amount' => $order->amount,
  77. ]);
  78. $total_price += $variantSale->price * $order->amount;
  79. }
  80. $orderHistory->price = $total_price;
  81. $orderHistory->save();
  82. SetCookie("basket","");
  83. //Отправка письма клиенту
  84. try {
  85. \Mail::send('emails.basket.checkout', ['order' => $orderDB], function($message) use ($request){
  86. $message->to($request->email)->subject('Ваш заказ');
  87. });
  88. }
  89. catch (Exception $e) {
  90. if( count(\Mail::failures()) > 0 ){
  91. $errors = 'Ошибка отправки письма, пожалуйста, повторите попытку позже';
  92. }
  93. }
  94. //Отправка письма администратору о новом заказе
  95. try {
  96. \Mail::send('emails.basket.admin.order', ['order' => $orderDB], function($message){
  97. $message->to('zp220284@gmail.com')->subject('Новый заказ');
  98. });
  99. }
  100. catch (Exception $e) {
  101. if( count(\Mail::failures()) > 0 ){
  102. $errors = 'Ошибка отправки письма, пожалуйста, повторите попытку позже';
  103. }
  104. }
  105. return view('frontend.BasketController.checkout', ['order' => $orderDB, 'total_price' => $total_price ]);
  106. }
  107. }