/// <summary> /// Logins the submit action. /// </summary> /// <param name="parameter">The parameter.</param> public void LoginSubmitAction(object parameter) { var passwordBox = parameter as System.Windows.Controls.PasswordBox; if (passwordBox != null) { var password = passwordBox.Password; var requestparameter = new LoginRequest() { UserName = _userName, Password = password }; var request = new HttpRequestRemote(ApiUrl.Current.LoginUrl, requestparameter); var response = request.PostResponse(); if (response == null) { UiAction.ModalShow("Net request fail"); } else if (response.status == 1) { var setting = _configService.GetSettingByUserName(_userName); setting.Accesstoken = response.detail.accesstoken; setting.VendorName = response.detail.vendorname; setting.UserName = UserName; setting.AutoLogin = _autologin; setting.UpdateTime = DateTime.Now; var lanviewmodel = ServiceLocator.Current.GetInstance<ConfigViewModel>(); setting.Culture = lanviewmodel.LanguageSelectItem.CultureInfo.Name; _configService.UpdateSetting(setting); AppLocator.Contenxt = setting; if (null != CompleteCommand) CompleteCommand(); } else { UiAction.ModalShow(response.detail.message.ToString()); } } }
/// <summary> /// Handles the AllProduct event of the Sync control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="RoutedEventArgs"/> instance containing the event data.</param> private void Sync_AllProduct(object sender, RoutedEventArgs e) { var synctask = new Task(() => { var itemindex = 0; var currentpage = 0; var requestparameter = new AllProductRequest() { Accesstoken = AppLocator.Contenxt.Accesstoken, PageIndex = currentpage }; var request = new HttpRequestRemote(ApiUrl.Current.AllProductUrl, requestparameter); var response = request.PostResponse<AllProductResponse>(); if (null == response) { this.Dispatcher.Invoke(() => UiAction.ModalShow("Net request fail")); return; } _productViewModel.ProgressValue = 0; _productViewModel.ProgressVisible = Visibility.Visible; var itemcount = response.detail.TotalCount; var totalpage = 2; if (response.status == 1) { ServerToLoalProduct(response.detail.ExportProductModels, itemcount, ref itemindex); } ++currentpage; if (totalpage > 1 && currentpage < totalpage) { for (int i = currentpage; i < totalpage; i++) { requestparameter = new AllProductRequest() { Accesstoken = AppLocator.Contenxt.Accesstoken, PageIndex = currentpage }; request = new HttpRequestRemote(ApiUrl.Current.AllProductUrl, requestparameter); response = request.PostResponse<AllProductResponse>(); if (null != response && response.status == 1) { ServerToLoalProduct(response.detail.ExportProductModels, itemcount, ref itemindex); } ++currentpage; } } var products = _productService.GetAllProducts(); this.Dispatcher.Invoke(() => _productViewModel.UpdateObservProduct(products)); _productViewModel.ProgressVisible = Visibility.Collapsed; }); synctask.Start(); }
/// <summary> /// Hots the start action. /// </summary> public void HotStartAction() { _configViewModel.Init(); var request = new HttpRequestRemote(ApiUrl.Current.HotStartUrl, null); request.PostResponse(); }
/// <summary> /// Loads the category. /// </summary> public void PrepareStart() { var request = new HttpRequestRemote(ApiUrl.Current.PrepareStartUrl, String.Empty); var response = request.PostResponse<PrepareStartResponse>(); IList<CategoryItem> categoryItems = null; if (response != null && response.status == 1) { categoryItems = response.detail.CategoryItems; SpecificationAttributes = new ObservableCollection<SpeAttriubute>(response.detail.SpecificationAttribute); AppLocator.Contenxt.CategoryItems = JsonConvert.SerializeObject(categoryItems); AppLocator.Contenxt.SpecificationAttributes = JsonConvert.SerializeObject(response.detail.SpecificationAttribute); _configService.UpdateSetting(AppLocator.Contenxt); } else { SpecificationAttributes = new ObservableCollection<SpeAttriubute>( JsonConvert.DeserializeObject<IList<SpeAttriubute>>(AppLocator.Contenxt.SpecificationAttributes)); categoryItems = JsonConvert.DeserializeObject<IList<CategoryItem>>(AppLocator.Contenxt.CategoryItems); } var treeitems = PreparedTreeItems(categoryItems); CategoryItems = new ObservableCollection<TreeItem>(treeitems); var treeviewitems = PreparedTreeViewItem(categoryItems); var root = new TreeViewItem(); root.Header = LocalizationSearch.LocalizedDependency(root, HeaderedItemsControl.HeaderProperty, "Product_CategoryManager"); foreach (var tvi in treeviewitems) { root.Items.Add(tvi); } var rootlist = new List<TreeViewItem>(); rootlist.Add(root); TreeViewItems = new ObservableCollection<TreeViewItem>(rootlist); }
/// <summary> /// Products the upload. /// </summary> /// <param name="entity">The entity.</param> /// <returns></returns> public bool ProductSync(ProductModel entity) { var requestparameter = new FetchProductRequest() { Accesstoken = AppLocator.Contenxt.Accesstoken, ProductId = entity.ServiceId }; var request = new HttpRequestRemote(ApiUrl.Current.FetchProductUrl, requestparameter); var response = request.PostResponse<FetchProductResponse>(); if (response.status != 1) return false; FetchProductTempToProductModel(response.detail, entity); return true; }
/// <summary> /// Fetches the product temporary to product model. /// </summary> /// <param name="server">The server.</param> /// <param name="local">The local.</param> public void FetchProductTempToProductModel(FetchProductTemp server, ProductModel local) { local.ServiceId = server.ServerId; local.ProductName = server.ProductName; local.USwopid = server.USwopid; local.MerchantProductNumber = server.MerchantProductNumber; local.Sku = server.Sku; local.Gtin = server.Gtin; local.Descript = server.Descript; local.CategoryName = server.CategoryName; local.CategoryId = server.CategoryId; local.Price = server.Price; local.AvailableQuantity = JsonConvert.SerializeObject(server.AvailableQuantity); local.SpecificationAttribute = JsonConvert.SerializeObject(server.SpecificationAttribute); local.Status = Status.SyncSuccess; var attribute = GetProductAttributeNamesbyName(server.SizeName); local.ProductInventoryAttributeNameModel = attribute; Save(); var localimages = local.ProductImages; var serviceimages = server.ExportProductImages; var removeimgs = new List<ProductImage>(); // clear local image foreach (var limg in localimages) { var serviceimage = serviceimages.FirstOrDefault(s => s.ServiceId == limg.ServerId); if (null == serviceimage) { removeimgs.Add(limg); } } foreach (var rimg in removeimgs) { DeleteProductImage(rimg); } localimages = local.ProductImages.ToList(); //Add new image foreach (var serviceimage in serviceimages) { var localimage = localimages.FirstOrDefault(l => l.ServerId == serviceimage.ServiceId); if (null != localimage) continue; var imgrequest = new HttpRequestRemote(serviceimage.PictureUrl, serviceimage.PictureUrl); var imgfilepath = imgrequest.GetFile(); if (String.IsNullOrEmpty(imgfilepath)) continue; local.ProductImages.Add(new ProductImage() { ServerId = serviceimage.ServiceId, Path = imgfilepath }); } if (local.ProductImages.Count != serviceimages.Count) { local.Status = Status.SyncFail; local.ErrorMsg = "Some Image Download Fail"; } Save(); }
/// <summary> /// Images the upload. /// </summary> /// <param name="productImages">The product images.</param> /// <returns></returns> public ImageUploadResponse ImageUpload(IList<ProductImage> productImages) { var request = new HttpRequestRemote(ApiUrl.Current.ImageUrl, productImages); var response = request.PostFileResponse<ImageUploadResponse>(); if (null == response || 0 == response.status) return response; foreach (var map in response.detail) { var localimg = productImages.FirstOrDefault(pi => Path.GetFileName(pi.Path) == map.FilaName); if (null != localimg) { localimg.ServerId = map.PictureId; } } Save(); return response; }
/// <summary> /// Products the upload. /// </summary> /// <param name="entity">The entity.</param> /// <returns></returns> public ProductResponse ProductUpload(ProductModel entity) { var setting = AppLocator.Contenxt; var requestparameter = new ProductRequest() { Accesstoken = setting.Accesstoken, ProductName = entity.ProductName, MerchantProductNumber = entity.MerchantProductNumber, CategoryId = entity.CategoryId, Price = entity.Price, Descript = entity.Descript, Gtin = entity.Gtin, Sku = entity.Sku, UswopId=entity.USwopid }; if (!String.IsNullOrEmpty(entity.AvailableQuantity)) requestparameter.AvailableQuantity = JsonConvert.DeserializeObject<IList<PropertyItem>>(entity.AvailableQuantity); if (null != entity.ProductInventoryAttributeNameModel) requestparameter.SizeCategory = entity.ProductInventoryAttributeNameModel.Name; if (!String.IsNullOrEmpty(entity.SpecificationAttribute)) requestparameter.SpecificationAttributes = JsonConvert.DeserializeObject<IList<SpeAttriItem>>(entity.SpecificationAttribute); var images = GetProductImageByProdutId(entity.Id); var imgsresponse = ImageUpload(images); var imageuploadstatus = true; if (null == imgsresponse || imgsresponse.status == 0) { imageuploadstatus = false; //image upload fail entity.Status = Status.UploadFail; entity.ErrorMsg = "Image upload fail"; } requestparameter.Images = String.Join(",", entity.ProductImages.Where(pi => pi.ServerId != 0).Select(pi => pi.ServerId)); var request = new HttpRequestRemote(ApiUrl.Current.EditProductUrl, requestparameter); var response = request.PostResponse<ProductResponse>(); if (response == null || response.status == 0) { Save(); return new ProductResponse() { status = 400 }; } if (response.status == 1 && response.detail.code == 1) { if (imageuploadstatus) entity.Status = Status.UploadSuccess; entity.USwopid = response.detail.USwopid; entity.ServiceId = response.detail.ServiceId; Save(); } else { entity.Status = Status.UploadFail; entity.ErrorMsg = string.Join("\r\n", response.detail.ErrorMsgList); Save(); } return response; }