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);
}
}