public ActionResult Create(Litter litter)
        {
            if (ModelState.IsValid)
            {
                db.Litter.Add(litter);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(litter);
        }
Beispiel #2
0
        public static List<Dog> CreateTestDogs()
        {
            List<Dog> dogs = new List<Dog>();

            Person person = new Person() { Id = 1, Name = "Jón Jónsson" };
            Dog rakki = new Dog() { Id = 1, Name = "Rakki_Founder", Reg = "IS1", Sex = "M", LitterId = 1 };
            Dog tik = new Dog() { Id = 2, Name = "Tík_Founder", Reg = "IS2", Sex = "M", LitterId = 1 };
            dogs.Add(rakki);
            dogs.Add(tik);

            Litter litter1 = new Litter() { Id = 1, FatherId = 1, MotherId = 2, PersonId = 1 };
            Litter litter2 = new Litter() { Id = 2, FatherId = 1, MotherId = 2, PersonId = 1 };
            Dog hvolpur1 = new Dog() { Id = 3, Name = "Hvolpur1", Reg = "IS3", Sex = "M", LitterId = 2 };
            Dog hvolpur2 = new Dog() { Id = 4, Name = "Hvolpur2", Reg = "IS4", Sex = "F", LitterId = 2 };
            dogs.Add(hvolpur1);
            dogs.Add(hvolpur2);

            return dogs;
        }
        public ActionResult Edit(Litter litter)
        {
            if (ModelState.IsValid)
            {
                litter.Person = null; // No need to save any data to person table.  personId will be saved to litter.
                int uId = (int)WebMatrix.WebData.WebSecurity.GetUserId(User.Identity.Name);
                litter.UsersId = uId;                               // Saving User that changed the litter.

                db.Entry(litter).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(litter);
        }
        public ActionResult Index(DogViewModel viewModel)
        {
            if (viewModel.Litter.FatherId != 0)  // The name of the father is displayed in form. the following code is to clear false positive validation errors
            {
                Dog father = db.Dog.Find(viewModel.Litter.FatherId);
                viewModel.Litter.Father.Name = father.Name;
                viewModel.Litter.Father.Sex = "M";
                if (ModelState.ContainsKey("Litter.Father.Sex"))
                    ModelState["Litter.Father.Sex"].Errors.Clear();
                if (ModelState.ContainsKey("Litter.Father.Name"))
                    ModelState["Litter.Father.Name"].Errors.Clear();
            }

            if (viewModel.Litter.MotherId != 0)
            {
                Dog mother = db.Dog.Find(viewModel.Litter.MotherId);
                viewModel.Litter.Mother.Name = mother.Name;
                viewModel.Litter.Mother.Sex = "F";
                if (ModelState.ContainsKey("Litter.Mother.Sex"))
                    ModelState["Litter.Mother.Sex"].Errors.Clear();
                if (ModelState.ContainsKey("Litter.Mother.Name"))
                    ModelState["Litter.Mother.Name"].Errors.Clear();
            }

            if (viewModel.Litter.DateOfBirth == null)
            {
                ModelState.AddModelError("DateOfBirth", "Date is required.");
            }
            if (viewModel.Litter.PersonId == null)
            {
                ModelState.AddModelError("PersonId", "Breeder is required.");
            }

            ViewBag.ColorId = new SelectList(db.Color, "Id", "ColorText");
            ViewBag.successMessage = "";

            List<string> genderList = new List<string>() { "Male", "Female" };
            ViewBag.Gender = new SelectList(genderList);

            if (!ModelState.IsValid)
            {
                var errors = ModelState.SelectMany(x => x.Value.Errors.Select(z => z.Exception));
                return View(viewModel);
            }

            if (ModelState.IsValid)
            {
                try
                {

                    int uId = (int)WebMatrix.WebData.WebSecurity.GetUserId(User.Identity.Name);
                    Litter l = new Litter()
                    {
                        DateOfBirth = viewModel.Litter.DateOfBirth,
                        FatherId = viewModel.Litter.FatherId,
                        MotherId = viewModel.Litter.MotherId,
                        PersonId = viewModel.Litter.PersonId,    // Breeder person.
                        UsersId =  uId                          // User logged in
                    };

                    db.Litter.Add(l);
                    db.SaveChanges();                           // Litter saved

                    foreach (Dog dp in viewModel.Dogs)
                    {

                        Users u = db.Users.Find(uId);  // Find Admin that is logged in.

                        Dog d = new Dog()
                        {
                            Name = dp.Name,
                            Reg = dp.Reg,
                            Sex = dp.Sex,
                            ColorId = dp.ColorId,
                            LitterId = l.Id,             // Dog linked with privious litter.
                            BornInCountryId = u.CountryId // Dog gets same Country as the Admin.
                        };
                        if (d.Sex.Equals("Male")) d.Sex = "M";
                        if (d.Sex.Equals("Female")) d.Sex = "F";

                        db.Dog.Add(d);
                        db.SaveChanges();   // Dog saved
                    }    //end foreach DogAndPerson

                    TempData["Success"] = "Data was successfully saved.";
                } //end try
                catch (Exception)
                {
                    ViewData["Error"] = "Unable to save";
                    TempData["Error"] = "!Unable to save data.";
                    //return RedirectToAction("Error");
                }

                return RedirectToAction("Index","Dog");  // Success
            } //end if Model state is valid

            return RedirectToAction("Index");
        }