public async Task <IActionResult> Edit(string id, [Bind("Id,_1,_X,_2,_1X,_X2,_12")] Type type) { if (id != type.Id) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(type); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!TypesExists(type.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(type)); }
public async Task PostAdd(string First, string Second, decimal _1, decimal _X, decimal _2, decimal _1X, decimal _X2, decimal _12, string league, bool topMatch, string time) { var dateNow = DateTime.Now; var hour = time.Split(":"); var type = new Type(); type._1 = _1; type._X = _X; type._2 = _2; type._1X = _1X; type._X2 = _X2; type._12 = _12; await _context.Type.AddAsync(type); await _context.SaveChangesAsync(); var firstTeam = await _context.Team.Include(l => l.League).Where(f => f.Name == First).FirstOrDefaultAsync(); var secondTeam = await _context.Team.Include(l => l.League).Where(f => f.Name == Second).FirstOrDefaultAsync(); var leagueTeam = await _context.League.Include(s => s.Sport).Where(l => l.Name == league).FirstOrDefaultAsync(); var match = new Match(); match.HomeTeam = firstTeam; match.AwayTeam = secondTeam; match.Type = type; match.TopMatch = topMatch; match.Sport = leagueTeam.Sport; match.Time = new DateTime(dateNow.Year, dateNow.Month, dateNow.Day, Int32.Parse(hour[0]), Int32.Parse(hour[1]), 00); await _context.Match.AddAsync(match); await _context.SaveChangesAsync(); }
public async Task <IActionResult> Create([Bind("Id,_1,_X,_2,_1X,_X2,_12")] Type type) { if (ModelState.IsValid) { _context.Add(type); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(type)); }
public async Task GetOffer() { using (var scope = _scopeFactory.CreateScope()) { var _context = scope.ServiceProvider.GetRequiredService <BettingApplicationContext>(); var date = DateTime.Now; var yesterday = date.AddDays(-1).ToString("yyyy-MM-dd"); var tommorow = date.AddDays(1).ToString("yyyy-MM-dd"); string url = $"https://sportdataprovider.volcanobet.me/api/public/prematch/SportEvents?SportId=1&from={yesterday}T23:00:00.000Z&to={tommorow}T06:00:00.000Z&timezone=-60&clientType=WebConsumer&v=1.1.496-rc6&lang=sr-Latn-EN"; string html; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.AutomaticDecompression = DecompressionMethods.GZip; using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) using (Stream stream = response.GetResponseStream()) using (StreamReader reader = new StreamReader(stream)) { html = reader.ReadToEnd(); } var offer = JsonConvert.DeserializeObject <OfferModel>(html); var sport = await _context.Sport.Where(s => s.Name == offer.Sport.Name).FirstOrDefaultAsync(); if (sport == null) { sport = new Sport(); sport.Name = offer.Sport.Name; _context.AddRange(sport); _context.SaveChanges(); } foreach (var location in offer.Locations) { foreach (var league in location.Leagues) { var leagueDatabase = await _context.League.Where(l => l.Name == $"{location.Name} - {league.Name}") .SingleOrDefaultAsync(); if (leagueDatabase == null) { leagueDatabase = new League(); leagueDatabase.Name = $"{location.Name} - {league.Name}"; leagueDatabase.Sport = sport; _context.League.AddRange(leagueDatabase); _context.SaveChanges(); } foreach (var eventDate in league.EventDateGroups) { foreach (var eventDateEvent in eventDate.Events) { var matchModel = new Match(); matchModel.Competition = league.Name; matchModel.Id = eventDateEvent.Id; var types = new Type(); matchModel.Sport = sport; matchModel.Time = eventDateEvent.Fixture.StartDate.AddHours(1); var firstTeam = await _context.Team .Where(t => t.Name == eventDateEvent.Fixture.Participants[0].Name) .FirstOrDefaultAsync(); var secondTeam = await _context.Team .Where(t => t.Name == eventDateEvent.Fixture.Participants[1].Name) .FirstOrDefaultAsync(); if (firstTeam == null) { firstTeam = new Team(); firstTeam.League = leagueDatabase; firstTeam.Name = eventDateEvent.Fixture.Participants[0].Name; _context.Team.AddRange(firstTeam); matchModel.HomeTeam = firstTeam; } if (firstTeam != null) { matchModel.HomeTeam = firstTeam; } if (secondTeam == null) { secondTeam = new Team(); secondTeam.League = leagueDatabase; secondTeam.Name = eventDateEvent.Fixture.Participants[1].Name; _context.Team.AddRange(secondTeam); matchModel.AwayTeam = secondTeam; } if (secondTeam != null) { matchModel.AwayTeam = secondTeam; } foreach (var market in eventDateEvent.Markets) { if (market.Name == "1x2") { foreach (var pick in market.Picks) { if (pick.Name == "1") { types._1 = pick.Odds; } if (pick.Name == "x") { types._X = pick.Odds; } if (pick.Name == "2") { types._2 = pick.Odds; } } } if (market.Name == "Double chance") { foreach (var pick in market.Picks) { if (pick.Name == "1x") { types._1X = pick.Odds; } if (pick.Name == "x2") { types._X2 = pick.Odds; } if (pick.Name == "12") { types._12 = pick.Odds; } } } } var matchExist = await _context.Match .Include(h => h.HomeTeam) .Include(a => a.AwayTeam) .Where(m => m.HomeTeam == matchModel.HomeTeam && m.AwayTeam == matchModel.AwayTeam && m.Time == matchModel.Time).FirstOrDefaultAsync(); if (matchExist == null && matchModel.HomeTeam != null && matchModel.AwayTeam != null) { matchModel.Type = types; matchModel.TopMatch = false; matchModel.Hide = false; _context.Match.Add(matchModel); _context.SaveChanges(); } } } } } } }
public async Task <IActionResult> ImportDatabase() { string path = @"C:\Users\antee\Documents\Visual Studio 2019\Projects\BettingApplication\MatchesImport.csv"; using (var reader = new StreamReader(path)) { while (!reader.EndOfStream) { try { var line = reader.ReadLine(); var values = line.Split(';'); var match = new MatchViewModel(); var sportFootball = _context.Sport.SingleOrDefault(s => s.Name.Contains("Football")); var hour = values[8].Split(':'); var firstTeam = values[0].Split('"'); var secondTeam = values[1]; var time = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, Int32.Parse(hour[0]), Int32.Parse(hour[1]), 00); var HomeTeam = _context.Team.FirstOrDefault(s => s.Name.Contains(firstTeam[1])); var AwayTeam = _context.Team.FirstOrDefault(s => s.Name.Contains(values[1])); if (HomeTeam == null || AwayTeam == null) { ModelState.AddModelError("Error", $"Wrong name: {firstTeam[1]} or {values[1]}"); return(View()); } var Time = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, Int32.Parse(hour[0]), Int32.Parse(hour[1]), 00); var Types = new Type { _1 = Convert.ToDecimal(values[2]), _X = Convert.ToDecimal(values[3]), _2 = Convert.ToDecimal(values[4]), _1X = Convert.ToDecimal(values[5]), _X2 = Convert.ToDecimal(values[6]), _12 = Convert.ToDecimal(values[7]) }; var Sport = sportFootball; if ((await _context.Match.Where(t => t.HomeTeam.Name == firstTeam[1] && t.AwayTeam.Name == secondTeam && t.Time == time).FirstOrDefaultAsync()) == null) { _context.Match.AddRange( new Match { HomeTeam = _context.Team.First(s => s.Name.Contains(firstTeam[1])), AwayTeam = _context.Team.First(s => s.Name.Contains(values[1])), Time = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, Int32.Parse(hour[0]), Int32.Parse(hour[1]), 00), Type = new Type { _1 = Convert.ToDecimal(values[2]), _X = Convert.ToDecimal(values[3]), _2 = Convert.ToDecimal(values[4]), _1X = Convert.ToDecimal(values[5]), _X2 = Convert.ToDecimal(values[6]), _12 = Convert.ToDecimal(values[7]) }, Sport = sportFootball }); _context.SaveChanges(); } } catch (Exception e) { ModelState.AddModelError("Error", $"{e}"); return(View()); } } return(View()); } }