public async Task CreateUser(RegisterDto registerDto) { User user = new User() { FullName = registerDto.FullName, Email = registerDto.Username, Password = _hashingManager.GetHashedPassword(registerDto.Password), Username = registerDto.Username, }; await CheckUserFields(user, false); //user.Password = _hashingManager.GetHashedPassword(user.Password); user.Email = user.Username; user.IsActivated = false; user.WasPasswordForgotten = false; user.WasPasswordChanged = false; user.AvatarPath = Constants.DEFAULT_IMAGE_USER; var token = _jwtService.GenerateRegisterJWT(user); await _emailSenderService.SendActivationEmail(user, token); user.RoleId = (int)RoleType.Regular; await _context.AddAsync(user); await _context.AddAsync(CreateEntityUser(user, registerDto.Role)); await _context.SaveChangesAsync(); }
public async Task CreatePower(PowerDto powerDto) { await CheckPowerFields(powerDto); Power newPower = new Power { Name = powerDto.Name, Details = powerDto.Details, Strength = powerDto.Strength, MainTrait = powerDto.MainTrait, ElementId = powerDto.ElementId }; await _context.AddAsync(newPower); await _context.SaveChangesAsync(); }
public async Task CreateHero(HeroDto heroDto) { await CheckHeroFields(heroDto); Hero newHero = new Hero { Name = heroDto.Name, }; newHero.TypeId = heroDto.TypeId; newHero.Powers = await CreateHeroPowers(heroDto, newHero); newHero.Allies = await CreateHeroAllies(heroDto, newHero); newHero.AvatarPath = Constants.DEFAULT_IMAGE_HERO; newHero.OverallStrength = newHero.Powers.Aggregate(0, (acc, power) => acc += power.Power.Strength); Power mainPower = await _context.Powers.FirstOrDefaultAsync(power => power.Id == heroDto.MainPower.Id); newHero.MainPower = mainPower == null ? null : new HeroPower { Hero = newHero, Power = mainPower, Strength = mainPower.Strength }; newHero.OverallStrength += newHero.MainPower == null ? 0 : newHero.MainPower.Power.Strength; newHero.Latitude = heroDto.Latitude; newHero.Longitude = heroDto.Longitude; if (!string.IsNullOrEmpty(heroDto.Email)) { var user = ConvertHeroToUser(heroDto); await _userService.CreateHeroUser(user); newHero.User = user; } await _context.AddAsync(newHero); await _context.SaveChangesAsync(); }
public async Task <BattleDto> CreateBattle(int initiatorId, int opponentId) { var initiator = await _heroService.FindById(initiatorId); var opponent = await _heroService.FindById(opponentId); var diff = DateTime.Now.Subtract(initiator.LastTimeMoved); if (diff.TotalMinutes < _appSettings.MinutesToWait) { var remainingSeconds = 300 - Math.Floor(diff.TotalSeconds); throw new InvalidTravel($"You still need to wait {remainingSeconds} seconds"); } Battle newBattle = new Battle { InitiatorId = initiatorId, Latitude = opponent.Latitude, Longitude = opponent.Longitude }; _context.Heroes.Update(initiator); await _context.SaveChangesAsync(); var participants = await _heroService.GetHeroesInRange(opponentId); var heroInitiator = participants.FirstOrDefault(participant => participant.Id == initiatorId); if (heroInitiator == null) { participants.Add(initiator); } newBattle.Heroes = CreateHeroBattles(participants, newBattle); await _context.AddAsync(newBattle); await _context.SaveChangesAsync(); BattleDto battleDto = new BattleDto { Id = newBattle.Id, InitiatorId = newBattle.InitiatorId, OpponentId = opponentId, Latitude = newBattle.Latitude, Longitude = newBattle.Longitude }; var participantsList = participants.ToList(); participantsList.ForEach(participant => participant.Badges = null); participantsList.ForEach(participant => participant.Battles = null); battleDto.Heroes = GetHeroesOfBattle(newBattle); battleDto.Villains = GetVillainsOfBattle(newBattle); battleDto.HeroesStrength = battleDto.Heroes.Sum(v => v.OverallStrength); battleDto.VillainsStrength = battleDto.Villains.Sum(v => v.OverallStrength); return(battleDto); }