Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

InsurancePoliciesService.cs 2.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. namespace Diligent.WebAPI.Business.Services
  2. {
  3. public class InsurancePoliciesService : IInsurancePoliciesService
  4. {
  5. private readonly DatabaseContext _context;
  6. private readonly IWebhookPublisherService _webhookPublisher;
  7. private readonly IMapper _mapper;
  8. public InsurancePoliciesService(DatabaseContext context, IWebhookPublisherService webhookPublisher, IMapper mapper)
  9. {
  10. _context = context;
  11. _webhookPublisher = webhookPublisher;
  12. _mapper = mapper;
  13. }
  14. public async Task<List<InsurancePolicyViewDto>> GetInsurancePolicies()
  15. {
  16. var insurancePolicies = await _context.InsurancePolicies
  17. .Include(i => i.Insurer)
  18. .ThenInclude(k => k.InsuranceCompany)
  19. .ToListAsync();
  20. var insurancePoliciesDto = _mapper.Map<List<InsurancePolicyViewDto>>(insurancePolicies);
  21. return insurancePoliciesDto;
  22. }
  23. public async Task<InsurancePolicyViewDto?> GetInsurancePolicy(long id)
  24. {
  25. var insurancePolicy = await _context.InsurancePolicies
  26. .Include(i => i.Insurer)
  27. .ThenInclude(k => k.InsuranceCompany)
  28. .FirstOrDefaultAsync(i => i.Id == id);
  29. if (insurancePolicy == null)
  30. throw new EntityNotFoundException("Insurance policy not found");
  31. var insurancePolicyDto = _mapper.Map<InsurancePolicyViewDto>(insurancePolicy);
  32. return insurancePolicyDto;
  33. }
  34. public async Task CreateInsurancePolicy(InsurancePolicyCreateDto insurancePolicyCreateDto)
  35. {
  36. var insurancePolicy = _mapper.Map<InsurancePolicy>(insurancePolicyCreateDto);
  37. var result = await _context.InsurancePolicies.AddAsync(insurancePolicy);
  38. await _webhookPublisher.PublishAsync("insurancePolicy.created", result);
  39. await _context.SaveChangesAsync();
  40. }
  41. public async Task UpdateInsurancePolicy(long insurancePolicyId, InsurancePolicyUpdateDto insurancePolicyUpdateDto)
  42. {
  43. var insurancePolicy = _context.InsurancePolicies.Find(insurancePolicyId);
  44. if (insurancePolicy == null)
  45. throw new EntityNotFoundException("Insurance policy not found");
  46. _mapper.Map(insurancePolicyUpdateDto, insurancePolicy);
  47. insurancePolicy.UpdatedAtUtc = DateTime.UtcNow;
  48. _context.Entry(insurancePolicy).State = EntityState.Modified;
  49. await _context.SaveChangesAsync();
  50. }
  51. public async Task DeleteInsurancePolicy(long insurancePolicyId)
  52. {
  53. var insurancePolicy = _context.InsurancePolicies.Find(insurancePolicyId);
  54. if (insurancePolicy == null)
  55. throw new EntityNotFoundException("Insurance policy not found");
  56. _context.Remove(insurancePolicy);
  57. await _context.SaveChangesAsync();
  58. }
  59. }
  60. }