public BoxSizeWizardViewModel(StyleItemDTO styleItem)
        {
            Id    = styleItem.StyleItemId;
            Size  = styleItem.Size;
            Color = styleItem.Color;

            SizeId        = styleItem.SizeId;
            SizeGroupId   = styleItem.SizeGroupId;
            SizeGroupName = styleItem.SizeGroupName;

            UseBoxQuantity = !styleItem.Quantity.HasValue;
        }
 private bool ToUpdate(StyleItemDTO styleItem, int totalCounting)
 {
     if (!styleItem.LiteCountingProcessed)
     {
         if (styleItem.LiteCountingStatus == CountingStatusesEx.Counted ||
             styleItem.LiteCountingStatus == CountingStatusesEx.Verified)
         {
             if (Math.Abs((styleItem.RemainingQuantity ?? 0) - totalCounting) <= 5 ||
                 styleItem.ApproveStatus == 1)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
        public StyleItemViewModel(StyleItemDTO styleItem)
        {
            Id     = styleItem.StyleItemId;
            Size   = styleItem.Size;
            Color  = styleItem.Color;
            Weight = styleItem.Weight;


            Barcodes = styleItem.Barcodes;

            SizeId        = styleItem.SizeId;
            SizeGroupId   = styleItem.SizeGroupId;
            SizeGroupName = styleItem.SizeGroupName;

            PackageHeight = styleItem.PackageHeight;
            PackageWidth  = styleItem.PackageWidth;
            PackageLength = styleItem.PackageLength;
        }
        private IList <StyleItemToLinkedItem> RebuildStyleItems(IUnitOfWork db, Style style, IList <StyleReferenceDTO> linkedStyles)
        {
            var linkedStyleIds = linkedStyles.Select(l => l.LinkedStyleId).ToList();
            var allStyleItems  = db.StyleItems.GetAllAsDto()
                                 .Where(s => linkedStyleIds.Contains(s.StyleId))
                                 .ToList();
            var dbExistStyleItems = db.StyleItems.GetAllAsDto().Where(s => s.StyleId == style.Id).ToList();

            var firstLinkedStyleId    = linkedStyles.First().LinkedStyleId;
            var firstLinkedStyleItems = allStyleItems.Where(si => si.StyleId == firstLinkedStyleId).ToList();

            var sizeMappings = db.SizeMappings.GetAllAsDto().ToList();

            var results = new List <StyleItemToLinkedItem>();

            //var sizeMappings =
            foreach (var styleItem in firstLinkedStyleItems)
            {
                var sameSizeStyleItems = new List <StyleItemDTO>();
                foreach (var styleId in linkedStyleIds)
                {
                    var styleItemForSize = allStyleItems.FirstOrDefault(s => s.StyleId == styleId &&
                                                                        (s.Size == styleItem.Size ||
                                                                         s.Size == "[empty]" ||
                                                                         s.Size == "OneSize")); //NOTE: add empty size as link to all

                    if (styleItemForSize == null)
                    {
                        var mappingsForSize = sizeMappings.Where(s => s.StyleSize == styleItem.Size).Select(s => s.ItemSize);
                        styleItemForSize = allStyleItems.FirstOrDefault(s => s.StyleId == styleId &&
                                                                        mappingsForSize.Contains(s.Size));
                    }

                    if (styleItemForSize != null)
                    {
                        sameSizeStyleItems.Add(styleItemForSize);
                    }
                }

                //NOTE: lets add size only if all linked styles have that size
                if (linkedStyleIds.All(st => sameSizeStyleItems.Any(si => si.StyleId == st)))
                {
                    var existStyleItem = dbExistStyleItems.FirstOrDefault(si => si.Size == styleItem.Size);
                    if (existStyleItem == null)
                    {
                        existStyleItem = new StyleItemDTO();
                    }

                    existStyleItem.StyleId = style.Id;
                    existStyleItem.Size    = styleItem.Size;
                    existStyleItem.SizeId  = styleItem.SizeId;
                    //NOTE: Only if all items has weight
                    existStyleItem.Weight = sameSizeStyleItems.Any(s => !s.Weight.HasValue)
                        ? null
                        : sameSizeStyleItems.Sum(si => si.Weight);

                    var item = new StyleItemToLinkedItem()
                    {
                        StyleItem        = existStyleItem,
                        LinkedStyleItems = linkedStyleIds.Select(s => new StyleItemDTO()
                        {
                            StyleId     = s,
                            StyleItemId = sameSizeStyleItems.FirstOrDefault(si => si.StyleId == s)?.StyleItemId ?? 0
                        }).ToList()
                    };

                    results.Add(item);
                }
            }

            return(results);
        }