コード例 #1
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,AttributeId,Position,Value")] AttributeOption attributeOption)
        {
            if (id != attributeOption.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(attributeOption);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!AttributeOptionExists(attributeOption.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(attributeOption));
        }
コード例 #2
0
        private static void SaveOptions(EditAttribute editAttribute, int attributeID)
        {
            var curList = AttributeOptions.GetByAttributeID(attributeID);

            foreach (var option in editAttribute.Options)
            {
                if (!curList.Any(item => item.ID == option.ID))
                {
                    var attributeOption = new AttributeOption();

                    attributeOption.AttributeID = attributeID;
                    attributeOption.Title       = option.Title;

                    AttributeOptions.Insert(attributeOption);
                }
                else
                {
                    var item = curList.Single(cls => cls.ID == option.ID);

                    curList.Remove(item);

                    item.Title   = option.Title;
                    item.OrderID = option.OrderID;

                    AttributeOptions.Update(item);
                }
            }

            foreach (var item in curList)
            {
                AttributeOptions.Delete(item.ID);
            }
        }
コード例 #3
0
 public bool isValidOption(AttributeOption option)
 {
     if (option.Equals(AttributeOption.AnyValue))
     {
         return(true);
     }
     return(checkIsValidOption(option));
 }
コード例 #4
0
        public override bool checkIsValidOption(AttributeOption option)
        {
            AssertionConcerns.AssertArgumentCanBeDouble(option.Value,
                                                        $"{Reasons.UNPARSEABLE}: Value is not parseable as double {option}");

            var val = Double.Parse(option.Value);

            return(val >= MinValue && val <= MaxValue);
        }
コード例 #5
0
 public ProductAttributeWithContinousValue(string name, AttributeOption valueIsAny) : base(name)
 {
     AssertionConcerns.AssertArgumentIs <AttributeOption>(valueIsAny, AttributeOption.AnyValue,
                                                          $"{Reasons.UNEXPECTED_VALUE}: Value can only be ANY cannot be anything else");
     AttributeOptions = new List <AttributeOption>()
     {
         valueIsAny
     };
 }
コード例 #6
0
 public ProductAttributeWithContinousValue(string name, AttributeOption minValue, AttributeOption maxValue) : base(name)
 {
     AssertionConcerns.AssertArgumentCanBeDouble(minValue.Value,
                                                 $"{Reasons.UNPARSEABLE}: Value is not parseable as double {minValue}");
     AssertionConcerns.AssertArgumentCanBeDouble(maxValue.Value,
                                                 $"{Reasons.UNPARSEABLE}: Value is not parseable as double {maxValue}");
     AttributeOptions = new List <AttributeOption>()
     {
         minValue, maxValue
     };
 }
コード例 #7
0
        public async Task <IActionResult> Create([Bind("Id,AttributeId,Position,Value")] AttributeOption attributeOption)
        {
            if (ModelState.IsValid)
            {
                _context.Add(attributeOption);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(attributeOption));
        }
コード例 #8
0
 public static KeyValuePair <string, List <ProductValue> > CreateSimpleValue(this AttributeOption option, string locale = null, string scope = null)
 {
     return(new KeyValuePair <string, List <ProductValue> >(option.Attribute, new List <ProductValue>
     {
         new ProductValue
         {
             Locale = locale,
             Data = option.Code,
             Scope = scope
         }
     }));
 }
コード例 #9
0
 private ImageItemDetails ToImageItemDetails(AttributeOption ao, ImageFile img)
 {
     return(new ImageItemDetails()
     {
         ImageID = img.ImageID,
         FileName = img.ThumbnailImageData("l16to9").FileName,
         Caption = img.Caption,
         Name = img.Name,
         SecondaryName = ao.Name,
         SeriesList = ao.SeriesOptionAttributes.Select(s => new ImageItemDetails.ImageSeries()
         {
             SeriesID = s.SeriesID,
             Name = s.Series.Name,
         }).ToList(),
         HiResFileName = img.OriginalImage
     });
 }
コード例 #10
0
 public ActionResult AddAttribute(string key)
 {
     if (key == Keyapi)
     {
         var countAttr = Request["CountAttr"];
         var productId = Request["productId"];
         var lstAttr   = new List <AttributeOption>();
         var lstInt    = new List <int>();
         for (var i = 1; i <= int.Parse(countAttr); i++)
         {
             var attrId = Request["AttrId_" + i];
             var item   = new AttributeOption
             {
                 //ProductID = int.Parse(productId),
                 AttributeID = int.Parse(Request["AttrValue_" + i]),
                 Values      = Request["Attribute_" + i],
                 CreatedDate = DateTime.Now
             };
             if (!string.IsNullOrEmpty(attrId))
             {
                 item.ID = int.Parse(attrId);
                 lstInt.Add(int.Parse(attrId));
                 lstAttr.Add(item);
             }
             else
             {
                 _attributesDa.Add(item);
             }
         }
         var lst = _attributesDa.GetAttrValue(lstInt);
         foreach (var it in lst)
         {
             var newitem = lstAttr.FirstOrDefault(c => c.ID == it.ID);
             if (newitem != null)
             {
                 it.Values = newitem.Values;
             }
         }
         _attributesDa.Save();
         return(Json(1, JsonRequestBehavior.AllowGet));
     }
     return(Json(0, JsonRequestBehavior.AllowGet));
 }
コード例 #11
0
 public abstract bool checkIsValidOption(AttributeOption option);
コード例 #12
0
        public void ImportFileData(Stream fStream, int fileLength)
        {
            var csvReader = new CsvReader(new StreamReader(fStream), true);

            DeleteAllObjects("[SeriesOptionAttributes]");
            DeleteAllObjects("[SeriesTextAttributes]");
            DeleteAllObjects("[SeriesIntAttributes]");
            DeleteAllObjects("[AttributeOptions]");
            DeleteAllObjects("[Attributes]");
            DeleteAllObjects("[SeriesImageFiles]");
            DeleteAllObjects("[RelatedSeries]");
            DeleteAllObjects("[SeriesTypicals]");
            DeleteAllObjects("[ImageFileSerieses]");
            DeleteAllObjects("[Serieses]");
            DeleteAllObjects("[Categories]");

            Dictionary <int, string> mapRelatedSeries = new Dictionary <int, string>();

            while (csvReader.ReadNextRecord())
            {
                if (!csvReader["Series Name"].Any())
                {
                    continue;
                }

                Series sData = new Series();
                sData.CreatedDate = DateTime.Now;
                sData.IsActive    = true;

                string        relatedSeries  = "";
                List <string> arrKeywordList = new List <string>();

                foreach (var header in csvReader.GetFieldHeaders())
                {
                    string val = csvReader[header];
                    switch (header.ToLower())
                    {
                    case "combo":
                    case "image-1":
                    case "image-2":
                    case "image-3":
                        // fields to skip
                        break;

                    case "category":
                    {
                        var cat = database.Categories.FirstOrDefault(c => c.Name == val);
                        if (cat == null)
                        {
                            cat      = new Category();
                            cat.Name = val;
                            database.Categories.Add(cat);
                        }
                        sData.Category = cat;
                    }
                    break;

                    case "series name":
                        sData.Name = val;
                        break;

                    case "active":
                    case "status":
                        switch (val.ToLower())
                        {
                        case "active":
                        case "yes":
                        case "true":
                        case "1":
                            sData.IsActive = true;
                            break;

                        default:
                            sData.IsActive = false;
                            break;
                        }
                        break;

                    case "value statement headline":
                    case "marketing statement subheadline":
                    case "marketing description":
                    {
                        var attData = database.Attributes.FirstOrDefault(a => a.Name == header);
                        if (attData == null)
                        {
                            attData      = new PDWDBContext.Attribute(false);
                            attData.Name = header;
                            database.Attributes.Add(attData);
                        }

                        var attForSeries = new SeriesTextAttribute();
                        attForSeries.Attribute = attData;
                        attForSeries.Value     = val ?? "";
                        attForSeries.Series    = sData;
                        database.SeriesTextAttributes.Add(attForSeries);
                    }
                    break;

                    case "image - featured":
                    case "image":
                        if ((val ?? "").Any())
                        {
                            var values       = val.Split(',');
                            int displayOrder = 1;
                            foreach (var indVal in values.Select(s => s.Trim()))
                            {
                                var img = database.ImageFiles.FirstOrDefault(i => i.Name == indVal);
                                if (img != null)
                                {
                                    SeriesImageFile sif = new SeriesImageFile();
                                    sif.IsFeatured   = (header.ToLower() == "image - featured");
                                    sif.ImageFile    = img;
                                    sif.Series       = sData;
                                    sif.DisplayOrder = sif.IsFeatured ? 0 : displayOrder;
                                    database.SeriesImageFiles.Add(sif);

                                    displayOrder++;
                                }
                            }
                        }
                        break;

                    case "winning assortment":
                        if ((val ?? "").Any())
                        {
                            var attData = database.Attributes.FirstOrDefault(a => a.Name == "ranking");
                            if (attData == null)
                            {
                                attData      = new PDWDBContext.Attribute(false);
                                attData.Name = "Ranking";
                                database.Attributes.Add(attData);
                            }

                            var attForSeries = new SeriesIntAttribute();
                            attForSeries.Attribute = attData;
                            attForSeries.Value     = val.ToLower() == "yes" ? 2 : 1;
                            attForSeries.Series    = sData;
                            database.SeriesIntAttributes.Add(attForSeries);
                        }
                        break;

                    case "related series":
                        if ((val ?? "").Any())
                        {
                            relatedSeries = val;
                        }
                        break;

                    case "price list":
                    case "product technical spec sheet":
                    case "spec guide":
                    case "gsa spec sheet":
                    case "installation guide":
                    case "eds sheet":
                    case "leed sheet":
                    case "control guide":
                    case "brochure file name":
                    case "keywords":
                    case "in2 price list":
                    case "interactive price list":
                    case "government price list":
                        if ((val ?? "").Any())
                        {
                            var attData = database.Attributes.FirstOrDefault(a => a.Name == header);
                            if (attData == null)
                            {
                                attData      = new PDWDBContext.Attribute(false);
                                attData.Name = header;
                                database.Attributes.Add(attData);
                            }

                            var attForSeries = new SeriesTextAttribute();
                            attForSeries.Attribute = attData;
                            attForSeries.Value     = val;
                            attForSeries.Series    = sData;
                            database.SeriesTextAttributes.Add(attForSeries);
                        }
                        break;

                    case "pricing range":
                        if ((val ?? "").Any())
                        {
                            var attData = database.Attributes.FirstOrDefault(a => a.Name == header);
                            if (attData == null)
                            {
                                attData      = new PDWDBContext.Attribute(false);
                                attData.Name = header;
                                database.Attributes.Add(attData);
                            }

                            var attForSeries = new SeriesTextAttribute();
                            attForSeries.Attribute = attData;
                            attForSeries.Value     = val;
                            attForSeries.Series    = sData;
                            database.SeriesTextAttributes.Add(attForSeries);

                            var startingPrice = string.Join("", val.Where(c => Char.IsDigit(c)));
                            int price         = 0;
                            if (startingPrice.Any() && int.TryParse(startingPrice, out price))
                            {
                                var priceData = database.Attributes.FirstOrDefault(a => a.Name == "Starting Price");
                                if (priceData == null)
                                {
                                    priceData      = new PDWDBContext.Attribute(false);
                                    priceData.Name = "Starting Price";
                                    database.Attributes.Add(priceData);
                                }

                                var priceForSeries = new SeriesIntAttribute();
                                priceForSeries.Attribute = priceData;
                                priceForSeries.Value     = price;
                                priceForSeries.Series    = sData;
                                database.SeriesIntAttributes.Add(priceForSeries);
                            }
                        }
                        break;

                    case "claires 5 favorites":
                        if ((val ?? "").Any())
                        {
                            var attData = database.Attributes.FirstOrDefault(a => a.Name == header);
                            if (attData == null)
                            {
                                attData      = new PDWDBContext.Attribute(true);
                                attData.Name = header;
                                database.Attributes.Add(attData);
                            }
                            var values = val.Split('\r', '\n');
                            foreach (var indVal in values.Select(s => s.Trim()))
                            {
                                if (indVal.Length > 0)
                                {
                                    var optVal = attData.AttributeOptions.FirstOrDefault(ao => ao.Name == indVal);
                                    if (optVal == null)
                                    {
                                        if (indVal.Length > 500)
                                        {
                                            throw new Exception(string.Format("Cannot add option value {0} for {1}", indVal, header));
                                        }
                                        optVal      = new AttributeOption();
                                        optVal.Name = indVal;
                                        database.AttributeOptions.Add(optVal);
                                        attData.AttributeOptions.Add(optVal);
                                    }

                                    var attForSeries = new SeriesOptionAttribute();
                                    attForSeries.Attribute       = attData;
                                    attForSeries.AttributeOption = optVal;
                                    attForSeries.Series          = sData;
                                    database.SeriesOptionAttributes.Add(attForSeries);
                                }
                            }
                        }
                        break;

                    default:
                        if ((val ?? "").Any())
                        {
                            var attData = database.Attributes.FirstOrDefault(a => a.Name == header);
                            if (attData == null)
                            {
                                attData      = new PDWDBContext.Attribute(true);
                                attData.Name = header;
                                database.Attributes.Add(attData);
                            }
                            var values = val.Split(',');
                            foreach (var indVal in values.Select(s => s.Trim()).Where(s => s.Any()))
                            {
                                var optVal = attData.AttributeOptions.FirstOrDefault(ao => ao.Name == indVal);
                                if (optVal == null)
                                {
                                    if (indVal.Length > 500)
                                    {
                                        throw new Exception(string.Format("Cannot add option value {0} for {1}", indVal, header));
                                    }
                                    optVal      = new AttributeOption();
                                    optVal.Name = indVal;
                                    database.AttributeOptions.Add(optVal);
                                    attData.AttributeOptions.Add(optVal);
                                }

                                var attForSeries = new SeriesOptionAttribute();
                                attForSeries.Attribute       = attData;
                                attForSeries.AttributeOption = optVal;
                                attForSeries.Series          = sData;
                                database.SeriesOptionAttributes.Add(attForSeries);
                            }
                        }
                        break;
                    }

                    switch (header.ToLower())
                    {
                    case "series name":
                    case "category":
                    case "style":
                    case "value statement headline":
                    case "marketing statement subheadline":
                    case "claire 5 favorites":
                    case "iaq":
                    case "finish":
                    case "drawer options - configuration":
                    case "edge options - profile":
                    case "pull options - style":
                    case "seating option - back":
                    case "shape":
                    case "casegood application":
                    case "table application":
                    case "seating application":
                    case "keywords":
                        arrKeywordList.Add(val.ToLower());
                        break;
                    }
                }

                sData.DBKeywords = SearchText.GetKeywordList(arrKeywordList);

                database.Serieses.Add(sData);
                database.SaveChanges();
                database.Entry(sData).Reload();

                if (relatedSeries.Any())
                {
                    mapRelatedSeries.Add(sData.SeriesID, relatedSeries);
                }
            }

            foreach (int seriesId in mapRelatedSeries.Keys)
            {
                var parentSeries = database.Serieses.FirstOrDefault(s => s.SeriesID == seriesId);
                if (parentSeries != null)
                {
                    var otherSeries = mapRelatedSeries[seriesId].Split(',');
                    foreach (var seriesName in otherSeries.Select(o => o.Trim()))
                    {
                        var rSeries = database.Serieses.FirstOrDefault(s => s.Name == seriesName);
                        if (rSeries != null)
                        {
                            rSeries.ParentSerieses.Add(parentSeries);
                        }
                        else
                        {
                            Debug.WriteLine(format: "Unable to find series: {0}", args: seriesName);
                        }
                    }
                }
            }

            foreach (var tData in database.Typicals)
            {
                var rSeries = database.Serieses.FirstOrDefault(s => s.Name == tData.FeaturedSeries);
                if (rSeries != null)
                {
                    SeriesTypical stData = new SeriesTypical();
                    stData.IsPrimary = true;
                    stData.Series    = rSeries;
                    stData.Typical   = tData;
                    database.SeriesTypicals.Add(stData);

                    tData.FeaturedSeries = rSeries.Name;
                }

                if (tData.SeriesList != null)
                {
                    foreach (var indVal in tData.SeriesList.Split(',').Select(s => s.Trim()))
                    {
                        var oSeries = database.Serieses.FirstOrDefault(s => s.Name == indVal);
                        if (oSeries != null)
                        {
                            SeriesTypical stData = new SeriesTypical();
                            stData.IsPrimary = false;
                            stData.Series    = oSeries;
                            stData.Typical   = tData;
                            database.SeriesTypicals.Add(stData);
                        }
                    }
                }
                tData.SeriesList = string.Join(", ", tData.SeriesTypicals.Where(st => !st.IsPrimary).Select(st => st.Series.Name));

                tData.DBKeywords = SearchText.GetKeywordList(new List <string>()
                {
                    tData.Name, tData.FeaturedSeries, tData.Notes, tData.SeriesList
                });
            }

            foreach (var imgData in database.ImageFiles)
            {
                var rSeries = database.Serieses.FirstOrDefault(s => s.Name == imgData.FeaturedSeries);
                if (rSeries != null)
                {
                    ImageFileSeries stData = new ImageFileSeries();
                    stData.IsFeatured = true;
                    stData.Series     = rSeries;
                    stData.ImageFile  = imgData;
                    database.ImageFileSerieses.Add(stData);

                    imgData.FeaturedSeries = rSeries.Name;
                }

                if (imgData.SeriesList != null)
                {
                    foreach (var indVal in imgData.SeriesList.Split(',').Select(s => s.Trim()))
                    {
                        var oSeries = database.Serieses.FirstOrDefault(s => s.Name == indVal);
                        if (oSeries != null)
                        {
                            ImageFileSeries stData = new ImageFileSeries();
                            stData.IsFeatured = false;
                            stData.Series     = oSeries;
                            stData.ImageFile  = imgData;
                            database.ImageFileSerieses.Add(stData);
                        }
                    }
                }
                imgData.SeriesList = string.Join(", ", imgData.ImageFileSerieses.Where(st => !st.IsFeatured).Select(st => st.Series.Name));

                imgData.DBKeywords = SearchText.GetKeywordList(new List <string>()
                {
                    imgData.Name, imgData.Caption, imgData.Keyword, imgData.FeaturedSeries, imgData.SeriesList
                });
            }

            database.SaveChanges();
        }
コード例 #13
0
 public void Add(AttributeOption item)
 {
     FDIDB.AttributeOptions.Add(item);
 }
コード例 #14
0
 public override bool checkIsValidOption(AttributeOption option)
 {
     return(AttributeOptions.Contains(option));
 }