public Guid GetUser() { Guid userId; using (WebStoreServices webStoreServices = new WebStoreServices(this._service.GetConfiguration())) { IProfileService service = webStoreServices.CreateWebStoreChannel<IProfileService>(); if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated) { Magelia.WebStore.Services.Contract.Data.User user = service.GetUser( new GetUserParameters { LoginType = LoginType.UserName, UserKey = System.Web.HttpContext.Current.User.Identity.Name } ); if (user != null) { userId = user.UserId; } else { user = service.CreateUser( new CreateUserParameters { Email = Membership.GetUser().Email, FirstName = string.Empty, LastName = string.Empty, MerchantId = this._service.GetConfiguration().MerchantId.Value, Newsletter = false, Password = K_AnonymousDefaultPassword, UserName = System.Web.HttpContext.Current.User.Identity.Name, UserType = Magelia.WebStore.Services.Contract.Data.UserType.Normal } ); userId = user.UserId; } } else { string username = "******" + Guid.NewGuid(); Magelia.WebStore.Services.Contract.Data.User user = service.CreateUser( new CreateUserParameters { Email = String.Format(K_AnonymousEmailTemplate, username), FirstName = string.Empty, LastName = string.Empty, MerchantId = this._service.GetConfiguration().MerchantId.Value, Newsletter = false, Password = K_AnonymousDefaultPassword, UserName = username, UserType = Magelia.WebStore.Services.Contract.Data.UserType.Anonymous, TitleId = Magelia.WebStore.Services.Contract.Data.UserTitleEnum.Unknown } ); userId = user.UserId; } } return userId; }
public ActionResult Add(Guid productId, Guid catalogId) { AddProductToBasketParameters parameters = new AddProductToBasketParameters { ProductId = productId, CatalogId = catalogId, Quantity = 1, Culture = Thread.CurrentThread.CurrentUICulture.Name, CountryId = "US ", UserId = this._webStoreProfileServices.GetUser() }; if (this._basketServices.GetBasketId().HasValue) { parameters.BasketId = this._basketServices.GetBasketId().Value; } using (WebStoreServices webStoreServices = new WebStoreServices(this._webStoreConfigurationServices.GetConfiguration())) { this._basketServices.SetBasketId(webStoreServices.CreateWebStoreChannel<IOrderService>().AddProductToBasket(parameters).BasketId); } return this.Redirect(this.Request.UrlReferrer.PathAndQuery); }
public ViewResult ProceedToCheckout() { Basket basket = this._basketServices.GetBasket(); WebStoreConfigurationPart configuration = this._webStoreConfigurationServices.GetConfiguration(); using (WebStoreServices webStoreServices = new WebStoreServices(configuration)) { IOrderService service = webStoreServices.CreateWebStoreChannel<IOrderService>(); string orderNumber = service.SaveAsOrder( new SaveAsOrderParameters { BasketId = basket.BasketId, UserId = this._webStoreProfileServices.GetUser() } ); String url = String.Concat(this.Request.Url.GetLeftPart(UriPartial.Authority), VirtualPathUtility.ToAbsolute("~/")); Models.Paypal.IndexViewModel viewModel = new Models.Paypal.IndexViewModel { Business = configuration.PaypalAccount, CurrencyCode = basket.CurrencyCode, OrderNumber = orderNumber, Price = basket.Total.ToString(".00"), ReturnUrl = url, Target = K_PAYPAL_PAYMENT_URL }; return View(viewModel); } }
public Basket GetBasket() { GetBasketParameters parameters = new GetBasketParameters() { CultureName = Thread.CurrentThread.CurrentUICulture.Name }; Magelia.WebStore.Services.Contract.Data.Basket basket; using (WebStoreServices webStoreServices = new WebStoreServices(this._webStoreConfigurationServices.GetConfiguration())) { IOrderService service = webStoreServices.CreateWebStoreChannel<IOrderService>(); if (this.BasketId.HasValue) { parameters.BasketId = this.BasketId.Value; } else { parameters.UserId = this._webStoreProfileServices.GetUser(); } basket = service.GetBasket(parameters); if (basket != null) { this.BasketId = basket.BasketId; } } return basket; }
public ActionResult Address(AddressViewModel viewModel) { IEnumerable<Country> availableCountries = this.GetAvailableCountries(); if (this.ModelState.IsValid) { if (viewModel.AddressType == AddressViewModel.AddressTypes.Billing) { this.BillingAddress = viewModel; } else { this.ShippingAddress = viewModel; } if (viewModel.ShippingAddressIsDifferent) { this.ModelState.Clear(); viewModel = (this.ShippingAddress == default(AddressViewModel)) ? new AddressViewModel { AddressType = AddressViewModel.AddressTypes.Shipping } : this.ShippingAddress; } else { using (WebStoreServices webStoreServices = new WebStoreServices(this._webStoreConfigurationServices.GetConfiguration())) { IProfileService profileService = webStoreServices.CreateWebStoreChannel<IProfileService>(); IOrderService orderServices = webStoreServices.CreateWebStoreChannel<IOrderService>(); Guid userId = this._webstoreProfileServices.GetUser(); UpdateBasketParameters updatBasketParameters = new UpdateBasketParameters { BasketId = this._basketServices.GetBasketId().Value, CountryId = this.BillingAddress.Country, UserId = userId, CultureName = Thread.CurrentThread.CurrentUICulture.Name }; this.BillingAddress.AddressId = profileService.SetAddress(this.BillingAddress.GetAddressParameters(userId)).AddressId; updatBasketParameters.BillingAddressId = this.BillingAddress.AddressId; if (this.BillingAddress.ShippingAddressIsDifferent) { this.ShippingAddress.AddressId = profileService.SetAddress(this.ShippingAddress.GetAddressParameters(userId)).AddressId; updatBasketParameters.ShippingAddressId = this.ShippingAddress.AddressId; updatBasketParameters.CountryId = this.ShippingAddress.Country; } orderServices.UpdateBasket(updatBasketParameters); } return this.ShippingMethods(); } } viewModel.AvailableCountries = availableCountries; return this.View(viewModel); }
private IEnumerable<Country> GetAvailableCountries() { WebStoreConfigurationPart configuration = this._webStoreConfigurationServices.GetConfiguration(); WebStoreServices webStoreServices = new WebStoreServices(configuration); IEnumerable<Country> availableCountries = webStoreServices.CreateWebStoreChannel<IProfileService>().GetCountries(new GetCountriesParameters { MerchantId = configuration.MerchantId.Value, CultureName = Thread.CurrentThread.CurrentUICulture.Name }).OrderBy(c => c.DisplayName); webStoreServices.Dispose(); return availableCountries; }
public ActionResult ShippingMethods() { WebStoreConfigurationPart configuration = this._webStoreConfigurationServices.GetConfiguration(); WebStoreServices webStoreServices = new WebStoreServices(configuration); Basket basket = this._basketServices.GetBasket(); ShippingMethodsViewModel viewModel = new ShippingMethodsViewModel { AvailableShippingMethods = webStoreServices.CreateWebStoreChannel<IOrderService>().GetShippingMethods(new GetShippingMethodsParameters { BasketId = this._basketServices.GetBasketId().Value, CultureName = Thread.CurrentThread.CurrentUICulture.Name, MerchantId = configuration.MerchantId.Value, UserId = this._webstoreProfileServices.GetUser() }), Currency = basket.Currency, ShippingMethod = basket.OrderFormHeaders.First().LineItems.First().ShippingMethodId.ToString() }; webStoreServices.Dispose(); this.Response.Cache.SetCacheability(HttpCacheability.NoCache); return this.View("~/Modules/WebStore/Views/Order/ShippingMethods.cshtml", viewModel); }
public ActionResult ShippingMethods(ShippingMethodsViewModel viewModel) { WebStoreServices webStoreServices = new WebStoreServices(this._webStoreConfigurationServices.GetConfiguration()); if (this.ModelState.IsValid) { IOrderService orderServices = webStoreServices.CreateWebStoreChannel<IOrderService>(); orderServices.UpdateBasket( new UpdateBasketParameters { BasketId = this._basketServices.GetBasketId().Value, UserId = this._webstoreProfileServices.GetUser(), ShippingMethodId = Guid.Parse(viewModel.ShippingMethod), CultureName = Thread.CurrentThread.CurrentUICulture.Name, CountryId = this.BillingAddress.ShippingAddressIsDifferent ? this.ShippingAddress.Country : this.BillingAddress.Country } ); webStoreServices.Dispose(); Basket b = this._basketServices.GetBasket(); return this.View("~/Modules/WebStore/Views/Order/Pay.cshtml", new PayViewModel { Total = b.Total, ShippingCost = b.ShippingTotal, SubTotal = b.SubTotal, Currency = b.Currency }); } else { viewModel.AvailableShippingMethods = webStoreServices.CreateWebStoreChannel<IOrderService>().GetShippingMethods(new GetShippingMethodsParameters { BasketId = this._basketServices.GetBasketId().Value, CultureName = Thread.CurrentThread.CurrentUICulture.Name, MerchantId = this._webStoreConfigurationServices.GetConfiguration().MerchantId.Value, UserId = this._webstoreProfileServices.GetUser() }); webStoreServices.Dispose(); } return this.View(viewModel); }
private IEnumerable<Merchant> GetMerchantSettings(String servicesPath) { WebStoreServices webstoreServices = new WebStoreServices(servicesPath); IEnumerable<Merchant> merchants = webstoreServices.CreateWebStoreChannel<IProfileService>().GetMerchants().OrderBy(m => m.Name); webstoreServices.Dispose(); return merchants; }
private IEnumerable<Catalog> GetCatalogsSettings(String servicesPath, Guid merchantId) { WebStoreServices webstoreServices = new WebStoreServices(servicesPath); IEnumerable<Catalog> catalogs = webstoreServices.CreateWebStoreChannel<ICatalogService>().GetCatalogs(new GetCatalogsParameters { CultureName = "en-US", MerchantId = merchantId }).Where(c => c.IsActive).OrderBy(c => c.Name); webstoreServices.Dispose(); return catalogs; }
public ActionResult Synchronize() { WebStoreConfigurationPart configuration = this._configurationService.GetConfiguration(); if (configuration != default(WebStoreConfigurationPart) && configuration.IsComplete) { using (WebStoreServices webStoreServices = new WebStoreServices(configuration)) { ICatalogService catalogService = webStoreServices.CreateWebStoreChannel<ICatalogService>(); Category root = catalogService.GetCategory(new GetCategoryParameters { CatalogId = configuration.CatalogId.Value, LoadSubCategories = true, CultureName = Thread.CurrentThread.CurrentUICulture.Name, Depth = int.MaxValue }); IList<Category> categories = root == default(Category) ? new List<Category>() : root.ChildCategories.Where(cat => cat.IsActive).ToList(); IEnumerable<CategoryPart> categoriesLocal = this._contentManager.List<CategoryPart>("WebStore Category").ToList(); IEnumerable<Category> categoriesToAdd = categories.Where(cat => !categoriesLocal.Select(c => c.CategoryGuid).Contains(cat.CategoryId)); IEnumerable<CategoryPart> categoriesToRemove = categoriesLocal.Where(cat => !categories.Select(c => c.CategoryId).Contains(cat.CategoryGuid)); // Categories from service which are not in Orchard foreach (Category category in categoriesToAdd) { String categoryName = String.IsNullOrEmpty(category.Name) ? category.Code : category.Name; CategoryPart categoryPart = this._contentManager.Create<CategoryPart>("WebStore Category"); categoryPart.CategoryGuid = category.CategoryId; categoryPart.Code = category.Code; categoryPart.SynchronizationDate = DateTime.Now; RoutePart categoryRoutePart = categoryPart.ContentItem.As<RoutePart>(); categoryRoutePart.Slug = "WebStore/Catalog/Category/" + categoryPart.Code; categoryRoutePart.Title = categoryPart.Code; categoryRoutePart.Path = "WebStore/Catalog/Category/" + categoryPart.Code; } //Categories in orchard which are not in the service foreach (CategoryPart categoryPart in categoriesToRemove) { this._contentManager.Remove(categoryPart.ContentItem); } List<Product> products = new List<Product>(); IEnumerable<ProductPart> productsLocal = _contentManager.List<ProductPart>("WebStore Product").ToList(); foreach (Category category in categories) { products.AddRange(catalogService.GetProducts(new GetProductsParameters { CatalogId = configuration.CatalogId.Value, CategoryId = category.CategoryId, CultureName = Thread.CurrentThread.CurrentUICulture.Name })); } IEnumerable<Product> productsToAdd = products.Where(p => !productsLocal.Select(pl => pl.ProductGuid).Contains(p.ProductId)); IEnumerable<ProductPart> productsToRemove = productsLocal.Where(pl => !products.Select(p => p.ProductId).Contains(pl.ProductGuid)); //product from service which are not in orchard foreach (Product product in productsToAdd) { ProductPart productPart = this._contentManager.Create<ProductPart>("WebStore Product"); productPart.ProductGuid = product.ProductId; productPart.SynchronizationDate = DateTime.Now; productPart.SKU = product.Sku; CategoryPart category = _contentManager.List<CategoryPart>("WebStore Category").Single(c => c.CategoryGuid == product.VirtualCategoriesIds.First()); RoutePart categoryRoutePart = productPart.ContentItem.As<RoutePart>(); categoryRoutePart.Slug = "Product/" + productPart.SKU; categoryRoutePart.Title = productPart.SKU; categoryRoutePart.Path = "WebStore/Catalog/Category/" + categories.First(c => c.CategoryId == product.VirtualCategoriesIds.First()).Code + "/Product/" + productPart.SKU; ICommonPart productContainablePart = productPart.ContentItem.As<ICommonPart>(); productContainablePart.Container = category; } foreach (ProductPart productPart in productsToRemove) { this._contentManager.Remove(productPart.ContentItem); } this._notifier.Information( new LocalizedString(String.Format( this.T("Synchronization successfully completed : {0} categorie(s) added, {1} categorie(s) removed, {2} product(s) added and {3} product(s) removed").ToString(), categoriesToAdd.Count(), categoriesToRemove.Count(), productsToAdd.Count(), productsToRemove.Count() ) ) ); } } else { this._notifier.Warning(this.T("WebStore configuration is missing or is not complete")); } return this.RedirectToAction("Synchronization", "Admin", new { area = "WebStore" }); }
public ActionResult Remove(Guid productId, Guid catalogId) { if (this._basketServices.GetBasketId().HasValue) { using (WebStoreServices webstoreServices = new WebStoreServices(this._webStoreConfigurationServices.GetConfiguration())) { webstoreServices.CreateWebStoreChannel<IOrderService>().UpdateBasket( new UpdateBasketParameters { BasketId = this._basketServices.GetBasketId().Value, UserId = this._webStoreProfileServices.GetUser(), ProductId = productId, Quantity = 0, CountryId = "US ", CultureName = Thread.CurrentThread.CurrentUICulture.Name, CatalogId = catalogId } ); } } return new RedirectResult(this.Request.UrlReferrer.PathAndQuery); }
public ActionResult Update(Guid productId, Guid catalogId, String rawQuantity) { int quantity; if (int.TryParse(rawQuantity, out quantity) && quantity > 0 && this._basketServices.GetBasketId().HasValue) { IOrderService service = new WebStoreServices(this._webStoreConfigurationServices.GetConfiguration()).CreateWebStoreChannel<IOrderService>(); service.UpdateBasket( new UpdateBasketParameters { BasketId = this._basketServices.GetBasketId().Value, UserId = new WebStoreProfileService(this._webStoreConfigurationServices).GetUser(), ProductId = productId, Quantity = quantity, CountryId = "US ", CultureName = Thread.CurrentThread.CurrentUICulture.Name, CatalogId = catalogId } ); } return new RedirectResult(this.Request.UrlReferrer.AbsoluteUri); }
public IEnumerable<Country> getCountries() { IEnumerable<Country> countries; using (WebStoreServices webStoreServices = new WebStoreServices(this._webStoreConfigurationServices.GetConfiguration())) { IProfileService service = webStoreServices.CreateWebStoreChannel<IProfileService>(); countries = service.GetCountries(new GetCountriesParameters() { CultureName = Thread.CurrentThread.CurrentUICulture.Name, MerchantId = this._webStoreConfigurationServices.GetConfiguration().MerchantId.Value }); } return countries; }