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();
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 4
0
        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);
        }