public ActionResult Create(PrimaryGuardian primaryguardian)
        {
            if (ModelState.IsValid)
            {
                primaryguardian.DateCreated = DateTime.Now;
                foreach (Child a in primaryguardian.Children)
                {
                    a.DateCreated = primaryguardian.DateCreated;
                }

                //Check for null field in the SecondaryGuardian , if all fields are null, then do not add to database
                //delete the element in the list which contains delete marked to "true"

                int x = primaryguardian.SecondaryGuardians.Count();
                for (var i = x-1; i >= 0; i--)
                {
                    if (primaryguardian.SecondaryGuardians[i].Delete == true || (primaryguardian.SecondaryGuardians[i].RelationshipToChild == null && primaryguardian.SecondaryGuardians[i].FirstName == null
                        && primaryguardian.SecondaryGuardians[i].LastName == null))
                    {
                        primaryguardian.SecondaryGuardians.RemoveAt(i);
                    }

                }

                //Check for null field in the Children , if all fields are null, then do not add to database
                //delete the element in the list which contains delete marked to "true"

                int y = primaryguardian.Children.Count();
                for (int i = y -1; i >= 0; i--)
                {
                    if (primaryguardian.Children[i].Delete == true || (primaryguardian.Children[i].Birthdate == null && primaryguardian.Children[i].FirstName ==null
                        && primaryguardian.Children[i].LastName == null && primaryguardian.Children[i].RelationshipToGuardian ==null))
                    {
                        primaryguardian.Children.RemoveAt(i);
                    }

                }
                repoService.primaryGuardianRepo.Add(primaryguardian);
                return RedirectToAction("Index");
            }
            ViewBag.CenterId2 = account.GetCurrentUserCenterId();
            ViewBag.CenterId = new SelectList(repoService.centerRepo.FindAll(), "Id", "Name", primaryguardian.CenterId);
            return View(primaryguardian);
        }
