public ActionResult Create([Bind(Include = "Name, Sex, DateBorn, Age, FormId")] FamilyVM familyVM)
        {
            if (ModelState.IsValid)
            {
                FamilyDTO familyDTO = Mapper.Map <FamilyDTO>(familyVM);
                //int questionId = QuestionService.AddAndGetId(questionDTO);
                FamilyService.Add(familyDTO);
                return(RedirectToAction("Index"));
            }
            ViewBag.FormId = GetFormIdSelectList(familyVM.FormId);

            return(View(familyVM));
        }
        public ActionResult Edit([Bind(Include = "Id, Name, Sex, DateBorn, Age, FormId")] FamilyVM familyVM)
        {
            if (ModelState.IsValid)
            {
                FamilyDTO familyDTO = Mapper.Map <FamilyDTO>(familyVM);
                FamilyService.Update(familyDTO);
                return(RedirectToAction("Index"));
            }
            else
            {
                ModelState.AddModelError(null, "Что-то пошло не так. Не удалось сохранить изменения.");
            }

            ViewBag.FormId = GetFormIdSelectList(familyVM.FormId);

            return(View(familyVM));
        }
        public ActionResult Details(int?id)
        {
            try
            {
                FamilyDTO familyDTO = FamilyService.Get(id);
                FamilyVM  familyVM  = Mapper.Map <FamilyVM>(familyDTO);

                return(View(familyVM));
            }
            catch (ArgumentException)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            catch (NotFoundException)
            {
                return(HttpNotFound());
            }
        }
        public ActionResult Edit(int?id)
        {
            try
            {
                FamilyDTO familyDTO = FamilyService.Get(id);
                FamilyVM  familyVM  = Mapper.Map <FamilyVM>(familyDTO);

                ViewBag.FormId = GetFormIdSelectList(familyVM.FormId);

                return(View(familyVM));
            }
            catch (ArgumentNullException)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            catch (NotFoundException)
            {
                return(HttpNotFound());
            }
        }
        public NewFamilyResponse CreateEnrolResponse(EnrolFamilyModel model)
        {
            var response = new NewFamilyResponse();

            using (var imisContext = new ImisDB())
            {
                foreach (var fam in model.Family)
                {
                    var familyId = imisContext.TblInsuree.Where(i => i.Chfid == fam.HOFCHFID && i.IsHead == true && i.ValidityTo == null)
                                   .Select(i => i.FamilyId)
                                   .FirstOrDefault();

                    var family = imisContext.TblFamilies
                                 .Where(f => f.FamilyId == familyId && f.ValidityTo == null)
                                 .Include(f => f.TblInsuree)
                                 .Include(p => p.TblPolicy)
                                 .ThenInclude(pr => pr.TblPremium)
                                 .FirstOrDefault();

                    // if the family is not found means it failed to insert
                    if (family == null)
                    {
                        continue;
                    }

                    family.TblInsuree = family.TblInsuree.Where(i => i.ValidityTo == null).ToList();
                    family.TblPolicy  = family.TblPolicy.Where(p => p.ValidityTo == null).ToList();


                    var familyVM = new FamilyVM
                    {
                        FamilyId   = fam.FamilyId,
                        FamilyDBId = family.FamilyId,
                        FamilyUUID = family.FamilyUUID
                    };

                    foreach (var i in family.TblInsuree)
                    {
                        familyVM.Insurees.Add(new InsureeVM
                        {
                            InsureeId   = fam.Insurees.Where(x => x.CHFID == i.Chfid).Select(x => x.InsureeId).FirstOrDefault(),
                            InsureeDBId = i.InsureeId,
                            InsureeUUID = i.InsureeUUID
                        });
                    }

                    foreach (var p in family.TblPolicy)
                    {
                        var premiums = new List <PremiumVM>();
                        p.TblPremium = p.TblPremium.Where(prem => prem.ValidityTo == null).ToList();
                        foreach (var pr in p.TblPremium)
                        {
                            premiums.Add(new PremiumVM
                            {
                                PremiumId   = fam.Policies.Count > 0 ? fam.Policies.Where(x => x.ProdId == p.ProdId).FirstOrDefault().Premium.Where(y => y.Receipt == pr.Receipt).Select(z => z.PremiumId).FirstOrDefault() : 0,
                                PremiumDBId = pr.PremiumId,
                                PremiumUUID = pr.PremiumUUID
                            });
                        }
                        familyVM.Policies.Add(new PolicyVM
                        {
                            PolicyId   = fam.Policies.Where(x => x.ProdId == p.ProdId).Select(y => y.PolicyId).FirstOrDefault(),
                            PolicyDBId = p.PolicyId,
                            PolicyUUID = p.PolicyUUID,
                            Premium    = premiums
                        });
                    }

                    response.Family.Add(familyVM);
                }
            }
            return(response);
        }