public async Task DeleteFamilyAsync(int familyId) { using (var imisContext = new ImisDB()) { TblFamilies familyToDelete = await imisContext.TblFamilies .Where(f => f.ValidityTo == null && f.FamilyId == familyId) .Include(f => f.TblInsuree) .Select(f => f) .FirstOrDefaultAsync(); if (familyToDelete == null) { throw new ValidationException(FamilyErrors.FAMILY_NOT_FOUND_ERROR); } familyToDelete.ValidityTo = DateTime.Now; foreach (TblInsuree tblInsuree in familyToDelete.TblInsuree) { tblInsuree.ValidityTo = DateTime.Now; } await imisContext.SaveChangesAsync(); } }
public TblFamilies ToTblFamilies() { TblFamilies tblFamilies = new TblFamilies() { FamilyId = this.FamilyId, LocationId = this.LocationId, Poverty = this.Poverty, FamilyType = this.FamilyType, FamilyAddress = this.FamilyAddress, Ethnicity = this.Ethnicity, ConfirmationNo = this.ConfirmationNo, ConfirmationType = this.ConfirmationType, IsOffline = this.IsOffline, TblInsuree = this.Insurees //.Where(i => i.ValidTo == null) .Select(i => i.ToTblInsuree()) .ToList(), }; tblFamilies.InsureeId = tblFamilies.TblInsuree .Where(i => i.ValidityTo == null && i.IsHead) .Select(i => i.InsureeId) .FirstOrDefault(); return(tblFamilies); }
public static FamilyModel FromTblFamilies(TblFamilies tblFamilies) { FamilyModel familyModel = new FamilyModel() { FamilyId = tblFamilies.FamilyId, FamilyUUID = tblFamilies.FamilyUUID, InsureeId = tblFamilies.InsureeId, InsureeUUID = tblFamilies.Insuree.InsureeUUID, LocationId = TypeCast.GetValue <int>(tblFamilies.LocationId), Poverty = TypeCast.GetValue <bool>(tblFamilies.Poverty), FamilyType = tblFamilies.FamilyType, FamilyAddress = tblFamilies.FamilyAddress, Ethnicity = tblFamilies.Ethnicity, ConfirmationNo = tblFamilies.ConfirmationNo, ConfirmationType = tblFamilies.ConfirmationType, IsOffline = TypeCast.GetValue <bool>(tblFamilies.IsOffline), Insurees = tblFamilies.TblInsuree .Where(i => i.ValidityTo == null) .Select(i => InsureeModel.FromTblInsuree(i)) .ToList(), FamilySMS = tblFamilies.TblFamilySMS.Where(sms => sms.ValidityTo == null).Select(s => FamilySMS.FromTblFamilySMS(s)).LastOrDefault() }; return(familyModel); }
/// <summary> /// /// </summary> /// <param name="familyId"></param> /// <param name="family"></param> /// <returns></returns> /// TODO: make a copy of the record before updating it /// TODO: check if there are any insuree in the family to be updated public async Task <FamilyModel> UpdateFamilyAsync(int familyId, FamilyModel family) { using (var imisContext = new ImisDB()) { TblFamilies familyToUpdate = await imisContext.TblFamilies .Where(f => f.ValidityTo == null && f.FamilyId == familyId) //.Include(f => f.TblInsuree) .Select(f => f) .FirstOrDefaultAsync(); if (familyToUpdate == null) { throw new ValidationException(FamilyErrors.FAMILY_NOT_FOUND_ERROR); } familyToUpdate.FamilyType = family.FamilyType; familyToUpdate.LocationId = family.LocationId; familyToUpdate.Poverty = family.Poverty; familyToUpdate.FamilyAddress = family.FamilyAddress; familyToUpdate.Ethnicity = family.Ethnicity; familyToUpdate.ConfirmationNo = family.ConfirmationNo; familyToUpdate.ConfirmationType = family.ConfirmationType; familyToUpdate.IsOffline = family.IsOffline; //await imisContext.SaveChangesAsync(); //foreach (TblInsuree tblInsuree in tblFamily.TblInsuree) //{ // if (tblInsuree.IsHead) // { // tblFamily.InsureeId = tblInsuree.InsureeId; // break; // } //} await imisContext.SaveChangesAsync(); return(FamilyModel.FromTblFamilies(familyToUpdate)); } }