Ejemplo n.º 1
0
 public function rateProduct(Request $request)
 {
     $detail_id = $request->get('detail_id');
     $product_rate = $request->get('product_rate');
     $product_comment = $request->get('product_comment');
     $user = \Auth::user();
     if ($user) {
         $detail = OrderDetail::find($detail_id);
         if ($detail) {
             //Checks if the order exists and belongs to the current user
             $order = Order::where('id', $detail->order_id)->where('user_id', $user->id)->first();
             if ($order && $order->rate == '') {
                 $product = Product::find($detail->product_id);
                 $product_old_rate = $product->rate_val ? $product->rate_val : 0;
                 $product_old_rate_count = $product->rate_count ? $product->rate_count : 0;
                 //Checks if it is the first time the product is rated
                 if ($product_old_rate_count == 0) {
                     $product->rate_val = $product_rate;
                     $product->rate_count = 1;
                 } else {
                     //Checks if the user has rated this product on this order before
                     if ($detail->rate) {
                         if ($product_old_rate > $product_rate) {
                             $product->rate_val = $product->rate_val - ($product_old_rate - $product_rate) / $product_old_rate_count;
                         }
                         if ($product_old_rate < $product_rate) {
                             $product->rate_val = $product->rate_val + ($product_rate - $product_old_rate) / $product_old_rate_count;
                         }
                     } else {
                         if ($product_old_rate > $product_rate) {
                             $product->rate_val = $product->rate_val - ($product_old_rate - $product_rate) / ($product_old_rate_count + 1);
                         }
                         if ($product_old_rate < $product_rate) {
                             $product->rate_val = $product->rate_val + ($product_rate - $product_old_rate) / ($product_old_rate_count + 1);
                         }
                         $product->rate_count = $product_old_rate_count + 1;
                     }
                 }
                 $seller_user = User::find($order->seller_id);
                 $email = $seller_user->email;
                 $mail_subject = trans('email.product_rated.subject');
                 $data = ['product_id' => $product->id, 'subject' => $mail_subject, 'email_message' => $mail_subject, 'email' => $email];
                 Mail::queue('emails.product_rated', $data, function ($message) use($user, $data) {
                     $message->to($data['email'])->subject($data['subject']);
                 });
                 $product->save();
                 $detail->rate = $product_rate;
                 $detail->rate_comment = $product_comment;
                 $detail->save();
                 Notice::create(['user_id' => $seller_user->id, 'sender_id' => $user->id, 'action_type_id' => 14, 'source_id' => $order->id, 'status' => 'new']);
                 return \Response::json(array('success' => true, 'message' => trans('store.order_rate_view.http_messages.success'), 'detail_id' => $detail_id, 'product_rate' => $product_rate), 200);
             } else {
                 return \Response::json(array('success' => false, 'message' => trans('store.order_rate_view.http_messages.no_order'), 'detail_id' => $detail_id, 'product_rate' => $product_rate), 200);
             }
         } else {
             return \Response::json(array('success' => false, 'message' => trans('store.order_rate_view.http_messages.no_user'), 'detail_id' => $detail_id, 'product_rate' => $product_rate), 200);
         }
     } else {
         return \Response::json(array('success' => false, 'message' => trans('store.order_rate_view.http_messages.no_user'), 'detail_id' => $detail_id, 'product_rate' => $product_rate), 200);
     }
 }
 public function saveChangeOrder(Request $request, $id)
 {
     $validator = Validator::make($request->all(), ['places' => 'required'], ['places.required' => 'Tempat tidak boleh kosong.']);
     if ($validator->fails()) {
         return redirect()->back()->withErrors($validator)->withInput();
     }
     // Order Place
     $inputPlaces = explode(',', $request->get('places'));
     $oldPlaces = array_column(OrderPlace::where('order_id', $id)->get()->toArray(), 'place_id');
     # Compare For New
     $diff = array_diff($inputPlaces, $oldPlaces);
     if (count($diff)) {
         $places = Place::whereIn('id', $diff)->get();
         $orderPlaces = [];
         foreach ($places as $place) {
             array_push($orderPlaces, ['order_id' => $id, 'place_id' => $place->id, 'harga' => $place->harga]);
         }
         OrderPlace::insert($orderPlaces);
     }
     # Compare For Delete
     $diff = array_diff($oldPlaces, $inputPlaces);
     if (count($diff)) {
         OrderPlace::where('order_id', $id)->whereIn('place_id', $diff)->delete();
     }
     $data_order_detail = $request->session()->has('data_order') ? $request->session()->get('data_order') : [];
     $order = Order::with('place.place')->find($id);
     if (count($data_order_detail)) {
         // Order Detail
         $orderDetailOld = OrderDetail::where('order_id', $id)->whereIn('produk_id', array_keys($data_order_detail))->get();
         # Update Order Detail
         foreach ($orderDetailOld as $odo) {
             $oldQty = $odo->qty;
             $updateQty = $oldQty + $data_order_detail[$odo->produk_id]['qty'];
             $updatePrice = $data_order_detail[$odo->produk_id]['harga'];
             OrderDetail::find($odo->id)->update(['qty' => $updateQty, 'harga_jual' => $updatePrice]);
             unset($data_order_detail[$odo->produk_id]);
         }
         if (count($data_order_detail)) {
             # New Order Detail
             $produks = Produk::with(['detail' => function ($query) {
                 $query->join('bahans', 'produk_details.bahan_id', '=', 'bahans.id');
             }])->whereIn('id', array_keys($data_order_detail))->get();
             $orderDetailBahan = [];
             foreach ($produks as $produk) {
                 $pId = $produk->id;
                 // Order Detail
                 $orderDetail = ['order_id' => $id, 'produk_id' => $produk->id, 'hpp' => CountHpp($produk), 'harga_jual' => $data_order_detail[$pId]['harga'], 'qty' => $data_order_detail[$pId]['qty'], 'use_mark_up' => $produk->use_mark_up, 'mark_up' => $produk->mark_up, 'note' => $data_order_detail[$pId]['note']];
                 //echo "<pre>", print_r($orderDetail), "</pre>";
                 $orderDetail = OrderDetail::create($orderDetail);
                 if ($produk->detail->count()) {
                     // Order Detail Bahan
                     foreach ($produk->detail as $pd) {
                         array_push($orderDetailBahan, ['order_detail_id' => $orderDetail->id, 'bahan_id' => $pd->bahan_id, 'harga' => $pd->harga, 'qty' => $pd->qty, 'satuan' => $pd->satuan]);
                     }
                 }
             }
             OrderDetailBahan::insert($orderDetailBahan);
         }
         Artisan::call('bahan:count');
         Artisan::call('produk:count');
         $request->session()->forget('data_order');
     }
     $tglRedirect = $order->tanggal->format('Y-m-d');
     $typeRedirect = $order->place[0]->place->kategori_id;
     return redirect('/order?tgl=' . $tglRedirect . '&type=' . $typeRedirect)->with('succcess', 'Sukses ubah data order.');
 }
 public function changeTransaksi(Request $request)
 {
     \Debugbar::disable();
     $id = $request->get('id');
     $data_order_detail = $request->get('data_order') != "" ? json_decode($request->get('data_order'), true) : [];
     // Convert like data session
     $temp = [];
     foreach ($data_order_detail as $d) {
         $key = $d['id'];
         $temp[$key] = $d;
     }
     $data_order_detail = $temp;
     $order = \App\Order::with('place.place')->find($id);
     if (count($data_order_detail)) {
         // Order Detail
         $orderDetailOld = \App\OrderDetail::where('order_id', $id)->whereIn('produk_id', array_keys($data_order_detail))->get();
         # Update Order Detail
         foreach ($orderDetailOld as $odo) {
             $oldQty = $odo->qty;
             $updateQty = $oldQty + $data_order_detail[$odo->produk_id]['qty'];
             $updatePrice = $data_order_detail[$odo->produk_id]['harga'];
             \App\OrderDetail::find($odo->id)->update(['qty' => $updateQty, 'harga_jual' => $updatePrice]);
             unset($data_order_detail[$odo->produk_id]);
         }
         if (count($data_order_detail)) {
             # New Order Detail
             $produks = Produk::with(['detail' => function ($query) {
                 $query->join('bahans', 'produk_details.bahan_id', '=', 'bahans.id');
             }])->whereIn('id', array_keys($data_order_detail))->get();
             $orderDetailBahan = [];
             foreach ($produks as $produk) {
                 $pId = $produk->id;
                 // Order Detail
                 $orderDetail = ['order_id' => $id, 'produk_id' => $produk->id, 'hpp' => CountHpp($produk), 'harga_jual' => $data_order_detail[$pId]['harga'], 'qty' => $data_order_detail[$pId]['qty'], 'use_mark_up' => $produk->use_mark_up, 'mark_up' => $produk->mark_up, 'note' => ""];
                 //echo "<pre>", print_r($orderDetail), "</pre>";
                 $orderDetail = \App\OrderDetail::create($orderDetail);
                 if ($produk->detail->count()) {
                     // Order Detail Bahan
                     foreach ($produk->detail as $pd) {
                         array_push($orderDetailBahan, ['order_detail_id' => $orderDetail->id, 'bahan_id' => $pd->bahan_id, 'harga' => $pd->harga, 'qty' => $pd->qty, 'satuan' => $pd->satuan]);
                     }
                 }
             }
             \App\OrderDetailBahan::insert($orderDetailBahan);
         }
     }
     Artisan::call('bahan:count');
     Artisan::call('produk:count');
     return 1;
 }
