151 lines
5.3 KiB
PHP
151 lines
5.3 KiB
PHP
<?php
|
|
namespace App\Services;
|
|
|
|
use Illuminate\Http\Request;
|
|
|
|
use App\Models\Order;
|
|
use App\Models\ProductStock;
|
|
use App\Models\SmsTemplate;
|
|
use App\Models\User;
|
|
use App\Utility\NotificationUtility;
|
|
use App\Utility\SmsUtility;
|
|
|
|
|
|
class OrderService{
|
|
|
|
public function handle_delivery_status(Request $request)
|
|
{
|
|
$order = Order::findOrFail($request->order_id);
|
|
$order->delivery_viewed = '0';
|
|
$order->delivery_status = $request->status;
|
|
$order->save();
|
|
|
|
if ($request->status == 'cancelled' && $order->payment_type == 'wallet') {
|
|
$user = User::where('id', $order->user_id)->first();
|
|
$user->balance += $order->grand_total;
|
|
$user->save();
|
|
}
|
|
|
|
foreach ($order->orderDetails as $key => $orderDetail) {
|
|
|
|
$orderDetail->delivery_status = $request->status;
|
|
$orderDetail->save();
|
|
|
|
if ($request->status == 'cancelled') {
|
|
product_restock($orderDetail);
|
|
}
|
|
|
|
if (addon_is_activated('affiliate_system') && auth()->user()->user_type == 'admin') {
|
|
if (($request->status == 'delivered' || $request->status == 'cancelled') &&
|
|
$orderDetail->product_referral_code
|
|
) {
|
|
|
|
$no_of_delivered = 0;
|
|
$no_of_canceled = 0;
|
|
|
|
if ($request->status == 'delivered') {
|
|
$no_of_delivered = $orderDetail->quantity;
|
|
}
|
|
if ($request->status == 'cancelled') {
|
|
$no_of_canceled = $orderDetail->quantity;
|
|
}
|
|
|
|
$referred_by_user = User::where('referral_code', $orderDetail->product_referral_code)->first();
|
|
|
|
$affiliateController = new AffiliateController;
|
|
$affiliateController->processAffiliateStats($referred_by_user->id, 0, 0, $no_of_delivered, $no_of_canceled);
|
|
}
|
|
}
|
|
}
|
|
if (addon_is_activated('otp_system') && SmsTemplate::where('identifier', 'delivery_status_change')->first()->status == 1) {
|
|
try {
|
|
SmsUtility::delivery_status_change(json_decode($order->shipping_address)->phone, $order);
|
|
} catch (\Exception $e) {
|
|
|
|
}
|
|
}
|
|
|
|
//sends Notifications to user
|
|
NotificationUtility::sendNotification($order, $request->status);
|
|
if (get_setting('google_firebase') == 1 && $order->user->device_token != null) {
|
|
$request->device_token = $order->user->device_token;
|
|
$request->title = "Order updated !";
|
|
$status = str_replace("_", "", $order->delivery_status);
|
|
$request->text = " Your order {$order->code} has been {$status}";
|
|
|
|
$request->type = "order";
|
|
$request->id = $order->id;
|
|
$request->user_id = $order->user->id;
|
|
|
|
NotificationUtility::sendFirebaseNotification($request);
|
|
}
|
|
|
|
|
|
if (addon_is_activated('delivery_boy')) {
|
|
if (auth()->user()->user_type == 'delivery_boy') {
|
|
$deliveryBoyController = new DeliveryBoyController;
|
|
$deliveryBoyController->store_delivery_history($order);
|
|
}
|
|
}
|
|
}
|
|
|
|
public function handle_payment_status(Request $request)
|
|
{
|
|
$order = Order::findOrFail($request->order_id);
|
|
$order->payment_status_viewed = '0';
|
|
$order->save();
|
|
|
|
if (auth()->user()->user_type == 'seller') {
|
|
foreach ($order->orderDetails->where('seller_id', auth()->user()->id) as $key => $orderDetail) {
|
|
$orderDetail->payment_status = $request->status;
|
|
$orderDetail->save();
|
|
}
|
|
} else {
|
|
foreach ($order->orderDetails as $key => $orderDetail) {
|
|
$orderDetail->payment_status = $request->status;
|
|
$orderDetail->save();
|
|
}
|
|
}
|
|
|
|
$status = 'paid';
|
|
foreach ($order->orderDetails as $key => $orderDetail) {
|
|
if ($orderDetail->payment_status != 'paid') {
|
|
$status = 'unpaid';
|
|
}
|
|
}
|
|
$order->payment_status = $status;
|
|
$order->save();
|
|
|
|
|
|
if ($order->payment_status == 'paid' && $order->commission_calculated == 0) {
|
|
calculateCommissionAffilationClubPoint($order);
|
|
}
|
|
|
|
//sends Notifications to user
|
|
NotificationUtility::sendNotification($order, $request->status);
|
|
if (get_setting('google_firebase') == 1 && $order->user->device_token != null) {
|
|
$request->device_token = $order->user->device_token;
|
|
$request->title = "Order updated !";
|
|
$status = str_replace("_", "", $order->payment_status);
|
|
$request->text = " Your order {$order->code} has been {$status}";
|
|
|
|
$request->type = "order";
|
|
$request->id = $order->id;
|
|
$request->user_id = $order->user->id;
|
|
|
|
NotificationUtility::sendFirebaseNotification($request);
|
|
}
|
|
|
|
|
|
if (addon_is_activated('otp_system') && SmsTemplate::where('identifier', 'payment_status_change')->first()->status == 1) {
|
|
try {
|
|
SmsUtility::payment_status_change(json_decode($order->shipping_address)->phone, $order);
|
|
} catch (\Exception $e) {
|
|
|
|
}
|
|
}
|
|
return 1;
|
|
|
|
}
|
|
|
|
} |