public async Task <ActionResult <EquipmentDto> > EnhanceEquipment([FromBody] EnhanceDto dto, [FromServices] IEquipmentEnhancer equipmentEnhancer) { var userId = User.Claims.GetUserId(); if (userId == null) { return(Forbid()); } var equipment = await Context.Equipment .AsTracking() .Where(o => o.UserId == userId) .FirstOrDefaultAsync(o => o.Id == dto.Equipment.Id); if (equipment == null) { return(BadRequest()); } var particles = await Context.Items .Where(o => o.UserId == userId && o.ItemId == EmpoweredParticle.Id) .Take(equipmentEnhancer.GetCost(equipment, dto.DesiredEnhancement)) .ToListAsync(); equipmentEnhancer.Enhance(equipment, particles, dto.DesiredEnhancement); Context.RemoveRange(particles); await Context.SaveChangesAsync(); return(Ok(Mapper.Map <EquipmentDto>(equipment))); }
public async Task <ActionResult <int> > GetEnhancementCosts([FromBody] EnhanceDto dto, [FromServices] IEquipmentEnhancer equipmentEnhancer) { var userId = User.Claims.GetUserId(); if (userId == null) { return(Forbid()); } var equipment = await Context.Equipment .AsTracking() .Where(o => o.UserId == userId) .FirstOrDefaultAsync(o => o.Id == dto.Equipment.Id); if (equipment == null) { return(BadRequest()); } return(Ok(equipmentEnhancer.GetCost(equipment, dto.DesiredEnhancement))); }