Beispiel #1
0
        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));
        }
Beispiel #2
0
        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));
        }
Beispiel #7
0
        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());
        }
Beispiel #9
0
        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&apos;s Pants</SourceTitle>
                    <Service>14</Service>
                    <Language>de-de</Language>
                    <TranslatedFields>
                        <Title>Here&apos;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 &amp; 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);
        }
Beispiel #13
0
        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&apos;s Pants</SourceTitle>
                    <Service>14</Service>
                    <Language>de-de</Language>
                    <TranslatedFields>
                        <Title>Here&apos;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 &amp; 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);
        }
Beispiel #16
0
        /// <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);
 }
Beispiel #18
0
 public async Task<int> Update(ProductTranslation productTranslation)
 {
     return await Context.SaveChangesAsync();
 }
 public bool Update(ProductTranslation productTranslation)
 {
     return(_productTranslationRepository.Update(productTranslation));
 }
Beispiel #20
0
 public async Task<int> Insert(ProductTranslation productTranslation)
 {
     _productTranslationRepository.Create(productTranslation);
     return await Context.SaveChangesAsync();
 }
Beispiel #21
0
        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);
        }
Beispiel #22
0
        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));
            }
        }
Beispiel #23
0
        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);
        }