Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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)));
        }