feat: add SMS notification for Daya loan approval - Implemented SMS sending functionality and created SmsTemplates for message formatting
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 4m11s

This commit is contained in:
masoodafar-web
2025-12-26 09:20:15 +03:30
parent 9448f3fff0
commit 3d42c91d21
2 changed files with 110 additions and 1 deletions
@@ -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<ProcessDayaLoanApprovalCommand, ProcessDayaLoanApprovalResponseDto>
{
private readonly IApplicationDbContext _context;
private readonly IKavenegarService _smsService;
private readonly ILogger<ProcessDayaLoanApprovalCommandHandler> _logger;
public ProcessDayaLoanApprovalCommandHandler(IApplicationDbContext context)
public ProcessDayaLoanApprovalCommandHandler(
IApplicationDbContext context,
IKavenegarService smsService,
ILogger<ProcessDayaLoanApprovalCommandHandler> logger)
{
_context = context;
_smsService = smsService;
_logger = logger;
}
public async Task<ProcessDayaLoanApprovalResponseDto> Handle(ProcessDayaLoanApprovalCommand request, CancellationToken cancellationToken)
@@ -140,6 +150,9 @@ public class ProcessDayaLoanApprovalCommandHandler : IRequestHandler<ProcessDaya
await _context.SaveChangesAsync(cancellationToken);
// ارسال SMS به کاربر
await SendDayaLoanSmsAsync(user);
return new ProcessDayaLoanApprovalResponseDto
{
UserId = user.Id,
@@ -151,4 +164,29 @@ public class ProcessDayaLoanApprovalCommandHandler : IRequestHandler<ProcessDaya
Message = "اعتبار دایا با موفقیت دریافت شد"
};
}
/// <summary>
/// ارسال SMS اطلاع‌رسانی دریافت اعتبار دایا
/// </summary>
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);
}
}
}