public async Task <ActionResult <FighterConfigurationDto> > GetFighterConfiguration(Guid id) { var userId = User.Claims.GetUserId(); if (userId == null) { return(Forbid()); } var fighter = await Context.Fighters .Where(o => o.UserId == userId) .FirstOrDefaultAsync(o => o.Id == id); if (fighter == null) { return(BadRequest()); } var config = await Context.FighterConfigurations .ProjectTo <FighterConfigurationDto>(Mapper.ConfigurationProvider) .FirstOrDefaultAsync(o => o.FighterId == id); if (config == null) { config = new FighterConfigurationDto() { FighterId = id, }; } return(Ok(config)); }
public async Task <ActionResult <FighterConfigurationDto> > UpdateFighterConfiguration(Guid id, [FromBody] FighterConfigurationDto dto) { var userId = User.Claims.GetUserId(); if (userId == null) { return(Forbid()); } if (id != dto.FighterId) { return(BadRequest()); } var fighter = await Context.Fighters .Where(o => o.UserId == userId) .FirstOrDefaultAsync(o => o.Id == id); if (fighter == null) { return(BadRequest()); } var config = await Context.FighterConfigurations .AsTracking() .FirstOrDefaultAsync(o => o.FighterId == id); if (config == null) { config = new FighterConfiguration(); Context.FighterConfigurations.Add(config); } if (config.AttunementId != dto.AttunementId) { var particles = await Context.Items .Where(o => o.UserId == userId) .Where(o => o.ItemId == EmpoweredParticle.Id) .Take(5000) .ToListAsync(); if (particles.Count != 5000) { return(BadRequest()); } Context.RemoveRange(particles); } Mapper.Map(dto, config); await Context.SaveChangesAsync(); return(Ok(Mapper.Map <FighterConfigurationDto>(config))); }