Advertisement
Guest User

Untitled

a guest
Feb 24th, 2020
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.80 KB | None | 0 0
  1. <?php
  2.  
  3. namespace App\Http\Controllers;
  4.  
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\Mail;
  7. use Illuminate\Mail\Message;
  8.  
  9. use Session;
  10. use App\Order;
  11. use App\OrderLines;
  12. use App\User;
  13. use App\Customer;
  14. use App\Address;
  15. use App\AddressType;
  16. use App\Product;
  17. use App\Discount;
  18.  
  19. class OrderController extends ProductController{
  20.  
  21. public function list(Request $request){
  22.  
  23. $q = $request->get('q', false);
  24. $user = auth()->user();
  25. $customer = Customer::findOrFail($user->customer_id);
  26. $address = Address::where('customer_id', $customer->id)->first();
  27.  
  28. if($user->isSuper()){
  29. $orders = Order::query()->orderBy('id', 'desc')->when($q, function ($query) use ($q){
  30. return $query->where('id', $q);
  31. })->simplePaginate(5);
  32. } else{
  33. $orders = Order::where('customer_id', $customer->id)->orderBy('id', 'desc')
  34. ->when($q, function ($query) use ($q){
  35. return $query->where('id', $q)
  36. ->where('customer_id', $customer->id);
  37. })->simplePaginate(5);
  38. }
  39.  
  40. return view('pages.logobank.order.list', [
  41. 'title' => __('Orders'),
  42. 'orders' => $orders,
  43. 'customer' => $customer,
  44. 'user' => $user,
  45. 'query' => $q
  46. ]);
  47. }
  48.  
  49. public function detail($id){
  50.  
  51. $order = Order::findOrFail($id);
  52. $customer = Customer::find($order->customer_id);
  53. $user = User::find($order->user_id);
  54. $address = Address::where('customer_id', $customer->id)->first();
  55. $lines = $order->orderlines()->get();
  56. $shipto = $order->address($id);
  57. $discount = (isset($order->discount_id)) ? Discount::findOrFail($order->discount_id) : null;
  58.  
  59. return view('pages.logobank.order.detail', [
  60. 'title' => __('Orderno.:') . $order->id,
  61. 'order' => $order,
  62. 'customer' => $customer,
  63. 'address' => $address,
  64. 'user' => $user,
  65. 'lines' => $lines,
  66. 'shipto' => $shipto,
  67. 'discount' => $discount
  68. ]);
  69. }
  70.  
  71. public function reorder(Request $lines){
  72.  
  73. $check = true;
  74. for($i = 0; $i < count($lines->lines); $i++){
  75. $product = Product::findOrFail($lines->lines[$i]['product_id']);
  76. $check = (parent::atb($product, $lines->lines[$i])) ? true : false;
  77. if($i == count($lines->lines) - 1 && $check)
  78.  
  79. return redirect()->route('order.detail', $lines->lines[$i]['order_id'])
  80. ->with('popup', $this->popup($product, $lines->lines));
  81.  
  82. }
  83. }
  84.  
  85. public function complete(Request $r){
  86.  
  87. $terms = ($r->terms == 'on') ? true : false;
  88. $order = new Order($r->all());
  89. $items = (Session::has('cart')) ? Session::get('cart') : null;
  90. $user = User::findOrFail($r->user_id);
  91.  
  92. if($items && $order->validate()){
  93.  
  94. if($r->has('delivery')){
  95. $address = new Address();
  96. $address->type = AddressType::ShipTo()->getValue();
  97. $address->street = $r->delivery_address;
  98. $address->postal_code = $r->delivery_postal;
  99. $address->city = $r->delivery_city;
  100. $address->customer_id = $order->customer_id;
  101.  
  102. if($address->validate()){
  103. unset($order->terms);
  104. if($order->saveOrFail()){
  105. $address->order_id = $order->id;
  106.  
  107. $lines = $this->orderlines($items, $order);
  108. if(OrderLines::insert($this->orderlines($items, $order)) && $address->saveOrFail() && $items->empty()){
  109. $message = __('Order has been completed. You will receive a mail confirmation shortly. Order no.: ') . $order->id;
  110.  
  111. $this->ordermail($user->email, $order->id);
  112. return view('pages.logobank.checkout.complete', [
  113. 'title' => __('Thank you for ordering!'),
  114. 'message' => $message,
  115. 'order' => $order
  116. ]);
  117. }
  118. }
  119. }
  120. } else{
  121. unset($order->terms);
  122. if($order->saveOrFail()){
  123. $lines = $this->orderlines($items, $order);
  124. if(OrderLines::insert($lines) && $items->empty()){
  125. $message = __('Order has been completed. You will receive a mail confirmation shortly. Order no.: ') . $order->id;
  126.  
  127. $this->ordermail($user->email, $order->id);
  128.  
  129. return view('pages.logobank.checkout.complete', [
  130. 'title' => __('Thank you for ordering!'),
  131. 'message' => $message,
  132. 'order' => $order
  133. ]);
  134.  
  135. }
  136. }
  137. }
  138. }
  139.  
  140. return redirect()->back()
  141. ->withInput()
  142. ->withErrors($order->errors);
  143.  
  144. }
  145.  
  146. public function orderlines($items, $order){
  147. $data = [];
  148. foreach($items->items as $item){
  149. $arr = [
  150. 'order_id' => $order->id,
  151. 'product_id' => $item['product']->id,
  152. 'quantity' => $item['qty'],
  153. 'colors' => $item['colors'],
  154. 'size_width' => $item['size']['width'],
  155. 'size_height' => $item['size']['height'],
  156. 'logo_id' => $item['logo']['id']
  157. ];
  158. array_push($data, $arr);
  159. };
  160.  
  161. return $data;
  162. }
  163.  
  164. public function ordermail($to, $id){
  165.  
  166. $order = Order::findOrFail($id);
  167. $customer = Customer::find($order->customer_id);
  168. $user = User::find($order->user_id);
  169. $address = Address::where('customer_id', $customer->id)->first();
  170. $lines = $order->orderlines()->get();
  171. $shipto = $order->address($id);
  172.  
  173. Mail::send('elements.email.order', [
  174. 'order' => $order,
  175. 'customer' => $customer,
  176. 'address' => $address,
  177. 'user' => $user,
  178. 'lines' => $lines,
  179. 'shipto' => $shipto
  180. ], function (Message $message) use ($user){
  181.  
  182. $message->to($user->email, $user->name . ' ' . $user->surname);
  183. $message->subject('Order');
  184. });
  185.  
  186.  
  187. }
  188.  
  189. public function delete(int $id){
  190.  
  191. $customer = Customer::findOrFail($id);
  192. if($customer->delete()) {
  193. $message = __(':name has been deleted.', ['name' => $customer->company]);
  194. return redirect()->route('customer.list')->with('success', $message);
  195. }
  196.  
  197. return redirect()->route('customer.list');
  198. }
  199.  
  200. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement