public async Task <ActionResult <IEnumerable <ItemDto> > > SalvageInventory([FromServices] IEquipmentSalvager equipmentSalvager)
        {
            var userId = User.Claims.GetUserId();

            if (userId == null)
            {
                return(Forbid());
            }

            var equipment = await Context.Equipment
                            .Include(o => o.Option)
                            .Where(o => o.FighterId == null && o.UserId == userId)
                            .Where(o => o.Option == null || !o.Option.IsFavorite)
                            .ToListAsync();

            var items = new List <Item>();

            foreach (var equip in equipment)
            {
                items.AddRange(equipmentSalvager.Salvage(equip, userId.Value).ToList());
                Context.Remove(equip);
            }

            Context.AddRange(items);
            await Context.SaveChangesAsync();

            return(Ok(Mapper.Map <IEnumerable <ItemDto> >(items)));
        }
 public SeasonSalvageRewardProvider(IEquipmentSalvager equipmentSalvager)
 {
     this.equipmentSalvager = equipmentSalvager;
 }
        public async Task <ActionResult <IEnumerable <ItemDto> > > SalvageEquipment([FromBody] EquipmentDto dto, [FromServices] IEquipmentSalvager equipmentSalvager)
        {
            var userId = User.Claims.GetUserId();

            if (userId == null)
            {
                return(Forbid());
            }

            var equipment = await Context.Equipment
                            .Where(o => o.UserId == userId)
                            .FirstOrDefaultAsync(o => o.Id == dto.Id);

            if (equipment == null)
            {
                return(BadRequest());
            }

            var items = equipmentSalvager.Salvage(equipment, userId.Value).ToList();

            Context.Remove(equipment);
            Context.AddRange(items);
            await Context.SaveChangesAsync();

            return(Ok(Mapper.Map <IEnumerable <ItemDto> >(items)));
        }