Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Http\Controllers;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Mail;
- use Illuminate\Mail\Message;
- use Session;
- use App\Order;
- use App\OrderLines;
- use App\User;
- use App\Customer;
- use App\Address;
- use App\AddressType;
- use App\Product;
- use App\Discount;
- class OrderController extends ProductController{
- public function list(Request $request){
- $q = $request->get('q', false);
- $user = auth()->user();
- $customer = Customer::findOrFail($user->customer_id);
- $address = Address::where('customer_id', $customer->id)->first();
- if($user->isSuper()){
- $orders = Order::query()->orderBy('id', 'desc')->when($q, function ($query) use ($q){
- return $query->where('id', $q);
- })->simplePaginate(5);
- } else{
- $orders = Order::where('customer_id', $customer->id)->orderBy('id', 'desc')
- ->when($q, function ($query) use ($q){
- return $query->where('id', $q)
- ->where('customer_id', $customer->id);
- })->simplePaginate(5);
- }
- return view('pages.logobank.order.list', [
- 'title' => __('Orders'),
- 'orders' => $orders,
- 'customer' => $customer,
- 'user' => $user,
- 'query' => $q
- ]);
- }
- public function detail($id){
- $order = Order::findOrFail($id);
- $customer = Customer::find($order->customer_id);
- $user = User::find($order->user_id);
- $address = Address::where('customer_id', $customer->id)->first();
- $lines = $order->orderlines()->get();
- $shipto = $order->address($id);
- $discount = (isset($order->discount_id)) ? Discount::findOrFail($order->discount_id) : null;
- return view('pages.logobank.order.detail', [
- 'title' => __('Orderno.:') . $order->id,
- 'order' => $order,
- 'customer' => $customer,
- 'address' => $address,
- 'user' => $user,
- 'lines' => $lines,
- 'shipto' => $shipto,
- 'discount' => $discount
- ]);
- }
- public function reorder(Request $lines){
- $check = true;
- for($i = 0; $i < count($lines->lines); $i++){
- $product = Product::findOrFail($lines->lines[$i]['product_id']);
- $check = (parent::atb($product, $lines->lines[$i])) ? true : false;
- if($i == count($lines->lines) - 1 && $check)
- return redirect()->route('order.detail', $lines->lines[$i]['order_id'])
- ->with('popup', $this->popup($product, $lines->lines));
- }
- }
- public function complete(Request $r){
- $terms = ($r->terms == 'on') ? true : false;
- $order = new Order($r->all());
- $items = (Session::has('cart')) ? Session::get('cart') : null;
- $user = User::findOrFail($r->user_id);
- if($items && $order->validate()){
- if($r->has('delivery')){
- $address = new Address();
- $address->type = AddressType::ShipTo()->getValue();
- $address->street = $r->delivery_address;
- $address->postal_code = $r->delivery_postal;
- $address->city = $r->delivery_city;
- $address->customer_id = $order->customer_id;
- if($address->validate()){
- unset($order->terms);
- if($order->saveOrFail()){
- $address->order_id = $order->id;
- $lines = $this->orderlines($items, $order);
- if(OrderLines::insert($this->orderlines($items, $order)) && $address->saveOrFail() && $items->empty()){
- $message = __('Order has been completed. You will receive a mail confirmation shortly. Order no.: ') . $order->id;
- $this->ordermail($user->email, $order->id);
- return view('pages.logobank.checkout.complete', [
- 'title' => __('Thank you for ordering!'),
- 'message' => $message,
- 'order' => $order
- ]);
- }
- }
- }
- } else{
- unset($order->terms);
- if($order->saveOrFail()){
- $lines = $this->orderlines($items, $order);
- if(OrderLines::insert($lines) && $items->empty()){
- $message = __('Order has been completed. You will receive a mail confirmation shortly. Order no.: ') . $order->id;
- $this->ordermail($user->email, $order->id);
- return view('pages.logobank.checkout.complete', [
- 'title' => __('Thank you for ordering!'),
- 'message' => $message,
- 'order' => $order
- ]);
- }
- }
- }
- }
- return redirect()->back()
- ->withInput()
- ->withErrors($order->errors);
- }
- public function orderlines($items, $order){
- $data = [];
- foreach($items->items as $item){
- $arr = [
- 'order_id' => $order->id,
- 'product_id' => $item['product']->id,
- 'quantity' => $item['qty'],
- 'colors' => $item['colors'],
- 'size_width' => $item['size']['width'],
- 'size_height' => $item['size']['height'],
- 'logo_id' => $item['logo']['id']
- ];
- array_push($data, $arr);
- };
- return $data;
- }
- public function ordermail($to, $id){
- $order = Order::findOrFail($id);
- $customer = Customer::find($order->customer_id);
- $user = User::find($order->user_id);
- $address = Address::where('customer_id', $customer->id)->first();
- $lines = $order->orderlines()->get();
- $shipto = $order->address($id);
- Mail::send('elements.email.order', [
- 'order' => $order,
- 'customer' => $customer,
- 'address' => $address,
- 'user' => $user,
- 'lines' => $lines,
- 'shipto' => $shipto
- ], function (Message $message) use ($user){
- $message->to($user->email, $user->name . ' ' . $user->surname);
- $message->subject('Order');
- });
- }
- public function delete(int $id){
- $customer = Customer::findOrFail($id);
- if($customer->delete()) {
- $message = __(':name has been deleted.', ['name' => $customer->company]);
- return redirect()->route('customer.list')->with('success', $message);
- }
- return redirect()->route('customer.list');
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement