public void CanEditPerson()
        {
            Mock<IRepository<Person>> mock_person = new Mock<IRepository<Person>>();
            Mock<IRepository<Section>> mock_section = new Mock<IRepository<Section>>();
            mock_section.Setup(m => m.Repository).Returns(CreateSectionTab().AsQueryable());
            mock_person.Setup(m => m.Repository).Returns(CreatePersonTab().AsQueryable());

            PersonController controller = new PersonController(mock_person.Object, mock_section.Object);
            PersonSectionAddEditModel personSection = new PersonSectionAddEditModel();

            personSection.id = 5;
            personSection.name = "Zbigniew";
            personSection.surname = "Strzelec";
            personSection.area_code = 44;
            personSection.email = "*****@*****.**";
            personSection.section_name = "4";
            personSection.phone_number = 12345;
            personSection.phone_number2 = 666666;

            var redirectToRouteResult = controller.Edit(personSection) as RedirectToRouteResult;

            Person temp = mock_person.Object.Repository.FirstOrDefault(x => x.id == 5);
            Assert.AreEqual(temp.name, "ZBIGNIEW");
            Assert.AreEqual(temp.surname, "STRZELEC");
            Assert.AreEqual(temp.area_code, 44);
            Assert.AreEqual(temp.email, "*****@*****.**");
            Assert.AreEqual(temp.id_section, 4);
            Assert.AreEqual(temp.phone_number, 12345);
            Assert.AreEqual(temp.phone_number2, 666666);

            mock_person.Verify(m => m.EditObject(temp), Times.Once());

            Assert.IsNotNull(redirectToRouteResult);
            Assert.AreEqual("Index", redirectToRouteResult.RouteValues["Action"]);
        }
 public ActionResult Add(PersonSectionAddEditModel model)
 {
     if (ModelState.IsValid)
     {
         try
         {
             Person person = CreatePersonFromPersonSectionAddEditModel(model);
             personRepository.AddObject(person);
             return RedirectToAction("Index");
         }
         catch (Exception ex)
         {
             throw new Exception("Wystąpił błąd podczas dodawania pracownika. Proszę o kontakt z administratorem. Error message: " + ex.Message);
         }
     }
     else
     {
         model.SectionList = section_ctrl.SectionsShortNamesList();
         if (Request.IsAjaxRequest())
         {
             return PartialView("Person/_PersonAdd", model);
         }
         return View(model);
     }
 }
        public void CanAddPerson()
        {
            Mock<IRepository<Person>> mock_person = new Mock<IRepository<Person>>();
            Mock<IRepository<Section>> mock_section = new Mock<IRepository<Section>>();
            mock_section.Setup(m => m.Repository).Returns(CreateSectionTab().AsQueryable());
            mock_person.Setup(m => m.Repository).Returns(CreatePersonTab().AsQueryable());

            PersonController controller = new PersonController(mock_person.Object, mock_section.Object);
            PersonSectionAddEditModel personSection = new PersonSectionAddEditModel();

            personSection.id = 5;
            personSection.name = "Zbigniew";
            personSection.surname = "Strzelec";
            personSection.area_code = 44;
            personSection.email = "*****@*****.**";
            personSection.section_name = "4";
            personSection.phone_number = 12345;
            personSection.phone_number2 = 666666;

            var redirectToRouteResult = controller.Add(personSection) as RedirectToRouteResult;
            mock_person.Verify(m => m.AddObject(It.IsAny<Person>()), Times.Once());

            Assert.IsNotNull(redirectToRouteResult);
            Assert.AreEqual("Index", redirectToRouteResult.RouteValues["Action"]);
        }
 public ActionResult Add()
 {
     PersonSectionAddEditModel model = new PersonSectionAddEditModel();
     model.SectionList = section_ctrl.SectionsShortNamesList();
     if (Request.IsAjaxRequest())
     {
         return PartialView("Person/_PersonAdd", model);
     }
     return View(model);
 }
 private void UpdatePerson(ref Person person, PersonSectionAddEditModel personSection)
 {
     if (personSection.id != 0) person.id = personSection.id; else person.id = 0;
     if (personSection.area_code != null) person.area_code = personSection.area_code; else person.area_code = null;
     if (personSection.email != null) person.email = personSection.email; else person.email = null;
     if (personSection.name != null) person.name = personSection.name.ToUpper(); else person.name = null;
     if (personSection.phone_number != null) person.phone_number = personSection.phone_number; else person.phone_number = null;
     if (personSection.phone_number2 != null) person.phone_number2 = personSection.phone_number2; else person.phone_number2 = null;
     if (personSection.surname != null) person.surname = personSection.surname.ToUpper(); else person.surname = null;
        // person.id_section = GetAllShortNameSections().Where(x => x.Value == personSection.section_name).Select(x => x.Key).First();
     int id = 0;
     int.TryParse(personSection.section_name, out id);
     person.id_section = id;
 }
 private PersonSectionAddEditModel CreatePersonSetionAddEditFromPerson(Person person)
 {
     PersonSectionAddEditModel temp = new PersonSectionAddEditModel();
     temp.area_code = person.area_code;
     temp.email = person.email;
     temp.id = person.id;
     temp.name = person.name;
     temp.phone_number = person.phone_number;
     temp.phone_number2 = person.phone_number2;
     temp.surname = person.surname;
     // delete because @Html.DropDownListFor(x => x.section_name, @Model.SectionList) doesn't work properly
     //temp.section_name = section_ctrl.GetAllShortNameSections().Where(x => x.Key == person.id_section).Select(x => x.Value).First();
     temp.SectionList = section_ctrl.SectionsShortNamesList();
     var p = temp.SectionList.FirstOrDefault(x => x.Value == person.id_section.ToString());
     p.Selected = true;
     return temp;
 }
        private Person CreatePersonFromPersonSectionAddEditModel(PersonSectionAddEditModel model)
        {
            Person person = new Person();
            person.area_code = model.area_code;
            person.email = model.email;
            person.id = model.id;
            int id_section;
            int.TryParse(model.section_name, out id_section);
            person.id_section = id_section;
            person.name = model.name;
            person.phone_number = model.phone_number;
            person.phone_number2 = model.phone_number2;
            person.surname = model.surname;

            return person;
        }
        public ActionResult Edit(PersonSectionAddEditModel model)
        {
            ModelState.Remove("Id");
            if (ModelState.IsValid)
            {
                try
                {
                    Person person = personRepository.Repository.FirstOrDefault(x => x.id == model.id);
                    UpdatePerson(ref person, model);
                    personRepository.EditObject(person);
                    return RedirectToAction("Index");
                }
                catch (Exception)
                {
                    throw new Exception("Nie udało się edytować pracowanika. Proszę skontaktować się z administratorem");
                }
            }
            else
            {
                model.SectionList = section_ctrl.SectionsShortNamesList();

                if (Request.IsAjaxRequest())
                {
                    return PartialView("Person/_PersonEdit", model);
                }
                return View(model);
            }
        }