diff --git a/BMA.EHR.Application/ApplicationServicesRegistration.cs b/BMA.EHR.Application/ApplicationServicesRegistration.cs index e92d8c5d..0db5e99a 100644 --- a/BMA.EHR.Application/ApplicationServicesRegistration.cs +++ b/BMA.EHR.Application/ApplicationServicesRegistration.cs @@ -1,4 +1,5 @@ -using BMA.EHR.Application.Repositories; +using BMA.EHR.Application.Messaging; +using BMA.EHR.Application.Repositories; using BMA.EHR.Application.Repositories.Commands; using BMA.EHR.Application.Repositories.MessageQueue; using BMA.EHR.Application.Repositories.Reports; @@ -28,6 +29,8 @@ namespace BMA.EHR.Application services.AddTransient(); services.AddTransient(); + services.AddTransient(); + return services; } } diff --git a/BMA.EHR.Infrastructure/Messaging/EmailSenderService.cs b/BMA.EHR.Application/Messaging/EmailSenderService.cs similarity index 97% rename from BMA.EHR.Infrastructure/Messaging/EmailSenderService.cs rename to BMA.EHR.Application/Messaging/EmailSenderService.cs index 08a52405..02a9195a 100644 --- a/BMA.EHR.Infrastructure/Messaging/EmailSenderService.cs +++ b/BMA.EHR.Application/Messaging/EmailSenderService.cs @@ -3,7 +3,7 @@ using Microsoft.Extensions.Configuration; using System.Net; using System.Net.Mail; -namespace BMA.EHR.Infrastructure.Messaging +namespace BMA.EHR.Application.Messaging { public class EmailSenderService { diff --git a/BMA.EHR.Application/Repositories/Commands/CommandRepository.cs b/BMA.EHR.Application/Repositories/Commands/CommandRepository.cs index 8b1f1375..cedf7542 100644 --- a/BMA.EHR.Application/Repositories/Commands/CommandRepository.cs +++ b/BMA.EHR.Application/Repositories/Commands/CommandRepository.cs @@ -1,4 +1,5 @@ using BMA.EHR.Application.Common.Interfaces; +using BMA.EHR.Application.Messaging; using BMA.EHR.Application.Requests.Commands; using BMA.EHR.Application.Responses; using BMA.EHR.Domain.Extensions; @@ -30,6 +31,7 @@ namespace BMA.EHR.Application.Repositories.Commands private readonly OrganizationCommonRepository _organizationCommonRepository; private readonly UserProfileRepository _userProfileRepository; private readonly IConfiguration _configuration; + private readonly EmailSenderService _emailSenderService; #endregion @@ -39,13 +41,15 @@ namespace BMA.EHR.Application.Repositories.Commands IHttpContextAccessor httpContextAccessor, OrganizationCommonRepository organizationCommonRepository, UserProfileRepository userProfileRepository, - IConfiguration configuration) : base(dbContext, httpContextAccessor) + IConfiguration configuration, + EmailSenderService emailSenderService) : base(dbContext, httpContextAccessor) { _dbContext = dbContext; _httpContextAccessor = httpContextAccessor; _organizationCommonRepository = organizationCommonRepository; _userProfileRepository = userProfileRepository; _configuration = configuration; + _emailSenderService = emailSenderService; } #endregion @@ -1758,7 +1762,13 @@ namespace BMA.EHR.Application.Repositories.Commands await _dbContext.SaveChangesAsync(); - // Send noti inbox and email + // TODO: ต้องเปลี่ยนเป็น Email จริงนะ ตอนนี้ Hardcode อยู่ + // Send noti inbox and email + var subject = $"คุณได้รับคำสั่งเลขที่ {command.CommandNo}/{command.CommandYear} ลงวันที่ {command.CommandExcecuteDate.Value.ToThaiFullDate3()}"; + var body = $"คุณได้รับบรรจุเป็นข้าราชการกรุงเทพมหานครสามัญ ตามคำสั่งเลขที่ {command.CommandNo}/{command.CommandYear} ลงวันที่ {command.CommandExcecuteDate.Value.ToThaiFullDate3()}"; + _emailSenderService.SendMail(subject, body, "dev@frappet.com"); + + var inbox = new Inbox { Subject = $"คุณได้รับคำสั่งเลขที่ {command.CommandNo}/{command.CommandYear} ลงวันที่ {command.CommandExcecuteDate.Value.ToThaiFullDate3()}", @@ -1777,6 +1787,8 @@ namespace BMA.EHR.Application.Repositories.Commands }; _dbContext.Set().Add(noti); await _dbContext.SaveChangesAsync(); + + } // send cc noti inbox @@ -1785,14 +1797,27 @@ namespace BMA.EHR.Application.Repositories.Commands var pf = await _dbContext.Set().FirstOrDefaultAsync(x => x.CitizenId == cc.CitizenId); if (pf != null) { - var inbox = new Inbox + if (cc.IsSendInbox) { - Subject = $"คุณได้รับสำเนาคำสั่งเลขที่ {command.CommandNo}/{command.CommandYear} ลงวันที่ {command.CommandExcecuteDate.Value.ToThaiFullDate3()}", - Body = $"คำสั่งบบรรจุเป็นข้าราชการกรุงเทพมหานครสามัญ คำสั่งเลขที่ {command.CommandNo}/{command.CommandYear} ลงวันที่ {command.CommandExcecuteDate.Value.ToThaiFullDate3()}", - ReceiverUserId = pf.Id, - Payload = "", - }; - _dbContext.Set().Add(inbox); + var inbox = new Inbox + { + Subject = $"คุณได้รับสำเนาคำสั่งเลขที่ {command.CommandNo}/{command.CommandYear} ลงวันที่ {command.CommandExcecuteDate.Value.ToThaiFullDate3()}", + Body = $"คำสั่งบบรรจุเป็นข้าราชการกรุงเทพมหานครสามัญ คำสั่งเลขที่ {command.CommandNo}/{command.CommandYear} ลงวันที่ {command.CommandExcecuteDate.Value.ToThaiFullDate3()}", + ReceiverUserId = pf.Id, + Payload = "", + }; + _dbContext.Set().Add(inbox); + } + + if (cc.IsSendMail) + { + // TODO: ต้องเปลี่ยนเป็น Email จริงนะ ตอนนี้ Hardcode อยู่ + // Send noti inbox and email + var subject = $"คุณได้รับสำเนาคำสั่งเลขที่ {command.CommandNo}/{command.CommandYear} ลงวันที่ {command.CommandExcecuteDate.Value.ToThaiFullDate3()}"; + var body = $"คำสั่งบบรรจุเป็นข้าราชการกรุงเทพมหานครสามัญ คำสั่งเลขที่ {command.CommandNo}/{command.CommandYear} ลงวันที่ {command.CommandExcecuteDate.Value.ToThaiFullDate3()}"; + _emailSenderService.SendMail(subject, body, "dev@frappet.com"); + } + var noti = new Notification { diff --git a/BMA.EHR.Command.Service/Controllers/OrderController.cs b/BMA.EHR.Command.Service/Controllers/OrderController.cs index 3364cde7..90e005f8 100644 --- a/BMA.EHR.Command.Service/Controllers/OrderController.cs +++ b/BMA.EHR.Command.Service/Controllers/OrderController.cs @@ -1,4 +1,5 @@ -using BMA.EHR.Application.Repositories; +using BMA.EHR.Application.Messaging; +using BMA.EHR.Application.Repositories; using BMA.EHR.Application.Repositories.Commands; using BMA.EHR.Application.Requests.Commands; using BMA.EHR.Application.Responses; @@ -12,7 +13,6 @@ using BMA.EHR.Infrastructure.Persistence; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Swashbuckle.AspNetCore.Annotations; -using System.Net; using System.Net.Http.Headers; using System.Security.Claims; @@ -37,6 +37,7 @@ namespace BMA.EHR.Command.Service.Controllers private readonly CommandTypeRepository _commandTypeRepository; private readonly CommandStatusRepository _commandStatusRepository; private readonly UserProfileRepository _userProfileRepository; + private readonly EmailSenderService _emailSenderService; #endregion @@ -50,7 +51,8 @@ namespace BMA.EHR.Command.Service.Controllers PrefixRepository prefixRepository, CommandTypeRepository commandTypeRepository, CommandStatusRepository commandStatusRepository, - UserProfileRepository userProfileRepository) + UserProfileRepository userProfileRepository, + EmailSenderService emailSenderService) { _repository = repository; _context = context; @@ -61,6 +63,7 @@ namespace BMA.EHR.Command.Service.Controllers _commandTypeRepository = commandTypeRepository; _commandStatusRepository = commandStatusRepository; _userProfileRepository = userProfileRepository; + _emailSenderService = emailSenderService; } #endregion @@ -88,6 +91,22 @@ namespace BMA.EHR.Command.Service.Controllers #region " Methods " + //[HttpGet("mail")] + //[AllowAnonymous] + //public IActionResult TestSendMail() + //{ + // try + // { + // _emailSenderService.SendMail("test send mail", "test body", "suphonchai@frappet.com"); + + // return Ok(); + // } + // catch + // { + // throw; + // } + //} + /// /// แสดงปีเป็นปีพุทธศักราช โดยดึงจากข้อมูลที่มีในระบบ /// diff --git a/BMA.EHR.Command.Service/appsettings.json b/BMA.EHR.Command.Service/appsettings.json index 0b449f48..468cc133 100644 --- a/BMA.EHR.Command.Service/appsettings.json +++ b/BMA.EHR.Command.Service/appsettings.json @@ -34,5 +34,12 @@ "Protocol": "HTTPS", "Node": { "API": "https://bma-ehr.frappet.synology.me/api/v1/probation" + }, + "Mail": { + "Server": "smtp.gmail.com", + "User": "suphonchai.ph@gmail.com", + "Password": "nnjazjcnwhepkxdm", + "MailFrom": "suphonchai.ph@gmail.com", + "Port": "587" } } \ No newline at end of file diff --git a/BMA.EHR.Infrastructure/InfrastructureServiceRegistration.cs b/BMA.EHR.Infrastructure/InfrastructureServiceRegistration.cs index 955765ae..2773b8de 100644 --- a/BMA.EHR.Infrastructure/InfrastructureServiceRegistration.cs +++ b/BMA.EHR.Infrastructure/InfrastructureServiceRegistration.cs @@ -1,6 +1,5 @@ using BMA.EHR.Application.Common.Interfaces; using BMA.EHR.Application.Repositories; -using BMA.EHR.Infrastructure.Messaging; using BMA.EHR.Infrastructure.Persistence; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; @@ -14,7 +13,7 @@ namespace BMA.EHR.Infrastructure IConfiguration configuration) { services.AddTransient(); - services.AddTransient(); + var connectionString = configuration.GetConnectionString("DefaultConnection");