public async Task <GearSize> AddAsync(GearSize gearSize, CancellationToken ct = default)
        {
            this._dbContext.GearSizes.Add(gearSize);
            await this._dbContext.SaveChangesAsync(ct);

            return(gearSize);
        }
        public async Task <bool> UpdateAsync(GearSize gearSize, CancellationToken ct = default)
        {
            if (!await this.GearSizeExists(gearSize.Id, ct))
            {
                return(false);
            }
            this._dbContext.GearSizes.Update(gearSize);
            await this._dbContext.SaveChangesAsync(ct);

            return(true);
        }
        public static GearSizeViewModel Convert(GearSize gearSize)
        {
            GearSizeViewModel gearSizeViewModel = new GearSizeViewModel();

            gearSizeViewModel.Available = gearSize.Available;
            gearSizeViewModel.Color     = gearSize.Color;
            gearSizeViewModel.Id        = gearSize.Id;
            gearSizeViewModel.Size      = gearSize.Size;

            return(gearSizeViewModel);
        }
        public async Task <bool> DeleteAsync(long?id, CancellationToken ct = default)
        {
            if (!await GearSizeExists(id, ct))
            {
                return(false);
            }

            GearSize gearSizeToDelete = this._dbContext.GearSizes.Find(id);

            this._dbContext.GearSizes.Remove(gearSizeToDelete);
            await this._dbContext.SaveChangesAsync(ct);

            return(true);
        }
        public async Task <bool> UpdateGearSizeAsync(GearSizeViewModel gearSizeViewModel, CancellationToken ct = default)
        {
            GearSize gearSize = await _gearSizeRepository.GetByIDAsync(gearSizeViewModel.Id, ct);

            if (gearSize == null)
            {
                return(false);
            }

            gearSize.Available = gearSizeViewModel.Available;
            gearSize.Color     = gearSizeViewModel.Color;
            gearSize.Size      = gearSizeViewModel.Size;

            return(await this._gearSizeRepository.UpdateAsync(gearSize, ct));
        }
        public async Task <GearSizeViewModel> AddGearSizeAsync(GearSizeViewModel gearSizeViewModel, CancellationToken ct = default)
        {
            GearSize newGearSizeForItem = new GearSize()
            {
                GearItemId = gearSizeViewModel.GearItemId,
                Available  = gearSizeViewModel.Available,
                Size       = gearSizeViewModel.Size,
                Color      = gearSizeViewModel.Color
            };

            newGearSizeForItem = await _gearSizeRepository.AddAsync(newGearSizeForItem, ct);

            gearSizeViewModel.Id = newGearSizeForItem.Id;

            return(gearSizeViewModel);
        }