예제 #1
0
        public ActionResult Update()
        {
            int    merchandiseId, orderAmount;
            string orderComment;

            // прочитать из Cookie идентификатор клиента
            var customerId = CookieHandler.GetCookieValue <String>(this.Request.Cookies, this.Response, CookieNames.CustomerId, Guid.NewGuid().ToString(), DateTime.Now.AddYears(1));

            #region Прочитать параметры POST-запроса

            if (this.Request.Params.Count == 0)
            {
                ViewBag.ResponseMessage = "error: В запросе не переданы обязательные параметры заказа.";
                return(View());
            }

            merchandiseId = RequestParametersHandler.GetRequestParameter <int>(this.Request.Params, WebRequestParamNames.MerchandiseId);
            orderAmount   = RequestParametersHandler.GetRequestParameter <int>(this.Request.Params, WebRequestParamNames.OrderAmount);
            orderComment  = RequestParametersHandler.GetRequestParameter <string>(this.Request.Params, WebRequestParamNames.OrderComment) ?? String.Empty;

            #endregion

            // Обновить заказ в БД
            ViewBag.ResponseMessage = this.service.UpdateMerchandiseInOrder(customerId, merchandiseId, orderAmount, orderComment);

            return(View());
        }
예제 #2
0
        // GET: /Order/Cancel
        public ActionResult Cancel()
        {
            // Проверка наличия в Cookie требуемых параметров - Идентификатор клиента
            var customerId = CookieHandler.GetCookieValue(this.Request.Cookies, this.Response, CookieNames.CustomerId, Guid.NewGuid().ToString(), DateTime.Now.AddYears(1));

            this.service.CancelActiveOrder(customerId);

            CookieHandler.SetCookieValue <bool>(this.Response, CookieNames.IsOrderNotEmpty, false, DateTime.Now.AddDays(1));

            return(View("Main", PrepareOrderDetails()));
        }
예제 #3
0
        // GET: /Order/CustomerConfirmation
        public ActionResult CustomerConfirmation()
        {
            // прочитать из Cookie идентификатор клиента
            var customerId = CookieHandler.GetCookieValue <String>(this.Request.Cookies, this.Response, CookieNames.CustomerId, Guid.NewGuid().ToString(), DateTime.Now.AddYears(1));

            // Проверить, что имеется активный заказ
            var orderId = this.service.GetActiveOrderId(customerId);

            if (orderId <= 0)
            {
                ViewBag.ErrorMessage = "Произошла ошибка - не удается найти активный заказ. Перейдите в раздел 'Каталог' и добавьте необходимые товары в заказ.";
            }

            return(View(this.service.GetCustomer(customerId)));
        }
예제 #4
0
        private void ApplyPagging(IEnumerable <Merchandise> merchandises, int currentPage)
        {
            if (merchandises != null && merchandises.Count() > 0)
            {
                int pageSize = CookieHandler.GetCookieValue <int>(this.Request.Cookies, this.Response, CookieNames.RecordsOnPage, 20, DateTime.Now.AddYears(1));

                var pagingList = merchandises.ToPagedList(currentPage, pageSize);

                ViewBag.Page         = currentPage;
                ViewBag.PageCount    = pagingList.PageCount;
                ViewBag.Merchandises = pagingList;
            }
            else
            {
                ViewBag.Page         = 0;
                ViewBag.PageCount    = 0;
                ViewBag.Merchandises = new List <Merchandise>().ToPagedList(1, 1);
            }
        }
예제 #5
0
        /// <summary>
        /// 执行控制器中方法前先调用该方法
        /// </summary>
        /// <param name="filterContext"></param>
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);

            string sessionId = CookieHandler.GetCookieValue("sessionId");

            if (!string.IsNullOrEmpty(sessionId))
            {
                var redis = new RedisHelper(0);
                var user  = redis.StringGet <UserInfo>($"SESSION:{sessionId}");
                if (user == null)
                {
                    filterContext.Result = Content("<script type='text/javascript'>window.top.location='/Login/Index'; </script>");
                }
            }
            else
            {
                filterContext.Result = Content("<script type='text/javascript'>window.top.location='/Login/Index'; </script>");
            }
        }
