private void UpdateAddons(AllianceDto payload) { var existingAddons = _context.AlianzaAddOns.Include(x => x.InsuranceAddOn).Where(s => s.AlianzaId == payload.Id).Select(s => s).ToList(); existingAddons.ForEach(x => { var exist = payload.AddonList.Contains(x.InsuranceAddOnId); if (exist == false) { if (x.InsuranceAddOn.Id == 1 || x.InsuranceAddOn.Id == 3) { var existingBeneficieries = _context.Beneficiaries.Where(b => b.AlianzaId == x.AlianzaId); foreach (var item in existingBeneficieries) { item.DeletedAt = DateTime.Now; } } _context.AlianzaAddOns.Remove(x); } ; }); payload.AddonList.ForEach(x => { var exist = existingAddons.FirstOrDefault(ad => ad.InsuranceAddOnId == x); if (exist == null) { var newAddon = new AlianzaAddOns() { AlianzaId = payload.Id.GetValueOrDefault(), InsuranceAddOnId = x }; _context.AlianzaAddOns.Add(newAddon); } }); }
public async Task <Alianzas> Update(AllianceDto payload) { var alliance = await _context.Alianzas.FirstOrDefaultAsync(a => a.Id == payload.Id); alliance.StartDate = payload.StartDate; alliance.ElegibleDate = payload.ElegibleDate.GetValueOrDefault(); alliance.AffType = payload.AffType; alliance.AffStatus = payload.AffStatus.GetValueOrDefault(); alliance.CoverId = payload.CoverId.GetValueOrDefault(); alliance.Joint = payload.Joint; alliance.Prima = payload.Prima; UpdateBeneficiaries(payload); UpdateAddons(payload); await _context.SaveChangesAsync(); alliance = await this.UpdateCost(payload.Id.GetValueOrDefault()); RemoveCircularDependency(ref alliance); if (alliance.ClientProduct != null) { alliance.ClientProduct.Client.ClientProduct = null; alliance.ClientProduct.Client.ClientUser = null; alliance.ClientProduct.Client.Dependents = null; alliance.ClientProduct.Client.Cover = null; alliance.ClientProduct.Alianzas = null; } alliance.Cover = null; alliance.Beneficiaries = null; return(alliance); }
public void Handle(AllianceCreated e) { var dto = new AllianceDto { Id = e.Id, Name = e.Name, ExternalId = e.ExternalId, Timestamp = e.Timestamp, Sequence = e.Sequence }; _repository.Save(dto); }
private void UpdateBeneficiaries(AllianceDto payload) { payload.Beneficiaries.ForEach(x => { if (x.Id != null) { var beneficiary = _context.Beneficiaries.FirstOrDefault(b => b.Id == x.Id); beneficiary.Name = x.Name; beneficiary.Ssn = x.Ssn; beneficiary.BirthDate = x.BirthDate; beneficiary.Gender = x.Gender; beneficiary.Relationship = x.Relationship; beneficiary.Percent = x.Percent; beneficiary.UpdatedAt = DateTime.Now; _context.Beneficiaries.Update(beneficiary); } else { var beneficiary = new Beneficiaries(); beneficiary.AlianzaId = payload.Id; beneficiary.Name = x.Name; beneficiary.Ssn = x.Ssn; beneficiary.BirthDate = x.BirthDate; beneficiary.Gender = x.Gender; beneficiary.Relationship = x.Relationship; beneficiary.Percent = x.Percent; beneficiary.UpdatedAt = DateTime.Now; _context.Beneficiaries.Add(beneficiary); } }); var existing = _context.Beneficiaries.Where(b => b.AlianzaId == payload.Id).ToList(); existing.ForEach(ex => { var exist = payload.Beneficiaries.FirstOrDefault(b => b.Ssn == ex.Ssn); if (exist == null) { ex.DeletedAt = DateTime.Now; _context.Beneficiaries.Update(ex); } }); }
public async Task <IActionResult> Create([FromBody] AllianceDto payload) { try { var res = new Alianzas(); if (payload.Id == null) { res = await _service.Create(payload); } else { res = await _service.Update(payload); } return(Ok(res)); } catch (AppException ex) { // return error message if there was an exception return(DefaultError(ex)); } }
public AllianceDto GetAlliance(string name) { var query = _reportingRepository.QueryFor <IAllianceByNameQuery>(c => c.Name = name); var dto = query.Execute(); if (dto == null) { var sequence = _reportingRepository.GetNextSequenceFor <AllianceDto>(); var uid = SystemIdGenerator.Next(); _bus.Send(new CreateAlliance(uid, sequence, name, 0)); dto = new AllianceDto { ExternalId = 0, Id = uid, Name = name, Sequence = sequence, Timestamp = SystemDateTime.Now() }; } return(dto); }
private async Task <int> defineAfftype(AllianceDto payload, int afftype) { var lastAliance = await _context.ClientProduct .Join(_context.Alianzas .Include(x => x.ClientUser) .ThenInclude(x => x.Client) .Include(x => x.Cover) .ThenInclude(s => s.HealthPlan) , c => c.Id, a => a.ClientProductId, (c, a) => a).FirstOrDefaultAsync(s => s.ClientProduct.ClientId == payload.ClientId); var newCover = await _context.Covers.Include(x => x.HealthPlan).FirstOrDefaultAsync(x => x.Id == payload.CoverId); if (lastAliance?.Cover == null) { afftype = 1; } else if (lastAliance?.Cover?.Name.ToLower().Trim() == newCover.Name.ToLower().Trim()) { if (lastAliance?.Cover?.Id == payload.CoverId) { afftype = 3; } else { afftype = 2; } } else if (lastAliance?.Cover?.HealthPlan?.Id != newCover.HealthPlan.Id) { afftype = 6; } return(afftype); }
public async Task <Alianzas> Create(AllianceDto payload) { var afftype = 1; //setting aff type afftype = await defineAfftype(payload, afftype); //adding productclient to fill required field in aliance var clientProduct = new ClientProduct() { ClientId = payload.ClientId.GetValueOrDefault(), CreatedAt = DateTime.Now, UpdatedAt = DateTime.Now, ProductId = 1, Status = 0 }; await _context.ClientProduct.AddAsync(clientProduct); await _context.SaveChangesAsync(); // creating actual aliance var alianza = new Alianzas() { ClientProductId = clientProduct.Id, QualifyingEventId = payload.QualifyingEventId == null ? 1 : payload.QualifyingEventId.Value, CoverId = payload.CoverId.GetValueOrDefault(), AffType = (byte?)afftype, AffStatus = 1, ElegibleDate = DateTime.Now, StartDate = DateTime.Now, CreatedAt = DateTime.Now, UpdatedAt = DateTime.Now, EndDate = DateTime.Now.AddYears(1), Joint = payload.Joint, Prima = payload.Prima }; //TODO: check if the status of the aliance is complete or pending //for the moment is complete await _context.Alianzas.AddAsync(alianza); await _context.SaveChangesAsync(); alianza = await this.UpdateCost(alianza.Id); foreach (var item in payload.Beneficiaries) { var beneficiary = new Beneficiaries() { Name = item.Name, BirthDate = item.BirthDate, Gender = item.Gender, Percent = item.Percent, Relationship = item.Relationship, CreatedAt = DateTime.Now, UpdatedAt = DateTime.Now, AlianzaId = alianza.Id, Ssn = item.Ssn }; await _context.Beneficiaries.AddAsync(beneficiary); } foreach (var item in payload.AddonList) { var addonId = item; await _context.AlianzaAddOns.AddAsync(new AlianzaAddOns() { AlianzaId = alianza.Id, InsuranceAddOnId = addonId }); } await _context.SaveChangesAsync(); if (alianza.ClientProduct != null) { alianza.ClientProduct.Client.ClientProduct = null; alianza.ClientProduct.Client.ClientUser = null; alianza.ClientProduct.Client.Dependents = null; alianza.ClientProduct.Client.Cover = null; alianza.ClientProduct.Alianzas = null; } alianza.Cover = null; RemoveCircularDependency(ref alianza); alianza.Beneficiaries = null; return(alianza); }