diff --git a/src/CMSMicroservice.Application/DayaLoanCQ/Commands/ProcessDayaLoanApproval/ProcessDayaLoanApprovalCommandHandler.cs b/src/CMSMicroservice.Application/DayaLoanCQ/Commands/ProcessDayaLoanApproval/ProcessDayaLoanApprovalCommandHandler.cs index 03ee2f6..6ea84c4 100644 --- a/src/CMSMicroservice.Application/DayaLoanCQ/Commands/ProcessDayaLoanApproval/ProcessDayaLoanApprovalCommandHandler.cs +++ b/src/CMSMicroservice.Application/DayaLoanCQ/Commands/ProcessDayaLoanApproval/ProcessDayaLoanApprovalCommandHandler.cs @@ -1,15 +1,25 @@ using CMSMicroservice.Domain.Events; using CMSMicroservice.Domain.Enums; +using CMSMicroservice.Domain.Common; +using CMSMicroservice.Application.Common.Interfaces; +using Microsoft.Extensions.Logging; namespace CMSMicroservice.Application.DayaLoanCQ.Commands.ProcessDayaLoanApproval; public class ProcessDayaLoanApprovalCommandHandler : IRequestHandler { private readonly IApplicationDbContext _context; + private readonly IKavenegarService _smsService; + private readonly ILogger _logger; - public ProcessDayaLoanApprovalCommandHandler(IApplicationDbContext context) + public ProcessDayaLoanApprovalCommandHandler( + IApplicationDbContext context, + IKavenegarService smsService, + ILogger logger) { _context = context; + _smsService = smsService; + _logger = logger; } public async Task Handle(ProcessDayaLoanApprovalCommand request, CancellationToken cancellationToken) @@ -140,6 +150,9 @@ public class ProcessDayaLoanApprovalCommandHandler : IRequestHandler + /// ارسال SMS اطلاع‌رسانی دریافت اعتبار دایا + /// + private async Task SendDayaLoanSmsAsync(User user) + { + try + { + var userName = SmsTemplates.GetUserName(user.FirstName); + var message = SmsTemplates.DayaLoanReceived(userName); + + await _smsService.SendAsync(user.Mobile, message); + + _logger.LogInformation( + "Daya loan SMS sent to User {UserId}, Mobile: {Mobile}", + user.Id, user.Mobile); + } + catch (Exception ex) + { + // خطای SMS نباید فرایند اصلی رو متوقف کنه + _logger.LogError(ex, + "Failed to send Daya loan SMS to User {UserId}, Mobile: {Mobile}", + user.Id, user.Mobile); + } + } } diff --git a/src/CMSMicroservice.Domain/Common/SmsTemplates.cs b/src/CMSMicroservice.Domain/Common/SmsTemplates.cs new file mode 100644 index 0000000..ca7df31 --- /dev/null +++ b/src/CMSMicroservice.Domain/Common/SmsTemplates.cs @@ -0,0 +1,71 @@ +namespace CMSMicroservice.Domain.Common; + +/// +/// قالب‌های پیامک - همه پیام‌های SMS در یک جا +/// +public static class SmsTemplates +{ + /// + /// پیام دریافت اعتبار دایا + /// + public static string DayaLoanReceived(string userName) => + $"{userName} گرامی، اعتبار شما واریز گردید. شما می‌توانید با مراجعه به سامانه کارابازار فرایند فعال‌سازی خود را ادامه دهید. با تشکر از حسن انتخاب شما"; + + /// + /// پیام فعال‌سازی باشگاه مشتریان + /// + public static string ClubActivated(string userName) => + $"{userName} گرامی، عضویت شما در باشگاه مشتریان کارابازار با موفقیت فعال شد. با تشکر از حسن انتخاب شما"; + + /// + /// پیام خرید پکیج + /// + public static string PackagePurchased(string userName, string packageName) => + $"{userName} گرامی، خرید {packageName} با موفقیت انجام شد. با تشکر از حسن انتخاب شما"; + + /// + /// پیام واریز کمیسیون + /// + public static string CommissionDeposited(string userName, long amount) => + $"{userName} گرامی، مبلغ {amount:N0} ریال بابت کمیسیون به کیف پول شما واریز شد."; + + /// + /// پیام برداشت موفق + /// + public static string WithdrawalSuccess(string userName, long amount) => + $"{userName} گرامی، درخواست برداشت شما به مبلغ {amount:N0} ریال با موفقیت ثبت شد."; + + /// + /// پیام ورود به شبکه + /// + public static string NetworkJoined(string userName, string referrerName) => + $"{userName} گرامی، شما با موفقیت در شبکه {referrerName} ثبت شدید. با تشکر از حسن انتخاب شما"; + + /// + /// پیام زیرمجموعه جدید + /// + public static string NewDownline(string userName, string downlineName) => + $"{userName} گرامی، {downlineName} به عنوان زیرمجموعه شما ثبت شد."; + + /// + /// پیام OTP + /// + public static string OtpCode(string code) => + $"کد تایید شما: {code}\nکارابازار"; + + /// + /// پیام خوش‌آمدگویی + /// + public static string Welcome(string userName) => + $"{userName} گرامی، به کارابازار خوش آمدید."; + + #region Helper + + /// + /// دریافت نام کاربر یا مقدار پیش‌فرض + /// + public static string GetUserName(string? firstName) => + !string.IsNullOrWhiteSpace(firstName) ? firstName : "کاربر"; + + #endregion +}