App\Http\Controllers\OrdersController::rateSeller PHP Method

rateSeller() public method

public rateSeller ( Illuminate\Http\Request $request )
$request Illuminate\Http\Request
    public function rateSeller(Request $request)
    {
        $order_id = $request->get('order_id');
        $seller_rate = $request->get('seller_rate');
        $seller_comment = $request->get('seller_comment');
        $user = \Auth::user();
        if ($user) {
            $order = Order::where('id', $order_id)->where('user_id', $user->id)->first();
            if ($order && $order->rate == '') {
                $seller = Business::where('user_id', $order->seller_id)->first();
                $seller_old_rate_val = $seller->rate_val ?: 0;
                $seller_old_rate_count = $seller->rate_count ?: 0;
                //Checks if the order has already been rated by the user
                if ($seller_old_rate_count == 0) {
                    $seller->rate_val = $seller_rate;
                    $seller->rate_count = 1;
                } else {
                    //Checks if the new value should add to the rates or not
                    if ($order->rate) {
                        if ($seller_old_rate_val > $seller_rate) {
                            $seller->rate_val = $seller_old_rate_val - ($seller_old_rate_val - $seller_rate) / $seller_old_rate_count;
                        }
                        if ($seller_old_rate_val < $seller_rate) {
                            $seller->rate_val = $seller_old_rate_val + ($seller_rate - $seller_old_rate_val) / $seller_old_rate_count;
                        }
                    } else {
                        if ($seller_old_rate_val > $seller_rate) {
                            $seller->rate_val = $seller_old_rate_val - ($seller_old_rate_val - $seller_rate) / ($seller_old_rate_count + 1);
                        }
                        if ($seller_old_rate_val < $seller_rate) {
                            $seller->rate_val = $seller_old_rate_val + ($seller_rate - $seller_old_rate_val) / ($seller_old_rate_count + 1);
                        }
                        $seller->rate_count = $seller_old_rate_count + 1;
                    }
                }
                $seller_user = User::find($order->seller_id);
                $email = $seller_user->email;
                $mail_subject = trans('email.order_rated.subject');
                $data = ['order_id' => $order_id, 'subject' => $mail_subject, 'email_message' => $mail_subject, 'email' => $email];
                Mail::queue('emails.order_rated', $data, function ($message) use($user, $data) {
                    $message->to($data['email'])->subject($data['subject']);
                });
                $order->rate = $seller_rate;
                $order->rate_comment = $seller_comment;
                $order->save();
                $seller->save();
                $noticeType = trim($seller_comment) != '' ? '3' : '14';
                Notice::create(['user_id' => $seller->user_id, 'sender_id' => $user->id, 'action_type_id' => 14, 'source_id' => $order->id, 'status' => 'new']);
                return \Response::json(['success' => true, 'message' => trans('store.order_rate_view.http_messages.success'), 'order_id' => $order_id, 'seller_rate' => $seller_rate], 200);
            } else {
                return \Response::json(['success' => false, 'message' => trans('store.order_rate_view.http_messages.no_order'), 'order_id' => $order_id, 'seller_rate' => $seller_rate], 200);
            }
        } else {
            return \Response::json(['success' => false, 'message' => trans('store.order_rate_view.http_messages.no_user'), 'order_id' => $order_id, 'seller_rate' => $seller_rate], 200);
        }
    }