public override async Task <int> UpdateModel(int Id, SizeRange Model)
        {
            int updated = await this.UpdateAsync(Id, Model);

            HashSet <int> relatedSizes = new HashSet <int>(this.RelatedSizeService.DbSet
                                                           .Where(p => p.SizeRangeId.Equals(Id))
                                                           .Select(p => p.Id));

            foreach (int relatedSize in relatedSizes)
            {
                RelatedSize rs = Model.RelatedSizes.FirstOrDefault(prop => prop.Id.Equals(relatedSize));

                if (rs == null)
                {
                    await this.RelatedSizeService.DeleteModel(relatedSize);
                }
            }

            foreach (RelatedSize relatedSize in Model.RelatedSizes)
            {
                if (relatedSize.Id.Equals(0))
                {
                    await this.RelatedSizeService.CreateModel(relatedSize);
                }
            }

            return(updated);
        }
        public SizeRange MapToModel(SizeRangeViewModel viewModel)
        {
            SizeRange model = new SizeRange();

            model.RelatedSizes = new List <RelatedSize>();
            PropertyCopier <SizeRangeViewModel, SizeRange> .Copy(viewModel, model);

            foreach (RelatedSizeViewModel relatedSizeVM in viewModel.RelatedSizes)
            {
                RelatedSize relatedSize = new RelatedSize();
                PropertyCopier <RelatedSizeViewModel, RelatedSize> .Copy(relatedSizeVM, relatedSize);

                relatedSize.SizeId = relatedSizeVM.Size.Id;
                model.RelatedSizes.Add(relatedSize);
            }
            return(model);
        }
        public Task <RelatedSize> GetTestRelatedSize(int id)
        {
            RelatedSize testRelatedSize = RelatedSizeService.DbSet.FirstOrDefault(rs => rs.Code == "Test");

            if (testRelatedSize != null)
            {
                return(Task.FromResult(testRelatedSize));
            }
            else
            {
                testRelatedSize = new RelatedSize()
                {
                    Code   = "Test",
                    SizeId = id
                };
                RelatedSizeService.Create(testRelatedSize);
                return(RelatedSizeService.GetAsync(testRelatedSize.Id));
            }
        }