예제 #6
0
        private IEnumerable <OrderDetail> PrepareOrderDetailsGeneral(string searchText)
        {
            // Проверка наличия в Cookie Идентификатора клиента
            var customerId = CookieHandler.GetCookieValue <String>(this.Request.Cookies, this.Response, CookieNames.CustomerId, Guid.NewGuid().ToString(), DateTime.Now.AddYears(1));

            // Проверка наличия открытого заказа
            var orderId = GetActiveOrderId(customerId);

            // Подготовить товары связанные с заказом
            PrepareOrderMerchandises(orderId, searchText);

            // Расчитать стоимость заказа
            CalculateOrderCosts(orderId);

            // Подготовить раздел навигации по сайту
            PrepareSiteMapNavigation(searchText);

            // Подготовка информации по скидкам и ценам
            PrepareDiscountsInformation();

            return(this.service.GetActiveOrderItems(orderId));
        }
예제 #7
0
        // GET: Login
        public ActionResult Index()
        {
            string login_remember = CookieHandler.GetCookieValue("login_remember");

            if (!string.IsNullOrEmpty(login_remember))
            {
                login_remember = new AESCryptHandler().Decrypt(login_remember);
                JObject cookieInfo  = JObject.Parse(login_remember);
                string  cookie_id   = cookieInfo["id"].ToString();
                string  cookie_name = cookieInfo["username"].ToString();
                string  cookie_pwd  = cookieInfo["password"].ToString();
                var     user        = UserInfoService.LoadEntities(u => u.Id.ToString() == cookie_id && u.UName == cookie_name && u.UPwd == cookie_pwd).FirstOrDefault();
                if (user != null)
                {
                    var    redis     = new RedisHelper(0);
                    string sessionId = Guid.NewGuid().ToString();
                    redis.StringSet <UserInfo>($"SESSION:{sessionId}", user, TimeSpan.FromMinutes(20)); //弃用session,使用Redis解决session只能单机应用的局限
                    CookieHandler.SetCookie("sessionId", sessionId, null);
                    return(Content("<script type='text/javascript'>window.top.location='/Home/Index'; </script>"));
                }
            }
            return(View());
        }
예제 #8
0
        private void SetViewParams(int?id, int?id2, int?id3, string sortField, string sortOrder, string searchText)
        {
            int    pageSize;
            int    showNavigation;
            int    groupId = 0, subgroupId = 0;
            string title;

            #region Проверка наличия в Cookie требуемых параметров

            // Задать идентификатор клиента в Cookies (если отсутствует)
            CookieHandler.GetCookieValue <String>(this.Request.Cookies, this.Response, CookieNames.CustomerId, Guid.NewGuid().ToString(), DateTime.Now.AddYears(1));

            // Количество записей на странице
            pageSize = CookieHandler.GetCookieValue <int>(this.Request.Cookies, this.Response, CookieNames.RecordsOnPage, 20, DateTime.Now.AddYears(1));

            // Флаг указывающий на состояние области навигации (отображается или скрыто)
            showNavigation = CookieHandler.GetCookieValue <int>(this.Request.Cookies, this.Response, CookieNames.ShowNavigation, 1, DateTime.Now.AddYears(1));

            #endregion

            #region Определение идентификатора подргруппы и группы по идентификатору товара

            if (!id3.HasValue)
            {
                if (id.HasValue)
                {
                    groupId = id.Value;
                }

                if (id2.HasValue)
                {
                    subgroupId = id2.Value;
                }
            }
            else
            {
                this.service.ClarifyGroupAndSubgroupIDs(id3.Value, out groupId, out subgroupId);
            }

            #endregion

            #region Конструирование полных URL-путей в зависимости от выбранного контекста

            StringBuilder contextCatalogPageUrl = new StringBuilder(CatalogPageUrl);
            if (id.HasValue)
            {
                contextCatalogPageUrl.Append(String.Format("/{0}", id.Value));
            }
            if (id2.HasValue)
            {
                contextCatalogPageUrl.Append(String.Format("/{0}", id2.Value));
            }

            #endregion

            #region Определение заголовка страницы в зависимости от выбранного контекста

            if (groupId > 0)
            {
                title = this.service.GetGroupTitle(groupId);
                if (subgroupId > 0)
                {
                    title = String.Format("{0} - {1}", title, this.service.GetSubgroupTitle(subgroupId));
                }
            }
            else
            {
                title = "Каталог";
            }

            #endregion

            ViewBag.Title = title;

            ViewBag.GroupId    = groupId;
            ViewBag.SubgroupId = subgroupId;

            ViewBag.CatalogPageUrl        = CatalogPageUrl;
            ViewBag.ContextCatalogPageUrl = contextCatalogPageUrl.ToString();

            ViewBag.SearchText     = searchText;
            ViewBag.SortOrder      = sortOrder;
            ViewBag.SortField      = sortField;
            ViewBag.ShowNavigation = showNavigation;

            ViewBag.RecordsOnPageCookieName  = CookieNames.RecordsOnPage;
            ViewBag.ShowNavigationCookieName = CookieNames.ShowNavigation;
        }
