public ActionResult Edit(int id, CreateOrEditCustomerViewModel updatedCustomer)
 {
     if (ModelState.IsValid)
     {
         var customer = this.session.Load<Customer>(id);
         customer.Name = updatedCustomer.Name;
         customer.VATNumber = updatedCustomer.VATNumber;
         this.session.Update(customer);
         return RedirectToAction("Index");
     }
     return View(updatedCustomer);
 }
        public void CreatingACustomerTwoTimes_IsNotAllowed()
        {
            this.session.Save(new Customer { Name = "Pippo", VATNumber = "12345678901" });
            var controller = new CustomersController(this.session);
            var viewModel = new CreateOrEditCustomerViewModel { Name = "Pippo", VATNumber = "12345678901" };

            var result = controller.Create(viewModel);

            var viewResult = result as ViewResult;
            viewResult.Should().Not.Be.Null();
            var error = viewResult.ViewData.ModelState["VATNumber"].Errors[0];
            Assert.AreEqual("Un cliente con stessa partita Iva è già presente.", error.ErrorMessage);
        }
        public void CreatingANewCustomer_AddsItToTheDb()
        {
            var controller = new CustomersController(this.session);

            var viewModel = new CreateOrEditCustomerViewModel { Name = "Pippo", VATNumber="12345678901" };
            
            var result = controller.Create(viewModel);

            var redirectResult = result as RedirectToRouteResult;
            var action = redirectResult.RouteValues["action"];

            var reportOnDb = this.session.Get<Customer>(1);
            reportOnDb.Should().Not.Be.Null();
        }
        public ActionResult Create(CreateOrEditCustomerViewModel newCustomer)
        {
            var existing = this.session.QueryOver<Customer>()
                .Where(x => x.VATNumber == newCustomer.VATNumber)
                .SingleOrDefault();
            if (existing != null)
                ModelState.AddModelError("VATNumber", "Un cliente con stessa partita Iva è già presente.");

            if (ModelState.IsValid)
            {
                var customer = new Customer { Name = newCustomer.Name, VATNumber = newCustomer.VATNumber };
                this.session.Save(customer);
                return RedirectToAction("Index");
            }
            return View(newCustomer);
        }
        public void UpdatingACustomer_ChangesItsDataOnDb()
        {
            this.session.Save(new Customer { Name = "Pippo", VATNumber = "12345678901" });
            var controller = new CustomersController(this.session);
            var newName = "Mario";
            var newVat = "12345678902";
            var updatedCustomer = new CreateOrEditCustomerViewModel {Name = newName, VATNumber = newVat};

            var result = controller.Edit(1,updatedCustomer);

            var customerOnDb = this.session.Get<Customer>(1);
            customerOnDb.Should().Not.Be.Null();
            customerOnDb.Name.Should().Be.EqualTo(newName);
            customerOnDb.VATNumber.Should().Be.EqualTo(newVat);
        }