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; }
/** * Remove the specified resource from storage. * * @param int $id * @return Response */ public function destroy($id) { OrderDetail::find($id)->delete(); return redirect('orderDetails'); }
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'); }