Example #1
0
        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();
            }
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        /// <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));
            }
        }