Ejemplo n.º 4
0
 /**
  * Remove the specified resource from storage.
  *
  * @param  int  $id
  * @return Response
  */
 public function destroy($id)
 {
     OrderDetail::find($id)->delete();
     return redirect('orderDetails');
 }
Ejemplo n.º 5
0
 function update_order(Request $request, $id)
 {
     $input = $request->all();
     if ($id) {
         $total = 0;
         $order = Order::find($id);
         foreach ($input['parameter'] as $key => $parameter) {
             $orderArr = array();
             $orderArr['parameter'] = $parameter;
             $orderArr['state'] = $input['state'][$key];
             $orderArr['method'] = $input['method'][$key];
             $orderArr['test_method'] = $input['test_method'][$key];
             $orderArr['quantity'] = $input['quantity'][$key];
             $orderArr['price'] = $input['price'][$key];
             $orderArr['total'] = $orderArr['price'] * $orderArr['quantity'];
             if (isset($input['test_id'][$key])) {
                 $orderArr['test_id'] = $input['test_id'][$key];
             }
             $total += $orderArr['price'] * $orderArr['quantity'];
             $orderDetails = OrderDetail::find($key);
             $orderDetails->update($orderArr);
         }
         if ($total) {
             $order->update(array('total' => $total));
         }
         Session::flash('flash_message', 'Order has been updated successfully.');
         Session::flash('flash_type', 'alert-success');
     }
     return redirect('home');
 }