Пример #1
0
        public async Task <Participation> CreateRedeemParticipationToken(string tinyTokenId, string userId)
        {
            var token = await _db.ParticipationTokens
                        .FirstOrDefaultAsync(s => s.TinyTokenId == tinyTokenId);

            if (token == null)
            {
                throw new NoMatchFoundException("Invalid Token");
            }

            if (DateTime.Compare(token.ExpirationDate, DateTime.UtcNow) < 0)
            {
                throw new SecurityTokenExpiredException("Token is expired");
            }

            var participation = new Participation()
            {
                ParticipationTokenId = token.Id,
                UserId = userId
            };

            //Add new participation entry
            await _db.Participation.AddAsync(participation);

            //Get the token
            var participationToken = await _db.ParticipationTokens.FirstOrDefaultAsync(s => s.Id == token.Id);

            //Decrement remaining uses
            participationToken.UsesRemaining = participationToken.UsesRemaining - 1;

            await _db.SaveChangesAsync();

            return(participation);
        }
Пример #2
0
        public async Task <IActionResult> UpdateResourcePrices([FromBody] List <Resource> resources)
        {
            foreach (var resource in resources)
            {
                _db.Entry(resource).State = EntityState.Modified;
            }

            await _db.SaveChangesAsync();

            return(Ok(resources));
        }