Exemplo n.º 2
0
        public static PrimaryGuardian RandomPrimaryGuardian(int Id, int CenterId)
        {
            PrimaryGuardian pg = new PrimaryGuardian
            {
                Id = Id,
                CenterId = CenterId,
                FirstName = Probability(0.8) ? RandomString(3) : null,
                LastName = Probability(0.8) ? RandomString(3) : null,
                Allergies = Probability(0.8) ? RandomString(3) : null,
                Country = Probability(0.8) ? RandomString(3) : null,
                Email = Probability(0.8) ? RandomString(3) : null,
                Language = Probability(0.8) ? RandomString(3) : null,
                PostalCodePrefix = Probability(0.8) ? RandomString(3) : null,
                Phone = Probability(0.8) ? RandomString(3) : null,
                DateCreated = RandomDate()
            };

            return pg;
        }
 //
 // GET: /PrimaryGuardians/Create
 public ActionResult Create()
 {
     ViewBag.CenterId2 = account.GetCurrentUserCenterId();
     var model = new PrimaryGuardian();
     return View(model);
 }
        public ActionResult Edit(PrimaryGuardian primaryguardian)
        {
            ViewBag.CenterId2 = account.GetCurrentUserCenterId();

            if (ModelState.IsValid)
            {

                foreach (Child a in primaryguardian.Children)
                {
                    a.DateCreated = (a.DateCreated == null) ? a.DateCreated : System.DateTime.Now;
                }

                //Check for null field in the SecondaryGuardian , if all fields are null, then do not add to database
                //delete the element in the list which contains delete marked to "true"

                int x = primaryguardian.SecondaryGuardians.Count();
                for (var i = x - 1; i >= 0; i--)
                {
                    string[] includeFields = new string[] { "FirstName", "LastName", "RelationshipToChild", "Phone" };
                    IEnumerable<PropertyInfo> properties = typeof(SecondaryGuardian).GetProperties().Where(prop => includeFields.Contains(prop.Name));
                    bool validSG = false;

                    // if any input fields are not null, then the SecondaryGuardian is valid
                    validSG = properties.Any(
                        p => p.GetValue(primaryguardian.SecondaryGuardians[i], null) != null);

                    if (primaryguardian.SecondaryGuardians[i].Delete == true || !validSG)
                    {
                        if (primaryguardian.SecondaryGuardians[i].Id != 0)
                        {
                            SecondaryGuardian sg = repoService.secondaryGuardianRepo.FindById(primaryguardian.SecondaryGuardians[i].Id);
                            repoService.secondaryGuardianRepo.Delete(sg);
                        }

                        primaryguardian.SecondaryGuardians.RemoveAt(i);
                    }

                    else if ((primaryguardian.SecondaryGuardians[i].Delete == true && (primaryguardian.SecondaryGuardians[i].Phone == null || primaryguardian.SecondaryGuardians[i].FirstName == null
                     || primaryguardian.SecondaryGuardians[i].LastName == null || primaryguardian.SecondaryGuardians[i].RelationshipToChild == null)) || (primaryguardian.SecondaryGuardians[i].Delete == true))
                    {
                        SecondaryGuardian sec = repoService.secondaryGuardianRepo.FindById(primaryguardian.SecondaryGuardians[i].Id);

                        if (sec != null)
                        {
                            repoService.secondaryGuardianRepo.Delete(sec);
                            primaryguardian.SecondaryGuardians.RemoveAt(i);
                        }
                        else
                        {
                            primaryguardian.SecondaryGuardians.RemoveAt(i);
                        }

                    }

                    else
                    {
                        primaryguardian.SecondaryGuardians[i].PrimaryGuardianId = primaryguardian.Id;

                        // this is a newly created secondary guardian
                        if (primaryguardian.SecondaryGuardians[i].Id == 0)
                        {
                            repoService.secondaryGuardianRepo.Add(primaryguardian.SecondaryGuardians[i]);
                            primaryguardian.SecondaryGuardians.RemoveAt(i);
                        }
                        // existing secondary guardian was modified

                        else
                        {
                            repoService.secondaryGuardianRepo.Update(primaryguardian.SecondaryGuardians[i]);
                        }
                    }
                }

                //Check for null field in the Children , if all fields are null, then do not add to database
                //delete the element in the list which contains delete marked to "true"

                int y = primaryguardian.Children.Count();

                for (var i = y - 1; i >= 0; i--)
                {
                    string[] includeFields = new string[] { "FirstName", "LastName", "Birthdate", "RelationshipToGuardian" };
                    IEnumerable<PropertyInfo> properties = typeof(Child).GetProperties().Where(prop => includeFields.Contains(prop.Name));
                    bool validChild = false;

                    // if any input fields are not null, then the SecondaryGuardian is valid
                    validChild = properties.Any(
                        p => p.GetValue(primaryguardian.Children[i], null) != null &&
                                        !includeFields.Contains(p.Name));

                    // child needs to be deleted

                    if ((primaryguardian.Children[i].Birthdate == null && primaryguardian.Children[i].FirstName == null
                        && primaryguardian.Children[i].LastName == null && primaryguardian.Children[i].RelationshipToGuardian == null)
                        || (primaryguardian.Children[i].Delete == true && (primaryguardian.Children[i].Birthdate == null && primaryguardian.Children[i].FirstName == null
                        && primaryguardian.Children[i].LastName == null && primaryguardian.Children[i].RelationshipToGuardian == null)))
                    {

                        if (primaryguardian.Children[i].Id != 0)
                        {
                            Child child = repoService.childRepo.FindById(primaryguardian.Children[i].Id);
                            repoService.childRepo.Delete(child);
                        }

                        primaryguardian.Children.RemoveAt(i);
                    }

                    else if ((primaryguardian.Children[i].Delete == true && (primaryguardian.Children[i].Birthdate == null || primaryguardian.Children[i].FirstName == null
                     || primaryguardian.Children[i].LastName == null || primaryguardian.Children[i].RelationshipToGuardian == null)) ||(primaryguardian.Children[i].Delete == true))
                    {
                        Child child = repoService.childRepo.FindById(primaryguardian.Children[i].Id);

                        if (child != null)
                        {
                            repoService.childRepo.Delete(child);
                            primaryguardian.Children.RemoveAt(i);
                        }
                        else
                        {
                            primaryguardian.Children.RemoveAt(i);
                        }

                    }

                    else
                    {
                        primaryguardian.Children[i].PrimaryGuardianId = primaryguardian.Id;

                        // this is a newly created child
                        if (primaryguardian.Children[i].Id == 0)
                        {
                            repoService.childRepo.Add(primaryguardian.Children[i]);
                            primaryguardian.Children.RemoveAt(i);
                        }
                        // existing child was modified
                        else
                        {
                            repoService.childRepo.Update(primaryguardian.Children[i]);
                        }
                    }
                }

            repoService.primaryGuardianRepo.Update(primaryguardian);

            return RedirectToAction("Index");
            }

            ViewBag.CenterId = new SelectList(repoService.centerRepo.FindAll(), "Id", "Name", primaryguardian.CenterId);
            return View(primaryguardian);
        }