Exemplo n.º 1
0
        public ActionResult AddToCart(Dictionary <string, string> item)
        {
            if (!item["culture"].IsNullOrEmpty())
            {
                Thread.CurrentThread.CurrentCulture = new CultureInfo(item["culture"]);
            }


            Product product_to_add = UvendiaContext.Products.Single <long>(long.Parse(item["p"]));
            string  size           = item["size"];

            if (product_to_add.HasVariant)
            {
                if (size.IsNullOrEmpty())
                {
                    product_to_add = product_to_add.Variants.First();
                }
                else
                {
                    product_to_add = product_to_add.Variants.First(x => string.Equals(x["Size"] as string, size, StringComparison.InvariantCultureIgnoreCase));
                }
            }

            var currentCart = CurrentCart.Create(SnuffoSettings.STORE_NAME);

            currentCart.AddProduct(product_to_add, int.Parse(item["qnty"]), SnuffoSettings.GetCurrency(), 0, item["thumb"]);

            return(PartialView("~/views/partials/_CartShop.cshtml", new CartShopModel()));
        }
Exemplo n.º 2
0
        public ActionResult HandleContactUs(ContactPageModel model)
        {
            if (!ReCaptcha.Validate(DataUtils.GetConfig("ReCaptcha:SecretKey")))
            {
                ModelState.AddModelError("", "Captcha cannot be empty");
            }

            if (ModelState.IsValid)
            {
                EMail mail = new EMail()
                {
                    Name        = model.Name,
                    SenderEmail = model.EmailAddress,
                    Body        = model.Message,
                    ToAddress   = SnuffoSettings.Create(model.Content).SupportEmail,
                    Subject     = model.Subject,
                    IsHtml      = true
                };

                EmailUtils.SendEmail(mail);

                return(Redirect($"/{CurrentUser.LanguageCode}/contact/submitted"));
            }

            return(CurrentUmbracoPage());
        }
Exemplo n.º 3
0
        public ActionResult ShopPage(ContentModel model, int page = 1, string sorting = "")
        {
            var settings      = SnuffoSettings.Create(model.Content);
            var shopPageModel = new ShopPageModel(model.Content);

            shopPageModel.Categories = UvendiaContext.Categories.GetByStoreId(settings.StoreId);
            shopPageModel.PageIndex  = page;

            long totalRows;
            long categoryId;

            long.TryParse(Request.QueryString["c"], out categoryId);
            long priceDefinitionId = UvendiaContext.PriceDefinitions.Single(SnuffoSettings.GetCurrency()).Id;
            var  sortBy            = sorting.IsNullOrEmpty() ? ProductSortyBy.Popularity : (ProductSortyBy)Enum.Parse(typeof(ProductSortyBy), sorting, true);

            var products = UvendiaContext.Products.GetProductsPaged(shopPageModel.PageIndex,
                                                                    shopPageModel.PageSize,
                                                                    out totalRows, categoryId > 0 ? categoryId : (long?)null,
                                                                    true,
                                                                    priceDefinitionId,
                                                                    sortyBy: sortBy);

            shopPageModel.TotalRows       = totalRows;
            shopPageModel.Products        = products;
            shopPageModel.SelectedSorting = sortBy.ToString();

            return(CurrentTemplate(shopPageModel));
        }
Exemplo n.º 4
0
        public ActionResult ChangeEmailAddress(AccountChangeEmailModel model)
        {
            var exists = _auth0Helper.SearchAuth0UserByEmail(model.EmailAddress)?.Any(x => x.UserId.StartsWith("auth0") && x.UserId != CurrentUser.UserId);

            if (exists.GetValueOrDefault())
            {
                ModelState.AddModelError("", "E-mail address already exists");
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _auth0Helper.ChangeEmail(CurrentUser.UserId, model.EmailAddress);
                    this.AuthenticationManager.SignOut();

                    SnuffoSettings.ShowMessage(TempData, "E-mail Address Updated", "Your E-mail address has been updated. Please login again.", AlertMessageType.Success);
                    return(Redirect($"/{CurrentUser.LanguageCode}/account/login-register/"));
                }
                catch (Exception e)
                {
                    HandleAuth0Exception(e);
                }
            }
            return(CurrentUmbracoPage());
        }
Exemplo n.º 5
0
        public ActionResult ResetPassword(ResetPasswordModel model)
        {
            User user   = null;
            var  userId = Request.QueryString["u"] ?? CurrentUser.UserId;

            if (!userId.IsNullOrEmpty())
            {
                user = _auth0Helper.GetAuth0User(userId);
            }
            if (user == null)
            {
                ModelState.AddModelError("", "User not found");
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _auth0Helper.ChangePassword(userId, model.Password);

                    SnuffoSettings.ShowMessage(TempData, "Reset Password", "Your password has been changed", AlertMessageType.Success);
                    if (model.RedirectToLogin)
                    {
                        return(Redirect($"/{CurrentUser.LanguageCode}/account/login-register/"));
                    }
                }
                catch (Exception e)
                {
                    HandleAuth0Exception(e);
                }
            }
            return(CurrentUmbracoPage());
        }
