Example #1
0
        public static TMogSet FromSet(Entities.Set set)
        {
            var slotMan = new SlotManager(set.Slots);
            var tmogSet = Mapper.Map <TMogSet>(set);

            tmogSet.Slots = set.Items
                            .GroupBy(i => i.Slot)
                            .OrderBy(i => slotMan.IsComplete(i.Key))
                            .ThenBy(i => i.Key.ToString())
                            .Select(i => new Slot
            {
                Name     = i.Key.ToString(),
                Items    = Mapper.Map <IEnumerable <Item> >(i),
                Complete = slotMan.IsComplete(i.Key)
            });

            return(tmogSet);
        }
        public IActionResult ImportRebrickableSet(string setNumber)
        {
            //get set from rebrickable
            //confirm that it does not exist in our database
            //create new set in our db (mapping)
            //include all parts

            if (_setInfoRepository.SetExists(setNumber))
            {
                return(BadRequest($"setNumber {setNumber} already exists"));
            }

            var sourceSet = _rebrickableInfoRepository.GetSet(setNumber);

            if (sourceSet == null)
            {
                if (!setNumber.EndsWith("-1"))
                {
                    setNumber = setNumber + "-1";
                    sourceSet = _rebrickableInfoRepository.GetSet(setNumber);
                }

                if (sourceSet == null)
                {
                    return(NotFound());
                }
            }

            var s = new Entities.Set()
            {
                SetNumber   = sourceSet.SetNumber,
                Name        = sourceSet.Name,
                ThemeId     = sourceSet.ThemeId,
                Theme       = GetThemePath(sourceSet.ThemeId),
                SetImageUrl = sourceSet.SetImageUrl.AbsoluteUri
            };

            var sourceSetParts = _rebrickableInfoRepository.GetSetParts(setNumber);

            foreach (var sourceSetPart in sourceSetParts)
            {
                var sp = new Entities.SetPart()
                {
                    Id             = sourceSetPart.Id,
                    PartNumber     = sourceSetPart.Part.PartNum,
                    Name           = sourceSetPart.Part.Name,
                    PartUrl        = sourceSetPart.Part.PartUrl,
                    PartImageUrl   = sourceSetPart.Part.PartImgUrl,
                    Color          = sourceSetPart.Color.Name,
                    QuantityNeeded = sourceSetPart.Quantity,
                    ElementId      = sourceSetPart.ElementId,
                    CategoryId     = sourceSetPart.Part.PartCatId
                };

                s.Parts.Add(sp);
            }

            _setInfoRepository.AddSet(s);
            _setInfoRepository.Save();

            var setToReturn = _setInfoRepository.GetSetDetail(setNumber);

            var results = Mapper.Map <SetDto>(setToReturn);

            return(Ok(setToReturn));
        }