محمدرضا فلکی
9 ماه پیش توسط محمدرضا فلکی مطرح شد
1 پاسخ

event و listener در لاراول

سلام
من یه قطعه کد دارم که کارش اینه که سفارش مشتری رو بسازه.
حالا اگر باقی مانده تعداد سفارش های مشتری بر ۵ برابر با ۰ باشه میاد برای مشتری یک کوپن تخفیف میسازه و یه پیامک بهش میده که بفرما اینم کد تخفیفت!
حالا متوجه شدم که این کار درستی نیست که همینجوری کلاس ها و متد هارو add کنم و بهتره برای همچنین action هایی از event class و listener class ها استفاده کنم و اونجا بیام اون کلاس ها و متد هارو add کنم.
تا اینجا درست میگم؟؟
کد معمولی:

<?php

namespace App\Services;

use App\Jobs\SMSLog;
use App\Repositories\CouponRepository;
use App\Repositories\CustomerRepository;
use App\Repositories\MobileNumberRepository;
use App\Repositories\OrderRepository;
use Illuminate\Support\Facades\Log;

class OrderService
{
    static function create($customerID, $discount, $description, $price)
    {
        $order = OrderRepository::create($customerID, $discount, $description, $price);

        $orders = OrderRepository::getCountOfOrders($customerID);

        $customer = CustomerRepository::find($customerID);

        if ($orders % 5 == 0) {

            $coupon = CouponRepository::create($couponName = "orders", 50, null);

            CouponRepository::AttachCoupon($coupon, $customer);

            $customerMobileNumber = MobileNumberRepository::getUniqueDefaultMobileNumber($customer);

            $mobileNumber = $customerMobileNumber->mobile_number;

            $smsText = "آرایشگاه رویال
سلام " . $customer->first_name . " عزیز
کوپن جدیدی به نام " . $couponName . " برای شما ثبت شده است";

            Log::info('مشتری ' . $customer->first_name . ' ' . $customer->last_name . ' ۵ تا سفارش داده و کوپن ' . $coupon->coupon . ' به مقدار 50 درصد تخفیف ثبت و پیامک شد');

            SMSLog::dispatchSync($smsText, $mobileNumber);
        }

        Log::info('سفارش ' . $order->description . ' برای مشتری ' . $customer->first_name . ' ' . $customer->last_name . ' ثبت شد');

        return [
            "status" => true,
            "message" => "سفارش با موفقیت اضافه شد",
        ];

    }
}

خب سوال من اینه که میخوام محتوای داخل شرط if رو ببرم داخل event و listener ولی نمیدونم که باید ۲ تا event class و ۲ تا listener class داشته باشم یا یک event class و یک listener class؟
سوالم رو میپرسم چون محتوای داخل if شامل دو تا action میشه!
یکی ساختن کوپن
یکی هم ارسال پیامک
حالا از دید استاندارد کار درست اینه که ۴ تا کلاس داشته باشم و هر کدوم از این کار ها رو جدا کنم یا اینکه میتونم کنار هم بزارمشون و کلا ۲ تا کلاس داشته باشم؟


ثبت پرسش جدید
احسان اسدی
تخصص : برنامه نویس Back-end
@assadiehsan 9 ماه پیش مطرح شد
1

درود بر شما
شما یک event نیاز داری و ۲ تا listener یکی برای کوپن و یکی هم برای ارسال sms


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام