using BMA.EHR.Application.Common.Interfaces; using BMA.EHR.Application.Repositories.MessageQueue; using BMA.EHR.Domain.Models.Discipline; using BMA.EHR.Domain.Models.Retirement; using Microsoft.AspNetCore.Http; using Microsoft.EntityFrameworkCore; namespace BMA.EHR.Application.Repositories { public class DisciplineRepository : GenericRepository { private readonly IApplicationDBContext _dbContext; private readonly IDisciplineDbContext _dbDisContext; private readonly IHttpContextAccessor _httpContextAccessor; private readonly NotificationRepository _repositoryNoti; public DisciplineRepository(IApplicationDBContext dbContext, IDisciplineDbContext dbDisContext, NotificationRepository repositoryNoti, IHttpContextAccessor httpContextAccessor) : base(dbContext, httpContextAccessor) { _dbContext = dbContext; _dbDisContext = dbDisContext; _httpContextAccessor = httpContextAccessor; _repositoryNoti = repositoryNoti; } //เรื่องร้องเรียน public async Task NotifyDisciplineComplaint() { var cronjobNotis = await _dbDisContext.Set() .Where(x => x.DateNotification != null) .Where(x => x.DateNotification.Value.Date == DateTime.Now.Date) .AsQueryable() .ToListAsync(); foreach (var cronjobNoti in cronjobNotis) { await _repositoryNoti.PushNotificationAsync( Guid.Parse("08dbca3a-8b6a-4a4e-8b23-1f62e4f30ef6"), $"แจ้งเตือนบันทึกข้อมูลร้องเรียนก่อนวันสิ้นสุดเรื่อง {cronjobNoti.Title}", $"แจ้งเตือนบันทึกข้อมูลร้องเรียนก่อนวันสิ้นสุดเรื่อง {cronjobNoti.Title}" ); } await _dbContext.SaveChangesAsync(); } //เรื่องสืบสวน public async Task NotifyDisciplineInvestigate() { var cronjobNotis = await _dbDisContext.Set() .Where(x => x.InvestigationDateEnd != null && x.InvestigationDateEnd.Value.Date.AddDays(-7) == DateTime.Now.Date) .AsQueryable() .ToListAsync(); foreach (var cronjobNoti in cronjobNotis) { await _repositoryNoti.PushNotificationAsync( Guid.Parse("08dbca3a-8b6a-4a4e-8b23-1f62e4f30ef6"), $"แจ้งเตือนบันทึกข้อมูลสืบสวนก่อนวันสิ้นสุดเรื่อง {cronjobNoti.Title}", $"แจ้งเตือนบันทึกข้อมูลสืบสวนก่อนวันสิ้นสุดเรื่อง {cronjobNoti.Title}" ); } await _dbContext.SaveChangesAsync(); } //เรื่องสอบสวน public async Task NotifyDisciplineDisciplinary() { var cronjobNotis = await _dbDisContext.Set() .Where(x => x.DisciplinaryDateEnd != null && x.DisciplinaryDateEnd.Value.Date.AddDays(-7) == DateTime.Now.Date) .AsQueryable() .ToListAsync(); foreach (var cronjobNoti in cronjobNotis) { await _repositoryNoti.PushNotificationAsync( Guid.Parse("08dbca3a-8b6a-4a4e-8b23-1f62e4f30ef6"), $"แจ้งเตือนบันทึกข้อมูลสอบสวนก่อนวันสิ้นสุดเรื่อง {cronjobNoti.Title}", $"แจ้งเตือนบันทึกข้อมูลสอบสวนก่อนวันสิ้นสุดเรื่อง {cronjobNoti.Title}" ); } await _dbContext.SaveChangesAsync(); } } }