public ViewResult Checkout(Cart cart, UserViewModel user)
        {
            UserViewModel    addOrChangeUser = null;
            OrderModifyModel newOrder        = null;

            if (HttpContext.User.Identity.IsAuthenticated)
            {
                addOrChangeUser = _userViewService.ViewAll().FirstOrDefault(c => c.UserEmail == HttpContext.User.Identity.Name);
                newOrder        = CreateOrderForUser(addOrChangeUser.Id, cart);
            }
            else
            {
                if (ModelState.IsValid)
                {
                    // check if user exist
                    addOrChangeUser = _userViewService.ViewAll().FirstOrDefault(c => c.UserEmail == user.UserEmail);
                    if (addOrChangeUser != null)
                    {
                        //if user found update adress
                        _userModifyService.Update
                            (addOrChangeUser.Id,
                            new UserModifyModel(user.UserEmail, user.UserPassword, user.UserName, user.UserCountry, user.UserAddress, user.UserRoleId)
                            );
                    }
                    else
                    {
                        // if user not exist add new user
                        user.UserRoleId = 3;
                        _userModifyService.Add(new UserModifyModel(user.UserEmail, user.UserPassword, user.UserName, user.UserCountry, user.UserAddress, user.UserRoleId));
                        addOrChangeUser = _userViewService.ViewAll().FirstOrDefault(c => c.UserEmail == user.UserEmail);
                    }
                    newOrder = CreateOrderForUser(addOrChangeUser.Id, cart);
                }
            }
            if (HttpContext.User.Identity.IsAuthenticated || ModelState.IsValid)
            {
                _orderModifyService.Add(newOrder);
                //addOrChangeUser
                newOrder.User = new UserModifyModel(addOrChangeUser.UserEmail, addOrChangeUser.UserPassword, addOrChangeUser.UserName, addOrChangeUser.UserCountry, addOrChangeUser.UserAddress, addOrChangeUser.UserRoleId) ?? new UserModifyModel();
                cart.Clear();
            }


            return(View(newOrder));
        }
        public ActionResult Edit(OrderViewModel order)
        {
            if (ModelState.IsValid)
            {
                OrderViewModel foundOrder = _orderViewService.ViewSingle(order.Id);
                if (foundOrder != null)
                {
                    _orderModifyService.Update(order.Id, new OrderModifyModel(order.OrderDate, order.OrderNumber, order.UserId, order.OrderTypeId, order.OrderAmount));
                    TempData["message"] = string.Format("Order \"{0}\"uploaded", order.OrderNumber);
                }
                else
                {
                    _orderModifyService.Add(new OrderModifyModel(order.OrderDate, order.OrderNumber, order.UserId, order.OrderTypeId, order.OrderAmount));
                    TempData["message"] = string.Format("Order\"{0}\"added", order.OrderNumber);
                }

                return(RedirectToAction("Index"));
            }
            else
            {
                return(View(order));
            }
        }