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 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))); }
public async Task ProvideAsync(DatabaseContext context, SeasonSummary summary) { var equipment = await context.Equipment .Where(o => o.UserId == summary.UserId) .AsTracking() .ToListAsync(); var salvageItems = new List <Item>(); foreach (var equip in equipment) { salvageItems.AddRange(equipmentSalvager.Salvage(equip, summary.UserId).Where(o => !EquipmentToken.Tokens.Contains(o.ItemId))); } summary.SalvageValue = salvageItems.Count; var alreadyTracked = context.ChangeTracker.Entries <Equipment>().Where(o => equipment.Any(e => e.Id == o.Entity.Id)).ToList(); context.RemoveRange(equipment); context.AddRange(salvageItems); }