Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

95 řádky
3.1KB

  1. using System.Threading.Tasks;
  2. using Campaign_Tracker.Server.Models;
  3. using Microsoft.EntityFrameworkCore;
  4. namespace Campaign_Tracker.Server.Services;
  5. public class MunicipalityAddressService : IMunicipalityAddressService
  6. {
  7. private readonly ApplicationDbContext _context;
  8. public MunicipalityAddressService(ApplicationDbContext context)
  9. {
  10. _context = context;
  11. }
  12. public async Task<IEnumerable<MunicipalityAddress>> GetAddressesAsync(int municipalityId)
  13. {
  14. return await _context.MunicipalityAddresses
  15. .Where(a => a.MunicipalityId == municipalityId)
  16. .OrderByDescending(a => a.EffectiveDate)
  17. .ToListAsync();
  18. }
  19. public async Task<MunicipalityAddress> GetAddressAsync(int id)
  20. {
  21. return await _context.MunicipalityAddresses.FindAsync(id);
  22. }
  23. public async Task<MunicipalityAddress> CreateAddressAsync(MunicipalityAddress address)
  24. {
  25. // Mark previous addresses as not current
  26. var existingCurrent = await _context.MunicipalityAddresses
  27. .Where(a => a.MunicipalityId == address.MunicipalityId && a.IsCurrent)
  28. .FirstOrDefaultAsync();
  29. if (existingCurrent != null)
  30. {
  31. existingCurrent.IsCurrent = false;
  32. existingCurrent.UpdatedAt = DateTime.UtcNow;
  33. }
  34. address.IsCurrent = true;
  35. address.CreatedAt = DateTime.UtcNow;
  36. address.UpdatedAt = DateTime.UtcNow;
  37. _context.MunicipalityAddresses.Add(address);
  38. await _context.SaveChangesAsync();
  39. return address;
  40. }
  41. public async Task<MunicipalityAddress> UpdateAddressAsync(int id, MunicipalityAddress address)
  42. {
  43. var existingAddress = await _context.MunicipalityAddresses.FindAsync(id);
  44. if (existingAddress == null)
  45. return null;
  46. // Mark previous addresses as not current
  47. var existingCurrent = await _context.MunicipalityAddresses
  48. .Where(a => a.MunicipalityId == existingAddress.MunicipalityId && a.IsCurrent && a.Id != id)
  49. .FirstOrDefaultAsync();
  50. if (existingCurrent != null)
  51. {
  52. existingCurrent.IsCurrent = false;
  53. existingCurrent.UpdatedAt = DateTime.UtcNow;
  54. }
  55. existingAddress.AddressType = address.AddressType;
  56. existingAddress.Street = address.Street;
  57. existingAddress.City = address.City;
  58. existingAddress.State = address.State;
  59. existingAddress.ZipCode = address.ZipCode;
  60. existingAddress.EffectiveDate = address.EffectiveDate;
  61. existingAddress.IsCurrent = true;
  62. existingAddress.UpdatedAt = DateTime.UtcNow;
  63. await _context.SaveChangesAsync();
  64. return existingAddress;
  65. }
  66. public async Task<bool> DeleteAddressAsync(int id)
  67. {
  68. var address = await _context.MunicipalityAddresses.FindAsync(id);
  69. if (address == null)
  70. return false;
  71. _context.MunicipalityAddresses.Remove(address);
  72. await _context.SaveChangesAsync();
  73. return true;
  74. }
  75. }

Powered by TurnKey Linux.