예제 #9
0
        public ActionResult OrderConfirmation()
        {
            // прочитать из Cookie идентификатор клиента
            var customerId = CookieHandler.GetCookieValue <String>(this.Request.Cookies, this.Response, CookieNames.CustomerId, Guid.NewGuid().ToString(), DateTime.Now.AddYears(1));

            // Проверить, что имеется активный заказ
            var orderId = GetActiveOrderId(customerId);

            if (orderId <= 0)
            {
                ViewBag.ErrorMessage = "Произошла ошибка - не удается найти активный заказ. Перейдите в раздел 'Каталог' и добавьте необходимые товары в заказ.";
                return(View());
            }

            #region Прочитать параметры POST-запроса (данные о клиенте) и сохранить их в БД

            if (this.Request.Params.Count == 0)
            {
                ViewBag.ErrorMessage = "Произошла ошибка - в запросе не переданы обязательные параметры заказа.";
                return(View());
            }

            var company = RequestParametersHandler.GetRequestParameter <String>(this.Request.Params, WebRequestParamNames.CustomerCompany) ?? String.Empty;
            if (String.IsNullOrEmpty(company))
            {
                ViewBag.ErrorMessage =
                    String.Format("Произошла ошибка - в POST-параметрах запроса не найден параметр с именем '{0}'.",
                                  WebRequestParamNames.CustomerCompany);
                return(View());
            }

            var contactName = RequestParametersHandler.GetRequestParameter <String>(this.Request.Params, WebRequestParamNames.CustomerContactName) ?? String.Empty;

            var phone = RequestParametersHandler.GetRequestParameter <String>(this.Request.Params, WebRequestParamNames.CustomerPhoneNumber) ?? String.Empty;
            if (String.IsNullOrEmpty(phone))
            {
                ViewBag.ErrorMessage =
                    String.Format("Произошла ошибка - в POST-параметрах запроса не найден параметр с именем '{0}'.",
                                  WebRequestParamNames.CustomerPhoneNumber);
                return(View());
            }

            var email = RequestParametersHandler.GetRequestParameter <String>(this.Request.Params, WebRequestParamNames.CustomerEmail) ?? String.Empty;
            if (String.IsNullOrEmpty(email))
            {
                ViewBag.ErrorMessage =
                    String.Format("Произошла ошибка - в POST-параметрах запроса не найден параметр с именем '{0}'.",
                                  WebRequestParamNames.CustomerEmail);
                return(View());
            }

            var address = RequestParametersHandler.GetRequestParameter <String>(this.Request.Params, WebRequestParamNames.CustomerAddress) ?? String.Empty;
            var inn     = RequestParametersHandler.GetRequestParameter <String>(this.Request.Params, WebRequestParamNames.CustomerINN) ?? String.Empty;

            #endregion

            this.service.ConfirmOrder(customerId, company, contactName, phone, email, address, inn);

            // сбросить флаг наличия товаров в заказе
            CookieHandler.SetCookieValue <bool>(this.Response, CookieNames.IsOrderNotEmpty, false, DateTime.Now.AddDays(1));

            return(View());
        }