using System.Security.Claims; using BMA.EHR.Recurit.Exam.Service.Data; using BMA.EHR.Recurit.Exam.Service.Models; using Microsoft.EntityFrameworkCore; namespace BMA.EHR.Recurit.Exam.Service.Services { public class ReligionService { #region " Fields " private readonly ApplicationDbContext _context; private readonly IHttpContextAccessor _httpContextAccessor; #endregion #region " Constructor and Destructor " public ReligionService(ApplicationDbContext context, IHttpContextAccessor httpContextAccessor) { _context = context; _httpContextAccessor = httpContextAccessor; } #endregion #region " Properties " private string? UserId => _httpContextAccessor?.HttpContext?.User?.FindFirst(ClaimTypes.NameIdentifier)?.Value; private string? FullName => _httpContextAccessor?.HttpContext?.User?.FindFirst("name")?.Value; #endregion #region " Methods " public async Task> GetsAsync(bool showAll = true) { if (showAll) return await _context.Religions.AsQueryable() .OrderBy(d => d.Name) .ToListAsync(); else return await _context.Religions.AsQueryable() .Where(p => p.IsActive) .OrderBy(d => d.Name) .ToListAsync(); } public async Task GetByIdAsync(Guid id) { return await _context.Religions.FirstOrDefaultAsync(x => x.Id == id); } public async Task UpdateAsync(Guid id, Religion updated) { var existData = await _context.Religions.FirstOrDefaultAsync(x => x.Id == id); if (existData != null) { if (existData.Name != updated.Name) { existData.Name = updated.Name; existData.LastUpdateUserId = UserId ?? ""; existData.LastUpdateFullName = FullName ?? ""; existData.LastUpdatedAt = DateTime.Now; } if (existData.IsActive != updated.IsActive) { existData.IsActive = updated.IsActive; existData.LastUpdateUserId = UserId ?? ""; existData.LastUpdateFullName = FullName ?? ""; existData.LastUpdatedAt = DateTime.Now; } await _context.SaveChangesAsync(); } } public async Task CreateAsync(Religion inserted) { inserted.CreatedUserId = UserId ?? ""; inserted.CreatedFullName = FullName ?? "System Administrator"; inserted.CreatedAt = DateTime.Now; inserted.LastUpdatedAt = DateTime.Now; inserted.LastUpdateFullName = FullName ?? "System Administrator"; inserted.LastUpdateUserId = UserId ?? ""; await _context.Religions.AddAsync(inserted); await _context.SaveChangesAsync(); } #endregion } }