Exemplo n.º 6
0
        private MailController(HttpRequestBase request, IPublishedContent content, SnuffoSettings settings = null, string language = "en")
        {
            _settings    = settings ?? SnuffoSettings.Create(content);
            _systemEmail = _settings.StoreEmail;
            _request     = request;
            _language    = language;

            if (_request != null)
            {
                var data = new RouteData();
                data.DataTokens["mail"] = "Mailing";
                this.ControllerContext  = new ControllerContext(_request.RequestContext.HttpContext, data, this);
            }
        }
Exemplo n.º 7
0
        public ActionResult LanguageCurrencySelect(LanguageCurrencySelectModel model)
        {
            var currentCart = CurrentCart.Create(SnuffoSettings.STORE_NAME);

            if (!currentCart.HasCartItems())
            {
                SnuffoSettings.SetCurrency(model.SelectedCurrency);
            }
            else
            {
                base.ShowAlertMessage("Multiple Currencies Detected", "It is not allowed to add multiple type of currencies to your shopping cart", AlertMessageType.Error);
            }


            return(CurrentUmbracoPage());
        }
Exemplo n.º 8
0
        public ActionResult AccountProfile(AccountProfileModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    _auth0Helper.UpdateAuth0User(model);

                    SnuffoSettings.ShowMessage(TempData, "Profile Updated", "Your profile has been updated", AlertMessageType.Success);
                }
                catch (Exception e)
                {
                    HandleAuth0Exception(e);
                }
            }
            return(CurrentUmbracoPage());
        }
Exemplo n.º 9
0
        public ActionResult DeleteAccount(ContentModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    _auth0Helper.DeleteAuth0User(CurrentUser.UserId);
                    this.AuthenticationManager.SignOut();

                    SnuffoSettings.ShowMessage(TempData, "Account Deleted", "Your account has been deleted.", AlertMessageType.Info);
                    return(Redirect($"/{CurrentUser.LanguageCode}/"));
                }
                catch (Exception e)
                {
                    HandleAuth0Exception(e);
                }
            }
            return(CurrentUmbracoPage());
        }
Exemplo n.º 10
0
        public ActionResult Subscribe(SubscribeModel model)
        {
            if (!model.HoneyPot.IsNullOrEmpty())
            {
                ModelState.AddModelError("", "");
            }
            if (!DateTime.TryParseExact(model.Timestamp, "ffffHHMMtssddyyyymm", null, DateTimeStyles.None, out DateTime commentDate) &&
                commentDate.Day == DateTime.UtcNow.Day &&
                commentDate.Month == DateTime.UtcNow.Month &&
                commentDate.Year == DateTime.UtcNow.Year &&
                commentDate.Hour == DateTime.UtcNow.Hour)
            {
                ModelState.AddModelError("", "");
            }

            if (ModelState.IsValid)
            {
                // Persist to database
                var sub = UvendiaContext.Subscriptions.Single($"{nameof(Subscription.Email)}=@Email", new { model.Email });
                if (sub == null)
                {
                    UvendiaContext.Subscriptions.Insert <long>(
                        new Subscription
                    {
                        Email      = model.Email,
                        IsActive   = true,
                        ModifiedBy = CurrentUser.UserId,
                        CreatedBy  = CurrentUser.UserId
                    });
                }
                else
                {
                    sub.IsActive   = true;
                    sub.ModifiedOn = DateTime.Now;
                    sub.ModifiedBy = CurrentUser.UserId;
                    UvendiaContext.Subscriptions.Save(sub);
                }
                SnuffoSettings.ShowMessage(TempData, "Subscribed", "Your e-mail has been subscribed successfully");
            }

            return(CurrentUmbracoPage());
        }
