سلام
من یه قطعه کد دارم که کارش اینه که سفارش مشتری رو بسازه.
حالا اگر باقی مانده تعداد سفارش های مشتری بر ۵ برابر با ۰ باشه میاد برای مشتری یک کوپن تخفیف میسازه و یه پیامک بهش میده که بفرما اینم کد تخفیفت!
حالا متوجه شدم که این کار درستی نیست که همینجوری کلاس ها و متد هارو 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 میشه!
یکی ساختن کوپن
یکی هم ارسال پیامک
حالا از دید استاندارد کار درست اینه که ۴ تا کلاس داشته باشم و هر کدوم از این کار ها رو جدا کنم یا اینکه میتونم کنار هم بزارمشون و کلا ۲ تا کلاس داشته باشم؟
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