public async Task <IActionResult> Create(ProductViewModel product) { if (ModelState.IsValid) { Product p = new Product { Price = product.Price, ProductCategory = product.ProductCategory, ProductCategoryId = product.ProductCategoryId, PictureURL = product.PictureURL }; _context.Add(p); _context.SaveChanges(); ProductTranslation pt = new ProductTranslation { ProductDescription = product.ProductDescription, ProductName = product.ProductName, Language = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName, ProductId = p.ProductId }; _context.Add(pt); _context.SaveChanges(); ViewData["ProductCategoryId"] = new SelectList(_context.ProductCategories, "ProductCategoryId", "ProductCategoryName", product.ProductCategoryId); return(RedirectToAction("Index")); } return(View(product)); }
private void SeedTestDataForMultiLingualEntities() { UsingDbContext( context => { var product1 = new Product { Price = 10, Stock = 1000 }; var product2 = new Product { Price = 99, Stock = 1000 }; var product3 = new Product { Price = 15, Stock = 500 }; context.Products.Add(product1); context.Products.Add(product2); context.Products.Add(product3); context.SaveChanges(); //Product1 translations (Watch) var product1_en = new ProductTranslation { CoreId = product1.Id, Language = "en", Name = "Watch" }; var product1_tr = new ProductTranslation { CoreId = product1.Id, Language = "tr", Name = "Saat" }; context.ProductTranslations.Add(product1_en); context.ProductTranslations.Add(product1_tr); //Product2 translations (Bike) var product2_en = new ProductTranslation { CoreId = product2.Id, Language = "en", Name = "Bike" }; var product2_fr = new ProductTranslation { CoreId = product2.Id, Language = "fr", Name = "Bicyclette" }; context.ProductTranslations.Add(product2_en); context.ProductTranslations.Add(product2_fr); //Product3 translations (Newspaper) var product3_it = new ProductTranslation { CoreId = product3.Id, Language = "it", Name = "Giornale" }; context.ProductTranslations.Add(product3_it); context.SaveChanges(); }); }
public IActionResult Create([FromBody] ProductViewModel product) { Product p = new Product { Price = product.Price, ProductCategory = product.ProductCategory, ProductCategoryId = product.ProductCategoryId, PictureURL = product.PictureURL }; _context.Add(p); _context.SaveChanges(); ProductTranslation pt = new ProductTranslation { ProductDescription = product.ProductDescription, ProductName = product.ProductName, Language = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName, ProductId = p.ProductId }; _context.Add(pt); _context.SaveChanges(); return(CreatedAtRoute("Getproduct", new { id = p.ProductId }, p)); }
public bool Update(ProductTranslation productTranslation) { _productDatabaseContext.Update(productTranslation); int result = _productDatabaseContext.SaveChanges(); return(Convert.ToBoolean(result)); }
public static ProductTranslation CreateProductTranslation(string productNumber, string languageId) { ProductTranslation productTranslation = new ProductTranslation(); productTranslation.ProductNumber = productNumber; productTranslation.LanguageId = languageId; return(productTranslation); }
public bool Delete(Guid id) { ProductTranslation model = this.GetById(id); _productDatabaseContext.Remove(model); int result = _productDatabaseContext.SaveChanges(); return(Convert.ToBoolean(result)); }
private void AddEntityIfNotExists(ProductTranslation entity) { if (_context.ProductTranslations.Any(p => p.Name == entity.Name && p.Language == entity.Language)) { return; } _context.ProductTranslations.Add(entity); _context.SaveChanges(); }
public async Task <int> Update(ProductUpdateRequest request) { var product = await _context.Products.FindAsync(request.Id); if (product == null) { throw new EShopException($"Cannot find a product: {request.Id}"); } var productTranslation = await _context.ProductTranslations.FirstOrDefaultAsync(m => m.ProductId == request.Id && m.LanguageId == request.LanguageId); if (productTranslation == null) { productTranslation = new ProductTranslation { Name = request.Name, SeoAlias = request.SeoAlias, SeoDescription = request.SeoDescription, SeoTitle = request.SeoTitle, Description = request.Description, Details = request.Details, LanguageId = request.LanguageId }; product.ProductTranslations = new List <ProductTranslation> { productTranslation }; } else { productTranslation.Name = request.Name; productTranslation.SeoAlias = request.SeoAlias; productTranslation.SeoDescription = request.SeoDescription; productTranslation.SeoTitle = request.SeoTitle; productTranslation.Description = request.Description; productTranslation.Details = request.Details; } // save images if (request.ThumbnailImage != null) { var thumbnailsImage = await _context.ProductImages.FirstOrDefaultAsync(m => m.ProductId == request.Id && m.IsDefault); if (thumbnailsImage != null) { thumbnailsImage.FileSize = request.ThumbnailImage.Length; thumbnailsImage.ImagePath = await this.SaveFile(request.ThumbnailImage); _context.ProductImages.Update(thumbnailsImage); } } return(await _context.SaveChangesAsync()); }
public async Task <ApiResult <bool> > Update(ProductUpdateRequest request) { //1.find product and producttranslation var product = await _context.Products.FindAsync(request.Id); var productTranslation = await _context.ProductTranslations.FirstOrDefaultAsync(x => x.ProductId == request.Id && x.LanguageId == request.LanguageId); if (product == null && productTranslation == null) { return(new ApiErrorResult <bool>($"Không thể thìm thấy sản phẩm")); } //2.Update producttranslation if (productTranslation == null) { productTranslation = new ProductTranslation() { ProductId = request.Id, Name = request.Name, Description = request.Description, Details = request.Details, SeoAlias = request.SeoAlias, SeoTitle = request.SeoTitle, SeoDescription = request.SeoDescription, LanguageId = request.LanguageId, }; await _context.ProductTranslations.AddAsync(productTranslation); } else { productTranslation.Name = request.Name; productTranslation.Description = request.Description; productTranslation.Details = request.Details; productTranslation.SeoAlias = request.SeoAlias; productTranslation.SeoTitle = request.SeoTitle; productTranslation.SeoDescription = request.SeoDescription; _context.ProductTranslations.Update(productTranslation); } product.IsFeatured = request.isFeatured; product.Price = request.Price; product.OriginalPrice = request.Price; product.Status = request.Status; _context.Products.Update(product); //3.Save if (_context.SaveChanges() == 0) { return(new ApiErrorResult <bool>()); } return(new ApiSuccessResult <bool>()); }
public void SaveProduct() { ProductView productView = new ProductView(); CoreFaces.Product.Models.Domain.Product p = new Models.Domain.Product(); p.Name = "iphone 6"; p.StockCode = "0012"; p.Currency = Enums.Currency.TL; p.Price = 8; productView.Product = p; productView.ProductTranslationList = new List <ProductTranslation>(); ProductTranslation tr = new ProductTranslation { Language = Enums.Language.Turkish, Name = "Elma", Description = "Elma", Content = "Elma", Title = "Elma", }; ProductTranslation en = new ProductTranslation { Language = Enums.Language.English, Name = "Apple", Description = "Apple", Content = "Apple", Title = "Apple", }; productView.ProductTranslationList.Add(tr); productView.ProductTranslationList.Add(en); //Product.Models.Domain.File file = new Models.Domain.File(); //string filePath = @"C:\Users\haltunbas\Documents\GitHub\ProductV2\Product.Api\Product.Api\wwwroot\img\1.jpg"; //using (FileStream stream = System.IO.File.OpenRead(filePath)) //{ // byte[] PhotoBytes = new byte[stream.Length]; // stream.Read(PhotoBytes, 0, PhotoBytes.Length); // MemoryStream ms = new MemoryStream(PhotoBytes); // Image img = System.Drawing.Image.FromStream(ms); // file.Data = PhotoBytes; // file.Length = file.Data.Length; // file.Name = "ttt.jpg"; // file.Type = Enums.FileType.DefaultImage; // file.FileType = ".jpg"; // file.Width = img.Width; // file.Height = img.Height; //} //productView.FileList = new List<Models.Domain.File>(); //productView.FileList.Add(file); Guid insertGuid = _productService.Save(productView); bool result = Guid.TryParse(insertGuid.ToString(), out insertGuid); Assert.AreNotSame(result, false); }
public async Task <int> AddProductTranslation(int productId, AddProductTranslationRequest request) { var productTranslation = new ProductTranslation() { ProductId = productId, Name = request.Name, SeoAlias = request.SeoAlias, SeoDescription = request.SeoDescription, SeoTitle = request.SeoTitle, LanguageId = request.LanguageId, Description = request.Description, Details = request.Details }; _context.ProductTranslations.Add(productTranslation); await _context.SaveChangesAsync(); return(productTranslation.Id); }
public void ContructorFromXmlTest() { string xml = @"<?xml version='1.0' encoding='UTF-8'?> <Translation> <SKUs> <SKU> <SKUNumber>123</SKUNumber> </SKU> </SKUs> <AssetID>9999</AssetID> <SourceTitle>Men's Pants</SourceTitle> <Service>14</Service> <Language>de-de</Language> <TranslatedFields> <Title>Here's the title</Title> <Description> <ArbitraryXml1><Whoa>There</Whoa></ArbitraryXml1> <ArbitraryXml2><Whoa>There</Whoa></ArbitraryXml2> <Summary> <![CDATA[ This is a summary it can contain HTML markup. To tell the translation service to ignore some text, <b>wrap</b> it in a [do-not-translate] do not translate [/do-not-translate] tag ]]> </Summary> <Features> <Feature1>Feature 1 & Bold</Feature1> <Feature2>Feature 2</Feature2> </Features> </Description> <PrimaryCategory>123</PrimaryCategory> <SKUs> <SKU> <SKUNumber>123</SKUNumber> <ItemSpecifics> <ItemSpecific> <SourceName>Colour</SourceName> <Name>Culeur</Name> <Value>Blanc</Value> </ItemSpecific> <ItemSpecific> <SourceName>Size</SourceName> <Name>Taille</Name> <Value>Grande</Value> </ItemSpecific> </ItemSpecifics> </SKU> </SKUs> </TranslatedFields> </Translation> "; XDocument document = XDocument.Parse(xml); var translation = new ProductTranslation(document.Element("Translation")); Assert.AreEqual(Regex.Replace(@"This is a summary it can contain HTML markup. To tell the translation service to ignore some text, <b>wrap</b> it in a [do-not-translate] do not translate [/do-not-translate] tag", @"\s", ""), Regex.Replace(translation.Description.Summary, @"\s", "")); XElement[] arbitrary = new XElement[] { XElement.Parse("<ArbitraryXml1><Whoa>There</Whoa></ArbitraryXml1>"), XElement.Parse("<ArbitraryXml2><Whoa>There</Whoa></ArbitraryXml2>") }; var features = new Dictionary<String, String>() { { "Feature1", "Feature 1 & Bold" }, { "Feature2", "Feature 2" } }; for (int i = 0; i < arbitrary.Length; i++) { Assert.AreEqual(arbitrary[i].ToString(SaveOptions.None), translation.Description.ArbitraryElements[i].ToString(SaveOptions.None)); } foreach (string featureKey in features.Keys) { Assert.AreEqual(features[featureKey], translation.Description.Features[featureKey]); } Assert.AreEqual(9999, translation.AssetID); Assert.AreEqual("Here's the title", translation.Title); Assert.AreEqual("Men's Pants", translation.SourceTitle); Assert.AreEqual(123, translation.PrimaryCategory); Assert.AreEqual(14, translation.Service); Assert.AreEqual("de-de", translation.Language); Assert.AreEqual(1, translation.SourceSKUs.Length); Assert.AreEqual(1, translation.SKUs.Length); Assert.AreEqual("123", translation.SKUs.First().SKUNumber); Assert.AreEqual(2, translation.SKUs.First().ItemSpecifics.Count); Assert.AreEqual("Culeur", translation.SKUs.First().ItemSpecifics.First().Key); Assert.AreEqual("Blanc", translation.SKUs.First().ItemSpecifics.First().Value); }
public void ContructorFromXmlTest() { string xml = @"<?xml version='1.0' encoding='UTF-8'?> <Translation> <SKUs> <SKU> <SKUNumber>123</SKUNumber> </SKU> </SKUs> <AssetID>9999</AssetID> <SourceTitle>Men's Pants</SourceTitle> <Service>14</Service> <Language>de-de</Language> <TranslatedFields> <Title>Here's the title</Title> <Description> <ArbitraryXml1><Whoa>There</Whoa></ArbitraryXml1> <ArbitraryXml2><Whoa>There</Whoa></ArbitraryXml2> <Summary> <![CDATA[ This is a summary it can contain HTML markup. To tell the translation service to ignore some text, <b>wrap</b> it in a [do-not-translate] do not translate [/do-not-translate] tag ]]> </Summary> <Features> <Feature1>Feature 1 & Bold</Feature1> <Feature2>Feature 2</Feature2> </Features> </Description> <PrimaryCategory>123</PrimaryCategory> <SKUs> <SKU> <SKUNumber>123</SKUNumber> <ItemSpecifics> <ItemSpecific> <SourceName>Colour</SourceName> <Name>Culeur</Name> <Value>Blanc</Value> </ItemSpecific> <ItemSpecific> <SourceName>Size</SourceName> <Name>Taille</Name> <Value>Grande</Value> </ItemSpecific> </ItemSpecifics> </SKU> </SKUs> </TranslatedFields> </Translation> "; XDocument document = XDocument.Parse(xml); var translation = new ProductTranslation(document.Element("Translation")); Assert.AreEqual(Regex.Replace(@"This is a summary it can contain HTML markup. To tell the translation service to ignore some text, <b>wrap</b> it in a [do-not-translate] do not translate [/do-not-translate] tag", @"\s", ""), Regex.Replace(translation.Description.Summary, @"\s", "")); XElement[] arbitrary = new XElement[] { XElement.Parse("<ArbitraryXml1><Whoa>There</Whoa></ArbitraryXml1>"), XElement.Parse("<ArbitraryXml2><Whoa>There</Whoa></ArbitraryXml2>") }; var features = new Dictionary <String, String>() { { "Feature1", "Feature 1 & Bold" }, { "Feature2", "Feature 2" } }; for (int i = 0; i < arbitrary.Length; i++) { Assert.AreEqual(arbitrary[i].ToString(SaveOptions.None), translation.Description.ArbitraryElements[i].ToString(SaveOptions.None)); } foreach (string featureKey in features.Keys) { Assert.AreEqual(features[featureKey], translation.Description.Features[featureKey]); } Assert.AreEqual(9999, translation.AssetID); Assert.AreEqual("Here's the title", translation.Title); Assert.AreEqual("Men's Pants", translation.SourceTitle); Assert.AreEqual(123, translation.PrimaryCategory); Assert.AreEqual(14, translation.Service); Assert.AreEqual("de-de", translation.Language); Assert.AreEqual(1, translation.SourceSKUs.Length); Assert.AreEqual(1, translation.SKUs.Length); Assert.AreEqual("123", translation.SKUs.First().SKUNumber); Assert.AreEqual(2, translation.SKUs.First().ItemSpecifics.Count); Assert.AreEqual("Culeur", translation.SKUs.First().ItemSpecifics.First().Key); Assert.AreEqual("Blanc", translation.SKUs.First().ItemSpecifics.First().Value); }
public Guid Save(ProductTranslation productTranslation) { _productDatabaseContext.Add(productTranslation); _productDatabaseContext.SaveChanges(); return(productTranslation.Id); }
public ProductTranslation GetById(Guid id) { ProductTranslation model = _productDatabaseContext.Set <ProductTranslation>().Where(p => p.Id == id).FirstOrDefault(); return(model); }
/// <summary> /// /// </summary> public void CreateItemTest() { var rand = new Random(); var dp = new DistinctProduct(); dp.NMFCCode = ""; dp.ProductType = EcoResProductType.Item; dp.STCCCode = ""; dp.StorageDimensionGroupName = ""; dp.ProductNumber = "AGRPOC11"; dp.IsCatchWeightProduct = NoYes.No; dp.ProductDescription = ""; dp.RetailProductCategoryName = ""; dp.TrackingDimensionGroupName = "None"; dp.ProductSearchName = "AGRProf11"; dp.ProductName = dp.ProductSearchName; dp.HarmonizedSystemCode = ""; #region Released Distinct Product ReleasedDistinctProductsWriteDTO rdp = new ReleasedDistinctProductsWriteDTO(); rdp.AlternativeItemNumber = ""; rdp.AlternativeProductColorId = ""; rdp.AlternativeProductConfigurationId = ""; rdp.AlternativeProductSizeId = ""; rdp.AlternativeProductStyleId = ""; rdp.AlternativeProductUsageCondition = ItemNumAlternative.Never; rdp.ApprovedVendorCheckMethod = PdsVendorCheckItem.NoCheck; rdp.ApproximateSalesTaxPercentage = 0m; rdp.AreTransportationManagementProcessesEnabled = NoYes.No; rdp.ArrivalHandlingTime = 0; rdp.BarcodeSetupId = ""; rdp.BaseSalesPriceSource = SalesPriceModelBasic.PurchPrice; rdp.BatchMergeDateCalculationMethod = InventBatchMergeDateCalculationMethod.Manual; rdp.BatchNumberGroupCode = ""; rdp.BestBeforePeriodDays = 0; rdp.BOMUnitSymbol = ""; rdp.BuyerGroupId = ""; rdp.CarryingCostABCCode = ABC.None; rdp.CatchWeightUnitSymbol = ""; rdp.CommissionProductGroupId = ""; rdp.ComparisonPriceBaseUnitSymbol = ""; rdp.ConstantScrapQuantity = 0m; rdp.ContinuityEventDuration = 0; rdp.ContinuityScheduleId = ""; rdp.CostCalculationGroupId = ""; rdp.CostChargesQuantity = 0m; rdp.CostGroupId = ""; //rdp.DataAreaId = "usrt"; rdp.DefaultDirectDeliveryWarehouse = ""; rdp.DefaultLedgerDimensionDisplayValue = "006--"; rdp.DefaultOrderType = ReqPOType.Purch; rdp.DefaultReceivingQuantity = 0m; rdp.FixedCostCharges = 0m; rdp.FixedPurchasePriceCharges = 0m; rdp.FixedSalesPriceCharges = 0m; rdp.FlushingPrinciple = ProdFlushingPrincipItem.Start; rdp.FreightAllocationGroupId = ""; rdp.GrossDepth = 0m; rdp.GrossProductHeight = 0m; rdp.GrossProductWidth = 0m; rdp.IntrastatChargePercentage = 0m; rdp.IntrastatCommodityCode = ""; //rdp.InventoryGSTReliefCategoryCode = ""; rdp.InventoryReservationHierarchyName = ""; rdp.InventoryUnitSymbol = "EA"; rdp.IsDeliveredDirectly = NoYes.No; rdp.IsDiscountPOSRegistrationProhibited = NoYes.No; rdp.IsExemptFromAutomaticNotificationAndCancellation = NoYes.No; rdp.IsICMSTaxAppliedOnService = NoYes.No; rdp.IsInstallmentEligible = NoYes.No; rdp.IsIntercompanyPurchaseUsageBlocked = NoYes.No; rdp.IsIntercompanySalesUsageBlocked = NoYes.No; rdp.IsPhantom = NoYes.No; rdp.IsPOSRegistrationBlocked = NoYes.No; rdp.IsPOSRegistrationQuantityNegative = NoYes.No; rdp.IsPurchasePriceAutomaticallyUpdated = NoYes.No; rdp.IsPurchasePriceIncludingCharges = NoYes.No; rdp.IsPurchaseWithholdingTaxCalculated = NoYes.No; rdp.IsRestrictedForCoupons = NoYes.No; rdp.IsSalesPriceAdjustmentAllowed = NoYes.No; rdp.IsSalesPriceIncludingCharges = NoYes.No; rdp.IsSalesWithholdingTaxCalculated = NoYes.No; rdp.IsScaleProduct = NoYes.No; rdp.IsShipAloneEnabled = NoYes.No; rdp.IsUnitCostAutomaticallyUpdated = NoYes.No; rdp.IsUnitCostIncludingCharges = NoYes.No; rdp.IsVariantShelfLabelsPrintingEnabled = NoYes.No; rdp.IsZeroPricePOSRegistrationAllowed = NoYes.No; rdp.ItemFiscalClassificationCode = ""; rdp.ItemFiscalClassificationExceptionCode = ""; rdp.ItemModelGroupId = "MOV_AVG"; rdp.ItemNumber = dp.ProductNumber; rdp.KeyInPriceRequirementsAtPOSRegister = RetailPriceKeyingRequirement.NotMandatory; rdp.KeyInQuantityRequirementsAtPOSRegister = RetailQtyKeyingRequirement.NotMandatory; rdp.MarginABCCode = ABC.None; rdp.MaximumCatchWeightQuantity = 0m; rdp.MaximumPickQuantity = 0m; rdp.MinimumCatchWeightQuantity = 0m; rdp.MustKeyInCommentAtPOSRegister = NoYes.No; rdp.NecessaryProductionWorkingTimeSchedulingPropertyId = ""; rdp.NetProductWeight = 0m; rdp.NGPCode = 0; rdp.OriginCountryRegionId = ""; rdp.OriginStateId = ""; rdp.PackageClassId = ""; rdp.PackageHandlingTime = 0; rdp.PackingDutyQuantity = 0m; rdp.PackingMaterialGroupId = ""; rdp.PackSizeCategoryId = ""; rdp.PhysicalDimensionGroupId = ""; rdp.PlanningFormulaItemNumber = ""; rdp.POSRegistrationActivationDate = new DateTimeOffset(new DateTime(1900, 1, 1, 0, 0, 0)); rdp.POSRegistrationBlockedDate = new DateTimeOffset(new DateTime(1900, 1, 1, 0, 0, 0)); rdp.POSRegistrationPlannedBlockedDate = new DateTimeOffset(new DateTime(1900, 1, 1, 0, 0, 0)); rdp.PotencyBaseAttibuteTargetValue = 0m; rdp.PotencyBaseAttributeId = ""; rdp.PotencyBaseAttributeValueEntryEvent = PDSPotencyAttribRecordingEnum.PurchProdReceipt; rdp.PrimaryVendorAccountNumber = "1004"; rdp.ProductCoverageGroupId = ""; rdp.ProductFiscalInformationType = ""; rdp.ProductGroupId = "ActionSpor"; rdp.ProductionConsumptionDensityConversionFactor = 0m; rdp.ProductionConsumptionDepthConversionFactor = 0m; rdp.ProductionConsumptionHeightConversionFactor = 0m; rdp.ProductionConsumptionWidthConversionFactor = 0m; rdp.ProductionGroupId = ""; rdp.ProductionPoolId = ""; rdp.ProductionType = PmfProductType.None; rdp.ProductLifeCycleSeasonCode = ""; rdp.ProductLifeCycleValidFromDate = new DateTimeOffset(new DateTime(1900, 1, 1, 0, 0, 0)); rdp.ProductLifeCycleValidToDate = new DateTimeOffset(new DateTime(1900, 1, 1, 0, 0, 0)); rdp.ProductNumber = dp.ProductNumber; rdp.ProductTaxationOrigin = FITaxationOrigin_BR.National; rdp.ProductVolume = 0m; rdp.ProjectCategoryId = ""; rdp.PurchaseChargeProductGroupId = ""; rdp.PurchaseChargesQuantity = 0m; //rdp.PurchaseGSTReliefCategoryCode = ""; rdp.PurchaseItemWithholdingTaxGroupCode = ""; rdp.PurchaseLineDiscountProductGroupCode = ""; rdp.PurchaseMultilineDiscountProductGroupCode = ""; rdp.PurchaseOverdeliveryPercentage = 0m; rdp.PurchasePrice = 12.44m; rdp.PurchasePriceDate = new DateTimeOffset(DateTime.Now); rdp.PurchasePriceQuantity = 1m; rdp.PurchasePriceToleranceGroupId = ""; rdp.PurchasePricingPrecision = 0; rdp.PurchaseRebateProductGroupId = ""; rdp.PurchaseSalesTaxItemGroupCode = "RP"; rdp.PurchaseSupplementaryProductProductGroupId = ""; rdp.PurchaseUnderdeliveryPercentage = 0m; rdp.PurchaseUnitSymbol = "EA"; rdp.RawMaterialPickingPrinciple = WHSAllowMaterialOverPick.Staging; rdp.RevenueABCCode = ABC.None; rdp.SalesChargeProductGroupId = ""; rdp.SalesChargesQuantity = 0m; //rdp.SalesGSTReliefCategoryCode = null; // cannot insert for the given value rdp.SalesItemWithholdingTaxGroupCode = ""; rdp.SalesLineDiscountProductGroupCode = ""; rdp.SalesMultilineDiscountProductGroupCode = ""; rdp.SalesOverdeliveryPercentage = 0m; rdp.SalesPrice = 24m; rdp.SalesPriceCalculationChargesPercentage = 0m; rdp.SalesPriceCalculationContributionRatio = 0m; rdp.SalesPriceCalculationModel = SalesPriceModel.PercentMarkup; rdp.SalesPriceDate = new DateTimeOffset(DateTime.Now); rdp.SalesPriceQuantity = 1m; rdp.SalesPricingPrecision = 0; rdp.SalesRebateProductGroupId = ""; rdp.SalesSalesTaxItemGroupCode = ""; rdp.SalesSupplementaryProductProductGroupId = ""; rdp.SalesUnderdeliveryPercentage = 0m; rdp.SalesUnitSymbol = "Ea"; rdp.SearchName = dp.ProductName; rdp.SellEndDate = new DateTimeOffset(DateTime.Now.AddMonths(12)); rdp.SellStartDate = new DateTimeOffset(DateTime.Now.AddMonths(-12)); rdp.SerialNumberGroupCode = ""; rdp.ServiceFiscalInformationCode = ""; rdp.ShelfAdvicePeriodDays = 0; rdp.ShelfLifePeriodDays = 0; rdp.ShippingAndReceivingSortOrderCode = 0; rdp.ShipStartDate = new DateTimeOffset(DateTime.Now); rdp.StorageDimensionGroupName = "SiteWH"; rdp.TareProductWeight = 0m; rdp.TrackingDimensionGroupName = "None"; rdp.TransferOrderOverdeliveryPercentage = 0m; rdp.TransferOrderUnderdeliveryPercentage = 0m; rdp.UnitConversionSequenceGroupId = ""; rdp.UnitCost = 11m; rdp.UnitCostDate = new DateTimeOffset(DateTime.Now); rdp.UnitCostQuantity = 1; rdp.ValueABCCode = ABC.None; rdp.VariableScrapPercentage = 0m; rdp.VendorInvoiceLineMatchingPolicy = PurchMatchingPolicyWithNotSetOption.NotSet; rdp.WarehouseMobileDeviceDescriptionLine1 = ""; rdp.WarehouseMobileDeviceDescriptionLine2 = ""; rdp.WillInventoryIssueAutomaticallyReportAsFinished = NoYes.No; rdp.WillInventoryReceiptIgnoreFlushingPrinciple = NoYes.No; rdp.WillPickingWorkbenchApplyBoxingLogic = NoYes.No; rdp.WillTotalPurchaseDiscountCalculationIncludeProduct = NoYes.No; rdp.WillTotalSalesDiscountCalculationIncludeProduct = NoYes.No; rdp.WillWorkCenterPickingAllowNegativeInventory = NoYes.No; rdp.YieldPercentage = 0m; #endregion //ProductColorGroup var master = new ProductMasterWriteDTO(); master.AreIdenticalConfigurationsAllowed = NoYes.No; master.HarmonizedSystemCode = ""; master.IsAutomaticVariantGenerationEnabled = NoYes.Yes; master.IsCatchWeightProduct = NoYes.No; master.IsProductKit = NoYes.No; master.IsProductVariantUnitConversionEnabled = NoYes.No; //master.KPMInstructionGroupId = ""; //master.KRFColorRatioCurve = ""; //master.KRFSizeRatioCurve = ""; //master.KRFStyleRatioCurve = ""; //master.KRFUseRatioCurves = NoYes.Yes; master.NMFCCode = ""; master.ProductColorGroupId = "Basic"; master.ProductDescription = ""; //master.ProductDimensionGroupName = "CSF"; master.ProductDimensionGroupName = "SizeCol"; master.ProductName = dp.ProductName; master.ProductNumber = dp.ProductNumber; master.ProductSearchName = dp.ProductSearchName; master.ProductSizeGroupId = "10-18"; master.ProductStyleGroupId = ""; master.VariantConfigurationTechnology = EcoResVariantConfigurationTechnologyType.PredefinedVariants; master.RetailProductCategoryName = ""; master.ProductType = EcoResProductType.Item; master.STCCCode = ""; master.TrackingDimensionGroupName = "None"; master.StorageDimensionGroupName = "Ware"; var rpm = new ReleasedProductMasterWriteDTO(); rpm.TransferOrderOverdeliveryPercentage = 0; rpm.SalesUnitSymbol = "Ea"; rpm.ProductionConsumptionWidthConversionFactor = 0; //rpm.BOMLevel = 0; rpm.IsPurchasePriceAutomaticallyUpdated = NoYes.No; rpm.IsPurchaseWithholdingTaxCalculated = NoYes.No; rpm.TransferOrderUnderdeliveryPercentage = 0; rpm.IsDeliveredDirectly = NoYes.No; rpm.SalesSupplementaryProductProductGroupId = ""; rpm.SalesMultilineDiscountProductGroupCode = ""; rpm.WillTotalPurchaseDiscountCalculationIncludeProduct = NoYes.Yes; rpm.IsVariantShelfLabelsPrintingEnabled = NoYes.No; rpm.ProductionGroupId = ""; rpm.OriginStateId = ""; rpm.RevenueABCCode = ABC.None; rpm.NecessaryProductionWorkingTimeSchedulingPropertyId = ""; rpm.IntrastatCommodityCode = ""; rpm.SalesRebateProductGroupId = ""; rpm.UnitCostDate = new DateTimeOffset(new DateTime(2012, 10, 6, 12, 0, 0, 0)); rpm.DefaultProductSizeId = ""; rpm.AlternativeProductStyleId = ""; rpm.PotencyBaseAttributeId = ""; rpm.AlternativeProductUsageCondition = ItemNumAlternative.Never; rpm.PurchaseUnderdeliveryPercentage = 0; rpm.DefaultProductStyleId = ""; rpm.AlternativeProductSizeId = ""; rpm.WillInventoryIssueAutomaticallyReportAsFinished = NoYes.No; rpm.ProductVolume = 0; rpm.TareProductWeight = 0; rpm.ItemNumber = master.ProductNumber; rpm.IsPhantom = NoYes.No; rpm.DefaultProductConfigurationId = ""; rpm.FlushingPrinciple = ProdFlushingPrincipItem.Start; rpm.VariableScrapPercentage = 0; rpm.ArrivalHandlingTime = 0; rpm.SearchName = master.ProductSearchName; rpm.IsUnitCostIncludingCharges = NoYes.No; rpm.AlternativeProductColorId = ""; rpm.PhysicalDimensionGroupId = ""; rpm.MinimumCatchWeightQuantity = 0; rpm.SalesChargeProductGroupId = ""; //rpm.ProductSearchName = master.ProductSearchName; rpm.WillPickingWorkbenchApplyBoxingLogic = NoYes.No; rpm.ItemFiscalClassificationExceptionCode = ""; rpm.InventoryReservationHierarchyName = ""; rpm.IsZeroPricePOSRegistrationAllowed = NoYes.No; rpm.IntrastatChargePercentage = 0; rpm.IsScaleProduct = NoYes.No; rpm.PlanningFormulaItemNumber = ""; rpm.ProductFiscalInformationType = ""; rpm.StorageDimensionGroupName = "Ware"; rpm.ShelfAdvicePeriodDays = 0; rpm.ContinuityScheduleId = ""; rpm.VendorInvoiceLineMatchingPolicy = PurchMatchingPolicyWithNotSetOption.NotSet; //rpm.InventoryGSTReliefCategoryCode = ""; rpm.MustKeyInCommentAtPOSRegister = NoYes.No; rpm.SalesPriceQuantity = 1; rpm.ServiceFiscalInformationCode = ""; rpm.BarcodeSetupId = ""; rpm.IsUnitCostAutomaticallyUpdated = NoYes.No; rpm.PotencyBaseAttibuteTargetValue = 0; rpm.DefaultReceivingQuantity = 0; rpm.ProductionConsumptionDensityConversionFactor = 0; rpm.PurchaseItemWithholdingTaxGroupCode = ""; rpm.PurchasePricingPrecision = 0; rpm.UnitCostQuantity = 1; rpm.IsRestrictedForCoupons = NoYes.No; rpm.SellStartDate = new DateTimeOffset(new DateTime(1900, 1, 1, 12, 0, 0, 0)); rpm.SellEndDate = new DateTimeOffset(new DateTime(1900, 1, 1, 12, 0, 0, 0)); rpm.ConstantScrapQuantity = 0; rpm.BatchNumberGroupCode = ""; rpm.CostCalculationGroupId = ""; rpm.PackingDutyQuantity = 0; rpm.AlternativeProductConfigurationId = ""; rpm.SalesPrice = 19.99m; rpm.DefaultProductColorId = ""; rpm.IsSalesPriceIncludingCharges = NoYes.No; rpm.ProductionType = PmfProductType.None; rpm.WillTotalSalesDiscountCalculationIncludeProduct = NoYes.Yes; rpm.PotencyBaseAttributeValueEntryEvent = PDSPotencyAttribRecordingEnum.PurchProdReceipt; rpm.ItemModelGroupId = "MOV_AVG"; rpm.PurchaseMultilineDiscountProductGroupCode = ""; //rpm.DynamicsConnectorIntegrationKey = Guid.Empty; rpm.SalesChargesQuantity = 0; rpm.SalesPriceCalculationContributionRatio = 0; //rpm.ProductGroupId = "Apparel"; rpm.IsSalesPriceAdjustmentAllowed = NoYes.No; rpm.SalesPriceCalculationChargesPercentage = 0; rpm.ShippingAndReceivingSortOrderCode = 0; rpm.GrossProductHeight = 0; rpm.ProductLifeCycleValidFromDate = new DateTimeOffset(new DateTime(1900, 1, 1, 12, 0, 0, 0)); //rpm.PurchaseGSTReliefCategoryCode = ""; rpm.POSRegistrationPlannedBlockedDate = new DateTimeOffset(new DateTime(1900, 1, 1, 12, 0, 0, 0)); rpm.SalesItemWithholdingTaxGroupCode = ""; rpm.PurchaseLineDiscountProductGroupCode = ""; rpm.PurchasePriceDate = new DateTimeOffset(new DateTime(2012, 10, 6, 12, 0, 0, 0)); rpm.IsIntercompanyPurchaseUsageBlocked = NoYes.No; rpm.NGPCode = 0; rpm.ShelfLifePeriodDays = 0; rpm.UnitConversionSequenceGroupId = ""; rpm.ProductionConsumptionHeightConversionFactor = 0; rpm.BOMUnitSymbol = ""; rpm.MaximumCatchWeightQuantity = 0; rpm.PurchasePriceQuantity = 1; rpm.PurchasePrice = 11.994m; rpm.ProductLifeCycleSeasonCode = ""; rpm.IsDiscountPOSRegistrationProhibited = NoYes.No; rpm.ProductLifeCycleValidToDate = new DateTimeOffset(new DateTime(1900, 1, 1, 12, 0, 0, 0)); rpm.PurchaseOverdeliveryPercentage = 0; rpm.TrackingDimensionGroupName = "None"; rpm.FixedSalesPriceCharges = 0; rpm.ProductTaxationOrigin = FITaxationOrigin_BR.National; rpm.ProductionPoolId = ""; rpm.ValueABCCode = ABC.None; rpm.PurchaseUnitSymbol = "Ea"; rpm.PurchaseSupplementaryProductProductGroupId = ""; rpm.AlternativeItemNumber = ""; //rpm.SalesSalesTaxItemGroupCode = "RP"; rpm.ProductCoverageGroupId = ""; rpm.CostGroupId = ""; rpm.IsPurchasePriceIncludingCharges = NoYes.No; rpm.IsShipAloneEnabled = NoYes.No; rpm.ProductNumber = master.ProductNumber; rpm.RawMaterialPickingPrinciple = WHSAllowMaterialOverPick.Staging; rpm.FixedPurchasePriceCharges = 0; rpm.FreightAllocationGroupId = ""; rpm.ContinuityEventDuration = 0; //rpm.PurchaseSalesTaxItemGroupCode = "RP"; rpm.DefaultDirectDeliveryWarehouse = ""; //rpm.SalesGSTReliefCategoryCode = ""; rpm.SalesPriceDate = new DateTimeOffset(new DateTime(2012, 10, 6, 12, 0, 0, 0)); rpm.OriginCountryRegionId = ""; rpm.DefaultOrderType = ReqPOType.Purch; rpm.IsPOSRegistrationQuantityNegative = NoYes.No; rpm.PurchaseChargesQuantity = 0; //rpm.PrimaryVendorAccountNumber = "1004"; rpm.MaximumPickQuantity = 0; rpm.SalesUnderdeliveryPercentage = 0; rpm.IsInstallmentEligible = NoYes.No; rpm.KeyInQuantityRequirementsAtPOSRegister = RetailQtyKeyingRequirement.NotMandatory; rpm.CommissionProductGroupId = ""; rpm.IsIntercompanySalesUsageBlocked = NoYes.No; rpm.YieldPercentage = 0; rpm.BaseSalesPriceSource = SalesPriceModelBasic.PurchPrice; rpm.IsSalesWithholdingTaxCalculated = NoYes.No; rpm.ApprovedVendorCheckMethod = PdsVendorCheckItem.NoCheck; rpm.BestBeforePeriodDays = 0; rpm.GrossDepth = 0; rpm.PurchaseRebateProductGroupId = ""; rpm.PackSizeCategoryId = ""; rpm.PackageClassId = ""; rpm.FixedCostCharges = 0; rpm.UnitCost = 11.994m; rpm.SerialNumberGroupCode = ""; rpm.CarryingCostABCCode = ABC.None; rpm.SalesLineDiscountProductGroupCode = ""; rpm.IsPOSRegistrationBlocked = NoYes.No; rpm.POSRegistrationBlockedDate = new DateTimeOffset(new DateTime(1900, 1, 1, 12, 0, 0, 0));; rpm.ProjectCategoryId = ""; rpm.PurchasePriceToleranceGroupId = ""; rpm.AreTransportationManagementProcessesEnabled = NoYes.Yes; rpm.IsExemptFromAutomaticNotificationAndCancellation = NoYes.No; rpm.PackingMaterialGroupId = ""; rpm.InventoryUnitSymbol = "Ea"; rpm.ComparisonPriceBaseUnitSymbol = ""; rpm.WillWorkCenterPickingAllowNegativeInventory = NoYes.No; rpm.IsICMSTaxAppliedOnService = NoYes.No; //rpm.ProductType = EcoResProductType.Item; rpm.KeyInPriceRequirementsAtPOSRegister = RetailPriceKeyingRequirement.NotMandatory; rpm.ApproximateSalesTaxPercentage = 0; rpm.POSRegistrationActivationDate = new DateTimeOffset(new DateTime(1900, 1, 1, 12, 0, 0, 0));; rpm.WillInventoryReceiptIgnoreFlushingPrinciple = NoYes.No; rpm.NetProductWeight = 0; rpm.CostChargesQuantity = 0; rpm.BatchMergeDateCalculationMethod = InventBatchMergeDateCalculationMethod.Manual; rpm.SalesPriceCalculationModel = SalesPriceModel.None; rpm.PurchaseChargeProductGroupId = ""; rpm.SalesOverdeliveryPercentage = 0; rpm.DefaultLedgerDimensionDisplayValue = "006--"; rpm.SalesPricingPrecision = 0; rpm.MarginABCCode = ABC.None; rpm.CatchWeightUnitSymbol = ""; rpm.WarehouseMobileDeviceDescriptionLine1 = ""; rpm.WarehouseMobileDeviceDescriptionLine2 = ""; rpm.ProductionConsumptionDepthConversionFactor = 0; rpm.ItemFiscalClassificationCode = ""; rpm.PackageHandlingTime = 0; rpm.IsUnitCostProductVariantSpecific = NoYes.No; rpm.BuyerGroupId = ""; rpm.GrossProductWidth = 0; rpm.ShipStartDate = new DateTimeOffset(new DateTime(1900, 1, 1, 12, 0, 0, 0)); //var r = AXServiceConnector.CallOdataEndpointPost("ProductMasters", null, header, master).Result; var rpmr = AXServiceConnector.CallOdataEndpointPost("ReleasedProductMasters", null, header, rpm); //ReleasedProductVariantDTO v = new ReleasedProductVariantDTO(); ////v.DataAreaId = "usrt"; //v.ItemNumber = "AGRPOC_176025568"; //v.ProductColorId = "Black"; //v.ProductSizeId = "Large"; //v.ProductConfigurationId = ""; //v.ProductStyleId = ""; //v.ProductMasterNumber = "AGRPOC_176025568"; var v = new ReleasedProductVariantDTO(); //v.DataAreaId = "usrt"; v.ItemNumber = rpm.ItemNumber; v.ProductColorId = "Black"; v.ProductSizeId = "10"; v.ProductConfigurationId = ""; v.ProductStyleId = ""; v.ProductName = master.ProductName + "_" + v.ProductColorId + "_" + v.ProductSizeId; v.ProductSearchName = v.ProductName; v.ProductMasterNumber = master.ProductNumber; var pt = new ProductTranslation { LanguageId = "en-us", ProductNumber = master.ProductNumber, ProductName = master.ProductName }; var list = new List <ProductTranslation>(); list.Add(pt); var vv = new ReleasedProductVariant(); var vars = new List <ReleasedProductVariantDTO>(); vars.Add(v); var rv = AXServiceConnector.CallOdataEndpointPost("ReleasedProductVariants", null, header, v).Result; }
public Guid Save(ProductTranslation productTranslation) { _productTranslationRepository.Save(productTranslation); return(productTranslation.Id); }
public async Task<int> Update(ProductTranslation productTranslation) { return await Context.SaveChangesAsync(); }
public bool Update(ProductTranslation productTranslation) { return(_productTranslationRepository.Update(productTranslation)); }
public async Task<int> Insert(ProductTranslation productTranslation) { _productTranslationRepository.Create(productTranslation); return await Context.SaveChangesAsync(); }
public async Task <Guid?> UpdateAsync(CreateUpdateProductModel model) { var brand = catalogContext.Brands.FirstOrDefault(x => x.SellerId == model.OrganisationId.Value && x.IsActive); if (brand == null) { throw new CustomException(this.productLocalizer.GetString("BrandNotFound"), (int)HttpStatusCode.NotFound); } var category = catalogContext.Categories.FirstOrDefault(x => x.Id == model.CategoryId && x.IsActive); if (category == null) { throw new CustomException(this.productLocalizer.GetString("CategoryNotFound"), (int)HttpStatusCode.NotFound); } var product = await this.catalogContext.Products.FirstOrDefaultAsync(x => x.Id == model.Id && x.Brand.SellerId == model.OrganisationId && x.IsActive); if (product == null) { throw new CustomException(this.productLocalizer.GetString("ProductNotFound"), (int)HttpStatusCode.NotFound); } product.IsNew = model.IsNew; product.IsPublished = model.IsPublished; product.IsProtected = model.IsProtected; product.Sku = model.Sku; product.BrandId = brand.Id; product.CategoryId = category.Id; product.PrimaryProductId = model.PrimaryProductId; product.LastModifiedDate = DateTime.UtcNow; var productTranslation = await this.catalogContext.ProductTranslations.FirstOrDefaultAsync(x => x.ProductId == product.Id && x.Language == model.Language && x.IsActive); if (productTranslation != null) { productTranslation.Name = model.Name; productTranslation.Description = model.Description; productTranslation.FormData = model.FormData; } else { var newProductTranslation = new ProductTranslation { Language = model.Language, ProductId = product.Id, Name = model.Name, Description = model.Description, FormData = model.FormData }; this.catalogContext.ProductTranslations.Add(newProductTranslation.FillCommonProperties()); } var productImages = this.catalogContext.ProductImages.Where(x => x.ProductId == model.Id && x.IsActive); foreach (var productImage in productImages.OrEmptyIfNull()) { this.catalogContext.ProductImages.Remove(productImage); } foreach (var imageId in model.Images.OrEmptyIfNull()) { var productImage = new ProductImage { MediaId = imageId, ProductId = product.Id }; await this.catalogContext.ProductImages.AddAsync(productImage.FillCommonProperties()); } var productVideos = this.catalogContext.ProductVideos.Where(x => x.ProductId == model.Id && x.IsActive); foreach (var productVideo in productVideos.OrEmptyIfNull()) { this.catalogContext.ProductVideos.Remove(productVideo); } foreach (var videoId in model.Videos.OrEmptyIfNull()) { var productVideo = new ProductVideo { MediaId = videoId, ProductId = product.Id }; await this.catalogContext.ProductVideos.AddAsync(productVideo.FillCommonProperties()); } var productFiles = this.catalogContext.ProductFiles.Where(x => x.ProductId == model.Id && x.IsActive); foreach (var productFile in productFiles.OrEmptyIfNull()) { this.catalogContext.ProductFiles.Remove(productFile); } foreach (var fileId in model.Files.OrEmptyIfNull()) { var productFile = new ProductFile { MediaId = fileId, ProductId = product.Id }; await this.catalogContext.ProductFiles.AddAsync(productFile.FillCommonProperties()); } var message = new UpdatedProductIntegrationEvent { OrganisationId = model.OrganisationId, Language = model.Language, Username = model.Username, ProductId = model.Id, ProductName = model.Name, ProductSku = model.Sku }; this.eventBus.Publish(message); await this.catalogContext.SaveChangesAsync(); await this.productIndexingRepository.IndexAsync(product.Id); return(product.Id); }
public JsonResult Save(ProductViewModel model) { try { var currentUser = GetAuthenticatedUser(); if (model.translations.Count != Language.GetList().Count()) { return(Error("ترجمه های وارد شده صحیح نیست.")); } foreach (var item in model.translations) { if (string.IsNullOrEmpty(item.title)) { return(Error(string.Format("وارد کردن عنوان در زبان {0} اجباری است.", Language.GetList().Single(x => x.Id == item.languageId).PersianTitle))); } } if (model.id != null && model.id > 0) { var entity = _context.Product.Single(x => x.StatusId != ProductStatus.Deleted.Id && x.Id == model.id); if (Request.Files.Count > 0) { var file = Request.Files[0]; var contentTypes = new List <string>() { "image/x-png", "image/gif", "image/jpeg" }; if (!contentTypes.Contains(file.ContentType)) { return(Error("پسوند فایل انتخاب شده معتبر نیست.")); } if (!string.IsNullOrEmpty(entity.FileId)) { //AsefianFileContextHelper.DeleteFilePermanently(entity.FileId, entity.FileName); } var fileEntity = AsefianFileContextHelper.Save(file, currentUser.id, GetCurrentIp(), "admin", "category"); model.fileId = fileEntity.id; model.fileName = fileEntity.fileName; } else if (string.IsNullOrEmpty(model.fileId) && !string.IsNullOrEmpty(entity.FileId)) { if (!string.IsNullOrEmpty(entity.FileId)) { //AsefianFileContextHelper.DeleteFilePermanently(entity.FileId, entity.FileName); } } entity.CategoryId = model.categoryId; entity.CategoryFeatureId = model.categoryFeatureId; entity.Sku = model.translations.Single(x => x.languageId == Language.Persian.Id).title.ToStandardPersian(); entity.BrandId = model.brandId; entity.Code = model.code.ToStandardPersian(); entity.FileId = model.fileId; entity.FileName = model.fileName; entity.Price = model.price; entity.Width = model.width; entity.Height = model.height; entity.Discount = model.discount; entity.StatusId = model.statusId; entity.ModifyUserId = currentUser.id; entity.ModifyDate = GetDatetime(); entity.ModifyIp = GetCurrentIp(); model.translations.ForEach(item => { var entityItem = entity.TranslationList.SingleOrDefault(x => x.LanguageId == item.languageId); if (entityItem != null) { entityItem.Title = item.title.ToStandardPersian(); entityItem.Description = item.description?.ToStandardPersian(); } else { entityItem = new ProductTranslation() { ProductId = entity.Id, LanguageId = item.languageId, Title = item.title.ToStandardPersian(), Description = item.description?.ToStandardPersian(), Review = item.review }; _context.ProductTranslation.Add(entityItem); } }); _context.SaveChanges(); return(Success("اطلاعات محصول با موفقیت ویرایش شد.")); } else { if (Request.Files.Count > 0) { var file = Request.Files[0]; var contentTypes = new List <string>() { "image/x-png", "image/gif", "image/jpeg" }; if (!contentTypes.Contains(file.ContentType)) { return(Error("پسوند فایل انتخاب شده معتبر نیست.")); } var fileEntity = AsefianFileContextHelper.Save(file, currentUser.id, GetCurrentIp(), "admin", "category"); model.fileId = fileEntity.id; model.fileName = fileEntity.fileName; } else { model.fileId = null; model.fileName = null; } var entity = new Product() { CategoryId = model.categoryId, CategoryFeatureId = model.categoryFeatureId, Sku = model.translations.Single(x => x.languageId == Language.Persian.Id).title.ToStandardPersian(), BrandId = model.brandId, Code = model.code.ToStandardPersian(), FileId = model.fileId, FileName = model.fileName, Price = model.price, Width = model.width, Height = model.height, Discount = model.discount, StatusId = model.statusId, CreateUserId = currentUser.id, ModifyUserId = currentUser.id, CreateDate = GetDatetime(), ModifyDate = GetDatetime(), CreateIp = GetCurrentIp(), ModifyIp = GetCurrentIp() }; _context.Product.Add(entity); model.translations.ForEach(item => { var entityItem = entity.TranslationList.SingleOrDefault(x => x.LanguageId == item.languageId); if (entityItem != null) { entityItem.Title = item.title.ToStandardPersian(); entityItem.Description = item.description?.ToStandardPersian(); entityItem.Review = item.review; } else { entityItem = new ProductTranslation() { ProductId = entity.Id, LanguageId = item.languageId, Title = item.title.ToStandardPersian(), Description = item.description?.ToStandardPersian(), Review = item.review }; _context.ProductTranslation.Add(entityItem); } }); _context.SaveChanges(); return(Success("محصول با موفقیت ایجاد شد.")); } } catch (Exception ex) { return(ServerError(ex)); } }
public async Task <Guid?> CreateAsync(CreateUpdateProductModel model) { var brand = catalogContext.Brands.FirstOrDefault(x => x.SellerId == model.OrganisationId.Value && x.IsActive); if (brand == null) { throw new CustomException(this.productLocalizer.GetString("BrandNotFound"), (int)HttpStatusCode.NotFound); } var category = catalogContext.Categories.FirstOrDefault(x => x.Id == model.CategoryId && x.IsActive); if (category == null) { throw new CustomException(this.productLocalizer.GetString("CategoryNotFound"), (int)HttpStatusCode.NotFound); } var product = new Product { IsNew = model.IsNew, IsPublished = model.IsPublished, IsProtected = model.IsProtected, Sku = model.Sku, BrandId = brand.Id, CategoryId = category.Id, PrimaryProductId = model.PrimaryProductId }; await this.catalogContext.Products.AddAsync(product.FillCommonProperties()); var productTranslation = new ProductTranslation { Language = model.Language, Name = model.Name, Description = model.Description, FormData = model.FormData, ProductId = product.Id }; await this.catalogContext.ProductTranslations.AddAsync(productTranslation.FillCommonProperties()); foreach (var imageId in model.Images.OrEmptyIfNull()) { var productImage = new ProductImage { MediaId = imageId, ProductId = product.Id }; await this.catalogContext.ProductImages.AddAsync(productImage.FillCommonProperties()); } foreach (var videoId in model.Videos.OrEmptyIfNull()) { var productVideo = new ProductVideo { MediaId = videoId, ProductId = product.Id }; await this.catalogContext.ProductVideos.AddAsync(productVideo.FillCommonProperties()); } foreach (var fileId in model.Files.OrEmptyIfNull()) { var productFile = new ProductFile { MediaId = fileId, ProductId = product.Id }; await this.catalogContext.ProductFiles.AddAsync(productFile.FillCommonProperties()); } await this.catalogContext.SaveChangesAsync(); await this.productIndexingRepository.IndexAsync(product.Id); return(product.Id); }