Пример #3
0
        private static async Task GetPlanetInformation()
        {
            var solarSystemIds = await _db.Systems.Select(s => s.EveOnlineId).ToListAsync();

            var dbPlanets = await _db.Planets.ToListAsync();

            foreach (var solarSystemId in solarSystemIds)
            {
                try
                {
                    var solarSystem = await
                                      $"https://esi.evetech.net/latest/universe/systems/{solarSystemId}/?datasource=tranquility&language=en-us"
                                      .GetJsonAsync <ViewModels.System>();

                    Console.WriteLine($"Getting information from {solarSystem.Name}");
                    foreach (var planetBase in solarSystem.Planets)
                    {
                        try
                        {
                            var planet = await $"https://esi.evetech.net/latest/universe/planets/{planetBase.PlanetId}/?datasource=tranquility"
                                         .GetJsonAsync <ViewModels.Planet>();

                            Console.WriteLine($"Updating {planet.Name}");
                            var dbPlanet = dbPlanets.FirstOrDefault(x => x.Name.Contains(planet.Name));

                            if (dbPlanet == null)
                            {
                                continue;
                            }

                            dbPlanet.EveOnlineTypeId  = planet.TypeId;
                            dbPlanet.EveOnlineId      = planet.PlanetId;
                            _db.Entry(dbPlanet).State = EntityState.Modified;
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }
            }

            await _db.SaveChangesAsync();
        }
Пример #4
0
        public async Task <BuybackRequest> CreateBuyBackRequest(List <ResourceOrder> resources, int pilotId)
        {
            double total   = 0;
            var    taxList = await _db.Taxes.ToDictionaryAsync(x => x.Id, y => y.SellTax);

            double taxPercent = 0;

            foreach (var resource in resources)
            {
                var dbResource = await _db.Resources.FirstOrDefaultAsync(s => s.Id == resource.ResourceId);

                int taxId = dbResource.TaxId ?? 0;
                if (taxId != 0 && taxList.ContainsKey(taxId))
                {
                    taxPercent = taxList[taxId] ?? 0;
                }

                if (dbResource == null)
                {
                    continue;
                }

                total += resource.Quantity * dbResource.Price * ((float)(100 - taxPercent) / 100);
            }

            var pilot = await _db.PilotNames.FirstOrDefaultAsync(s => s.Id == pilotId);

            var order = new BuybackRequest()
            {
                Pilot      = pilot,
                Resources  = resources,
                TotalPrice = total
            };

            var savedOrder = await _db.BuyBackRequests.AddAsync(order);

            await _db.SaveChangesAsync();


            return(order);
        }
Пример #5
0
        public async Task <IActionResult> UpdateProfile([FromBody] UserViewModel user)
        {
            var raidUser = await _userManager.Users.Include(s => s.PilotNames)
                           .SingleOrDefaultAsync(s => s.Id == user.Id.ToString());

            if (!string.IsNullOrEmpty(user.DiscordUser))
            {
                raidUser.DiscordUser = user.DiscordUser;
            }

            if (raidUser == null)
            {
                return(NotFound());
            }

            foreach (var pilotName in raidUser.PilotNames)
            {
                if (user.PilotNames.Select(s => s.Name).Contains(pilotName.Name))
                {
                    continue;
                }

                _db.PilotNames.Remove(pilotName);
            }

            foreach (var pilotName in user.PilotNames)
            {
                if (raidUser.PilotNames.Select(s => s.Name).Contains(pilotName.Name))
                {
                    continue;
                }

                await _db.PilotNames.AddAsync(new PilotName()
                {
                    User = raidUser,
                    Name = pilotName.Name
                });
            }

            await _db.SaveChangesAsync();

            return(Ok(_mapper.Map <UserViewModel>(raidUser)));
        }
Пример #6
0
        private static async Task UpdateOrCreatePlanetResources(List <PlanetInfoCsv> planetInfo)
        {
            var planetGroups = planetInfo.GroupBy(g => g.PlanetId);

            foreach (var resouceList in planetGroups.Select(s => s.ToList()))
            {
                try
                {
                    var planetBase = resouceList.FirstOrDefault(p => !string.IsNullOrEmpty(p.Region) && !string.IsNullOrEmpty(p.Constellation) && !string.IsNullOrEmpty(p.System) && !string.IsNullOrEmpty(p.PlanetName));

                    if (planetBase == null)
                    {
                        continue;
                    }

                    Console.WriteLine($"Adding planet {planetBase.PlanetName}");

                    var region = await _db.Regions.FirstOrDefaultAsync(r =>
                                                                       r.Name == planetBase.Region);

                    if (region == null)
                    {
                        region = new Region()
                        {
                            Name = planetBase.Region
                        };
                        await _db.Regions.AddAsync(region);

                        await _db.SaveChangesAsync();
                    }

                    var constellation = await _db.Constellations.FirstOrDefaultAsync(c =>
                                                                                     c.Name == planetBase.Constellation);

                    if (constellation == null)
                    {
                        constellation = new Constellation()
                        {
                            Name   = planetBase.Constellation,
                            Region = region
                        };
                        await _db.Constellations.AddAsync(constellation);

                        await _db.SaveChangesAsync();
                    }

                    var system = await _db.Systems.FirstOrDefaultAsync(c =>
                                                                       c.Name == planetBase.System);

                    if (system == null)
                    {
                        system = new UniverseSystem()
                        {
                            Name          = planetBase.System,
                            Constellation = constellation
                        };
                        await _db.Systems.AddAsync(system);

                        await _db.SaveChangesAsync();
                    }

                    var planet = await _db.Planets.FirstOrDefaultAsync(p => p.Id == planetBase.PlanetId);

                    Enum.TryParse(planetBase.PlanetType.RemoveWhitespace(), out PlanetTypes planetEnum);


                    if (planet == null)
                    {
                        planet = new Planet()
                        {
                            Name   = planetBase.PlanetName,
                            Id     = planetBase.PlanetId,
                            Type   = planetEnum,
                            System = system,
                        };
                        await _db.Planets.AddAsync(planet);

                        await _db.SaveChangesAsync();
                    }

                    planet.Resources = new List <PlanetResource>();
                    foreach (var resource in resouceList)
                    {
                        Enum.TryParse(resource.Resource.RemoveWhitespace(), out PlanetResourceTypes resourceEnum);

                        Enum.TryParse(resource.Richness.RemoveWhitespace(), out ResourceRichnessTypes richnessEnum);
                        var dbResource = new PlanetResource()
                        {
                            Planet   = planet,
                            Output   = Double.Parse(resource.Output),
                            Type     = resourceEnum,
                            Richness = richnessEnum
                        };

                        await _db.PlanetResources.AddAsync(dbResource);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    throw;
                }
            }

            await _db.SaveChangesAsync();
        }