Exemplo n.º 11
0
        public ActionResult UpdateAccountAddress(AccountAddressModel model)
        {
            model.ContactAddress.AddressTypeId = AddressType.Default.Id;
            if (model.ShippingAddress != null)
            {
                model.ShippingAddress.AddressTypeId = AddressType.ShipAddress.Id;
            }

            base.SuppressValidation(model.GetPropertyName(x => x.UserId));
            base.SuppressValidation(model.GetPropertyName(x => x.EmailAddress));
            base.SuppressValidation(model.GetPropertyName(x => x.FirstName));
            base.SuppressValidation(model.GetPropertyName(x => x.LastName));
            base.SuppressValidation(model.GetPropertyName(x => x.Phone));

            if (model.HasSameAddress)
            {
                base.SuppressValidation(model.GetPropertyName(x => x.ShippingAddress));
                model.ShippingAddress = null;
                UvendiaContext.Addresses.DeleteByUseryIdAndAddressType(CurrentUser.UserId, AddressType.ShipAddress);
            }

            if (ModelState.IsValid)
            {
                model.ContactAddress.CreatedBy = CurrentUser.UserId;
                var addresses = new List <Address>()
                {
                    model.ContactAddress
                };
                if (model.ShippingAddress != null)
                {
                    model.ShippingAddress.Phone     = model.ContactAddress.Phone;
                    model.ShippingAddress.CreatedBy = CurrentUser.UserId;
                    addresses.Add(model.ShippingAddress);
                }

                UvendiaContext.Addresses.Save(addresses);
                SnuffoSettings.ShowMessage(TempData, "Updated", "Your address updated successfuly.", AlertMessageType.Success);
            }
            return(CurrentUmbracoPage());
        }
Exemplo n.º 12
0
        static CheckoutPageController()
        {
            var config = new MapperConfiguration(cfg =>
            {
                cfg.CreateMap <Order, CheckoutOrder>()
                .ForMember(dest => dest.Company, opt => opt.MapFrom(src => SnuffoSettings.STORE_NAME))
                .ForMember(dest => dest.OrderReference, opt => opt.MapFrom(src => src.OrderNumber))
                .ForMember(dest => dest.IssuerId, opt => opt.MapFrom(src => src.MetaData))
                .ForMember(dest => dest.PaymentMethod, opt => opt.MapFrom(src => string.Equals(src.PaymentMethod.Name, CS.PaymentMethod.iDEAL.ToString(), StringComparison.InvariantCultureIgnoreCase) ? CS.PaymentMethod.iDEAL : CS.PaymentMethod.PayPal))
                .ForMember(dest => dest.OrderDate, opt => opt.MapFrom(src => src.OrderDate))
                .ForMember(dest => dest.CallBackUrlOnPaymentSucceed, opt => opt.Ignore())
                .ForMember(dest => dest.CallBackUrlOnPaymentFailed, opt => opt.Ignore())
                .ForMember(dest => dest.Currency, opt => opt.MapFrom(src => SnuffoSettings.GetCurrency()))
                .ForMember(dest => dest.ShippingFee, opt => opt.MapFrom(src => src.CalculateShippingFee()))
                .ForMember(dest => dest.ServiceFee, opt => opt.MapFrom(src => src.CalculatePaymentFee()))
                .ForMember(dest => dest.Subtotal, opt => opt.MapFrom(src => src.CalculateSubTotalWithoutVAT()))
                .ForMember(dest => dest.Total, opt => opt.MapFrom(src => src.CalculateTotal()))
                .ForMember(dest => dest.Discount, opt => opt.Ignore())
                .ForMember(dest => dest.VAT, opt => opt.MapFrom(src => src.CalculateVAT()));

                cfg.CreateMap <ProductOrderDetail, CheckoutOrderDetail>()
                .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Product.Sku))
                .ForMember(dest => dest.Quantity, opt => opt.MapFrom(src => src.Quantity))
                .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Product.DisplayName(null)))
                .ForMember(dest => dest.UnitPrice, opt => opt.MapFrom(src => src.CalculatePriceWithDiscount()));

                cfg.CreateMap <TicketOrderDetail, CheckoutOrderDetail>()
                .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.TicketSale.Id))
                .ForMember(dest => dest.Quantity, opt => opt.MapFrom(src => src.Quantity))
                .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.TicketSale.Description))
                .ForMember(dest => dest.UnitPrice, opt => opt.MapFrom(src => src.CalculatePriceWithDiscount()));
            });

            OrderMapper = config.CreateMapper();
            //Mapper.AssertConfigurationIsValid();
        }
Exemplo n.º 13
0
        public LanguageCurrencySelectModel(IPublishedContent content) : base(content)
        {
            var currency = SnuffoSettings.GetCurrency();

            SelectedCurrency = currency;
        }
Exemplo n.º 14
0
 /// <summary>
 /// Sets the alert message to be show for the user.
 /// </summary>
 /// <param name="message">Message to be shown.</param>
 public void ShowAlertMessage(string title, string msg, AlertMessageType messageType = AlertMessageType.Info)
 {
     SnuffoSettings.ShowMessage(TempData, title, msg, messageType);
 }
Exemplo n.º 15
0
 public static MailController Instance(SnuffoSettings settings, string language)
 {
     return(new MailController(null, null, settings, language));
 }
Exemplo n.º 16
0
 public static MailController Instance(HttpRequestBase request, SnuffoSettings settings, string language)
 {
     return(new MailController(request, null, settings, language));
 }