public ActionResult EditOrder(int?orderId)
        {
            var rep       = new OrdersRepository();
            var viewOrder = new Models.CreatingOrderViewModel
            {
                IsNew        = true,
                OrderDate    = DateTime.Now,
                ShippedDate  = DateTime.Now,
                RequiredDate = DateTime.Now
            };
            var customers = rep.GetAllCustomers();
            var employees = rep.GetAllEmployees();

            if (!orderId.HasValue)
            {
                ViewBag.Customers = customers;
                ViewBag.Employees = employees;
                return(PartialView("_EditOrder", viewOrder));
            }

            var order = rep.GetAllOrders(false)
                        .Where(x => x.OrderID == orderId.Value)
                        .FirstOrDefault();

            if (order == null)
            {
                return(RedirectToAction("ErrorMessage", "Home", new { message = Resources.EmptyOrderId }));
            }

            ViewBag.Customers = customers
                                .Where(x => x.CustomerID == order.CustomerID)
                                .Concat(customers.Where(x => x.CustomerID != order.CustomerID));
            ViewBag.Employees = employees
                                .Where(x => x.EmployeeID == order.EmployeeID)
                                .Concat(employees.Where(x => x.EmployeeID != order.EmployeeID));
            Mapper.Initialize(cfg => cfg.CreateMap <DataAccessLayer.Models.Order,
                                                    Models.CreatingOrderViewModel>());
            viewOrder = Mapper.Map <DataAccessLayer.Models.Order,
                                    Models.CreatingOrderViewModel>(order);
            viewOrder.IsNew = false;

            return(PartialView("_EditOrder", viewOrder));
        }
        public ActionResult EditOrder(Models.CreatingOrderViewModel order)
        {
            var rep = new OrdersRepository();

            Mapper.Initialize(cfg => cfg.CreateMap <Models.CreatingOrderViewModel,
                                                    DataAccessLayer.Models.CreatingOrder>());
            var creatingOrder = Mapper.Map <Models.CreatingOrderViewModel,
                                            DataAccessLayer.Models.CreatingOrder>(order);

            if (!ModelState.IsValid)
            {
                return(RedirectToAction("ErrorMessage", "Home", new { message = Resources.OrderEditError }));
            }

            var minDate = DateTime.Parse("01.01.1990");
            var maxDate = DateTime.Parse("01.01.9999");

            if (order.OrderDate < minDate || order.OrderDate > maxDate)
            {
                return(RedirectToAction("ErrorMessage", "Home", new { message = Resources.OrderEditError }));
            }

            if (order.ShippedDate < minDate || order.ShippedDate > maxDate)
            {
                return(RedirectToAction("ErrorMessage", "Home", new { message = Resources.OrderEditError }));
            }

            if (order.RequiredDate < minDate || order.RequiredDate > maxDate)
            {
                return(RedirectToAction("ErrorMessage", "Home", new { message = Resources.OrderEditError }));
            }

            if (order.IsNew)
            {
                rep.CreateOrder(creatingOrder);
            }
            else
            {
                rep.UpdateOrder(creatingOrder);
            }

            return(RedirectToAction("Index"));
        }