No puede seleccionar más de 25 temas
Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
|
- using System.Threading.Tasks;
- using Campaign_Tracker.Server.Models;
- using Microsoft.EntityFrameworkCore;
-
- namespace Campaign_Tracker.Server.Services;
-
- public class MunicipalityAddressService : IMunicipalityAddressService
- {
- private readonly ApplicationDbContext _context;
-
- public MunicipalityAddressService(ApplicationDbContext context)
- {
- _context = context;
- }
-
- public async Task<IEnumerable<MunicipalityAddress>> GetAddressesAsync(int municipalityId)
- {
- return await _context.MunicipalityAddresses
- .Where(a => a.MunicipalityId == municipalityId)
- .OrderByDescending(a => a.EffectiveDate)
- .ToListAsync();
- }
-
- public async Task<MunicipalityAddress> GetAddressAsync(int id)
- {
- return await _context.MunicipalityAddresses.FindAsync(id);
- }
-
- public async Task<MunicipalityAddress> CreateAddressAsync(MunicipalityAddress address)
- {
- // Mark previous addresses as not current
- var existingCurrent = await _context.MunicipalityAddresses
- .Where(a => a.MunicipalityId == address.MunicipalityId && a.IsCurrent)
- .FirstOrDefaultAsync();
-
- if (existingCurrent != null)
- {
- existingCurrent.IsCurrent = false;
- existingCurrent.UpdatedAt = DateTime.UtcNow;
- }
-
- address.IsCurrent = true;
- address.CreatedAt = DateTime.UtcNow;
- address.UpdatedAt = DateTime.UtcNow;
-
- _context.MunicipalityAddresses.Add(address);
- await _context.SaveChangesAsync();
-
- return address;
- }
-
- public async Task<MunicipalityAddress> UpdateAddressAsync(int id, MunicipalityAddress address)
- {
- var existingAddress = await _context.MunicipalityAddresses.FindAsync(id);
- if (existingAddress == null)
- return null;
-
- // Mark previous addresses as not current
- var existingCurrent = await _context.MunicipalityAddresses
- .Where(a => a.MunicipalityId == existingAddress.MunicipalityId && a.IsCurrent && a.Id != id)
- .FirstOrDefaultAsync();
-
- if (existingCurrent != null)
- {
- existingCurrent.IsCurrent = false;
- existingCurrent.UpdatedAt = DateTime.UtcNow;
- }
-
- existingAddress.AddressType = address.AddressType;
- existingAddress.Street = address.Street;
- existingAddress.City = address.City;
- existingAddress.State = address.State;
- existingAddress.ZipCode = address.ZipCode;
- existingAddress.EffectiveDate = address.EffectiveDate;
- existingAddress.IsCurrent = true;
- existingAddress.UpdatedAt = DateTime.UtcNow;
-
- await _context.SaveChangesAsync();
-
- return existingAddress;
- }
-
- public async Task<bool> DeleteAddressAsync(int id)
- {
- var address = await _context.MunicipalityAddresses.FindAsync(id);
- if (address == null)
- return false;
-
- _context.MunicipalityAddresses.Remove(address);
- await _context.SaveChangesAsync();
-
- return true;
- }
- }
|