public StoreItemDisplay CreateNewStoreItem(StoreItemDisplay storeItem) { try { var dc = new ManagementContext(); var merchant = dc.Merchants.Where(x => x.InternalReference == storeItem.InternalId && x.MerchantId == storeItem.MerchantId && x.PrivateManagerId == storeItem.PrivateManagerId).FirstOrDefault(); if (merchant != null) { DataModels.Store.StoreItem si = new DataModels.Store.StoreItem(); si.ArticleNumber = storeItem.ArticleNumber; si.CanRunOutOfStock = storeItem.CanRunOutOfStock; si.CanPickUpLocally = storeItem.CanPickUpLocally; si.Description = storeItem.Description; si.ExemptFromShipping = false; si.Merchant = merchant; si.Name = storeItem.Name; si.Note = storeItem.Note; si.Price = storeItem.Price; si.QuantityInStock = storeItem.QuantityInStock; si.VisibleOnRdn = false; si.Weight = storeItem.Weight; si.ShippingCosts = storeItem.Shipping; si.IsPublished = false; //si.ItemTypeEnum = storeItem.ItemTypeEnum; si.ItemTypeEnum = (int)storeItem.ItemType; si.Category = dc.StoreItemCategories.Where(x => x.StoreItemCategoryId == si.ItemTypeEnum).FirstOrDefault(); if (storeItem.HasExtraLarge) si.SizesEnum += Convert.ToInt32(StoreItemShirtSizesEnum.X_Large); if (storeItem.HasExtraSmall) si.SizesEnum += Convert.ToInt32(StoreItemShirtSizesEnum.X_Small); if (storeItem.HasLarge) si.SizesEnum += Convert.ToInt32(StoreItemShirtSizesEnum.Large); if (storeItem.HasMedium) si.SizesEnum += Convert.ToInt32(StoreItemShirtSizesEnum.Medium); if (storeItem.HasSmall) si.SizesEnum += Convert.ToInt32(StoreItemShirtSizesEnum.Small); if (storeItem.HasXXLarge) si.SizesEnum += Convert.ToInt32(StoreItemShirtSizesEnum.XX_Large); if (!String.IsNullOrEmpty(storeItem.ColorTempSelected)) { foreach (string color in storeItem.ColorTempSelected.Split(';')) { if (color.Length > 3) { Color c = ColorTranslator.FromHtml(color); int arb = c.ToArgb(); var colorDb = dc.Colors.Where(x => x.ColorIdCSharp == arb).FirstOrDefault(); if (colorDb != null) { DataModels.Store.StoreItemColor cItem = new DataModels.Store.StoreItemColor(); cItem.Color = colorDb; cItem.StoreItem = si; si.Colors.Add(cItem); } } } } dc.StoreItems.Add(si); dc.SaveChanges(); storeItem.StoreItemId = si.StoreItemId; } } catch (Exception exception) { ErrorDatabaseManager.AddException(exception, exception.GetType()); } return storeItem; }
public StoreItemDisplay UpdateStoreItem(StoreItemDisplay storeItem) { try { var dc = new ManagementContext(); var si = dc.StoreItems.Include("Colors").Include("Colors.Color").Where(x => x.StoreItemId == storeItem.StoreItemId && x.Merchant.InternalReference == storeItem.InternalId && x.Merchant.MerchantId == storeItem.MerchantId && x.Merchant.PrivateManagerId == storeItem.PrivateManagerId).FirstOrDefault(); if (si != null) { si.CanPickUpLocally = storeItem.CanPickUpLocally; si.Merchant = si.Merchant; si.ArticleNumber = storeItem.ArticleNumber; si.CanRunOutOfStock = storeItem.CanRunOutOfStock; si.Description = storeItem.Description; si.ExemptFromShipping = false; si.Name = storeItem.Name; si.Note = storeItem.Note; si.Price = storeItem.Price; si.QuantityInStock = storeItem.QuantityInStock; si.VisibleOnRdn = false; si.Weight = storeItem.Weight; si.ShippingCosts = storeItem.Shipping; si.ShippingCostsAdditional = storeItem.ShippingAdditional; si.Category = dc.StoreItemCategories.Where(x => x.StoreItemCategoryId == storeItem.ItemTypeEnum).FirstOrDefault(); //they are just now publishing the item. if (!si.IsPublished && storeItem.IsPublished) { AddRDNationFeeToMerchant(si); si.LastPublished = DateTime.UtcNow; } si.IsPublished = storeItem.IsPublished; si.ItemTypeEnum = storeItem.ItemTypeEnum; si.SizesEnum = 0; if (storeItem.HasExtraLarge) si.SizesEnum += Convert.ToInt32(StoreItemShirtSizesEnum.X_Large); if (storeItem.HasExtraSmall) si.SizesEnum += Convert.ToInt32(StoreItemShirtSizesEnum.X_Small); if (storeItem.HasLarge) si.SizesEnum += Convert.ToInt32(StoreItemShirtSizesEnum.Large); if (storeItem.HasMedium) si.SizesEnum += Convert.ToInt32(StoreItemShirtSizesEnum.Medium); if (storeItem.HasSmall) si.SizesEnum += Convert.ToInt32(StoreItemShirtSizesEnum.Small); if (storeItem.HasXXLarge) si.SizesEnum += Convert.ToInt32(StoreItemShirtSizesEnum.XX_Large); //removes any colors not being used anymore. List<int> colors = new List<int>(); if (!String.IsNullOrEmpty(storeItem.ColorTempSelected)) { foreach (string color in storeItem.ColorTempSelected.Split(';')) { if (color.Length > 3) { Color c = ColorTranslator.FromHtml(color); int arb = c.ToArgb(); colors.Add(arb); } } } var colorsNoLongerIn = si.Colors.Where(x => !colors.Contains(x.Color.ColorIdCSharp)).ToList(); foreach (var removeColor in colorsNoLongerIn) { si.Colors.Remove(removeColor); } //adds colors that are not currently added to the storeitem. if (!String.IsNullOrEmpty(storeItem.ColorTempSelected)) { foreach (string color in storeItem.ColorTempSelected.Split(';')) { if (color.Length > 3) { Color c = ColorTranslator.FromHtml(color); int arb = c.ToArgb(); if (si.Colors.Where(x => x.Color.ColorIdCSharp == arb).FirstOrDefault() == null) { var colorDb = dc.Colors.Where(x => x.ColorIdCSharp == arb).FirstOrDefault(); if (colorDb != null) { DataModels.Store.StoreItemColor cItem = new DataModels.Store.StoreItemColor(); cItem.Color = colorDb; cItem.StoreItem = si; si.Colors.Add(cItem); } } } } } int ch = dc.SaveChanges(); storeItem.StoreItemId = si.StoreItemId; } } catch (System.Exception e) { var ex = e; ErrorDatabaseManager.AddException(ex, ex.GetType()); } return storeItem; }