public bool AddNewMatch(Match matchToAdd) { var sportOfMatch = _context.Sports.SingleOrDefault(sport => sport.Id == matchToAdd.HomeTeam.SportId); if (sportOfMatch == null) { return(false); } if (matchToAdd.TimeOfStart < DateTime.Now || matchToAdd.HomeTeam.Id == matchToAdd.AwayTeam.Id || matchToAdd.AwayTeam.SportId != sportOfMatch.Id || !sportOfMatch.IsDrawPossible && matchToAdd.DrawOdd != null || matchToAdd.DrawOdd != null && matchToAdd.DrawOdd < 1.01 || matchToAdd.HomeWinOdd != null && matchToAdd.HomeWinOdd < 1.01 || matchToAdd.AwayWinOdd != null && matchToAdd.AwayWinOdd < 1.01) { return(false); } _context.Teams.Attach(matchToAdd.HomeTeam); _context.Teams.Attach(matchToAdd.AwayTeam); _context.Matches.Add(matchToAdd); _context.SaveChanges(); return(true); }
public void AddTransaction(int walletId, double transactionAmount, TransactionType transactionType) { var transactionToAdd = new Transaction() { WalletId = walletId, TransactionType = transactionType, TransactionAmount = transactionAmount, TimeOfTransaction = DateTime.Now }; _context.Transactions.Add(transactionToAdd); _context.SaveChanges(); }
public bool PlaceBet(Ticket ticketToPlace) { _context.Wallets.Attach(ticketToPlace.Wallet); if (ticketToPlace.Stake < 2 || ticketToPlace.Wallet.Funds < ticketToPlace.Stake) { return(false); } var totalOdd = 1.0; foreach (var ticketMatch in ticketToPlace.TicketMatches) { var match = _context.Matches.Find(ticketMatch.MatchId); if (match == null) { return(false); } switch (ticketMatch.Tip) { case Outcome.HomeWin: totalOdd = Math.Round(totalOdd * (double)match.HomeWinOdd, 2, MidpointRounding.AwayFromZero); break; case Outcome.Draw: totalOdd = Math.Round(totalOdd * (double)match.DrawOdd, 2, MidpointRounding.AwayFromZero); break; case Outcome.AwayWin: totalOdd = Math.Round(totalOdd * (double)match.AwayWinOdd, 2, MidpointRounding.AwayFromZero); break; default: return(false); } } var bonus = GetTicketBonuses(ticketToPlace.TicketMatches); if (Math.Abs(totalOdd + bonus.BonusOdd - ticketToPlace.TotalOdd) > 0.1) { return(false); } ticketToPlace.TotalOdd = Math.Round(ticketToPlace.TotalOdd, 2, MidpointRounding.AwayFromZero); ticketToPlace.Wallet.Funds -= ticketToPlace.Stake; _context.Tickets.Add(ticketToPlace); _context.SaveChanges(); return(true); }
public bool AddTeam(Team teamToAdd) { if (teamToAdd.Sport == null) { return(false); } _context.Sports.Attach(teamToAdd.Sport); _context.Teams.Add(teamToAdd); _context.SaveChanges(); return(true); }
public bool FundsPayment(int walletId, double fundsToGrant) { var wallet = _context.Wallets.Find(walletId); if (wallet == null || fundsToGrant < 10) { return(false); } wallet.Funds += fundsToGrant; _context.SaveChanges(); return(true); }
public void AddSport(Sport sportToAdd) { _context.Sports.Add(sportToAdd); _context.SaveChanges(); }
public static void SeedDb(BettingContext context) { if (context.Users.Any()) { return; } var sports = new List <Sport>() { new Sport() { Name = "Nogomet", IsDrawPossible = true }, new Sport() { Name = "Košarka", IsDrawPossible = true }, new Sport() { Name = "Rukomet", IsDrawPossible = true }, new Sport() { Name = "Tenis", IsDrawPossible = false } }; var teams = new List <Team>() { new Team() { Name = "HNK Hajduk š.d.d.", Sport = sports[0] }, new Team() { Name = "Gornik Zabrze", Sport = sports[0] }, new Team() { Name = "SL Benfica", Sport = sports[0] }, new Team() { Name = "AS Saint Etienne", Sport = sports[0] }, new Team() { Name = "KK Split", Sport = sports[1] }, new Team() { Name = "KK Zadar", Sport = sports[1] }, new Team() { Name = "KK Cibona", Sport = sports[1] }, new Team() { Name = "KK Cedevita", Sport = sports[1] }, new Team() { Name = "PPD Zagreb", Sport = sports[2] }, new Team() { Name = "RK Vardar Skopje", Sport = sports[2] }, new Team() { Name = "HC Rhein-Neckar Löwen", Sport = sports[2] }, new Team() { Name = "Vive Targi Kielce", Sport = sports[2] }, new Team() { Name = "Marin Čilić", Sport = sports[3] }, new Team() { Name = "Roger Federer", Sport = sports[3] }, new Team() { Name = "Rafael Nadal", Sport = sports[3] }, new Team() { Name = "Juan Martin Del Potro", Sport = sports[3] } }; var matches = new List <Match>() { new Match() { HomeTeam = teams[0], AwayTeam = teams[1], HomeWinOdd = 1.5, DrawOdd = 2.2, AwayWinOdd = 3.0, TimeOfStart = DateTime.Now + TimeSpan.FromDays(2) }, new Match() { HomeTeam = teams[3], AwayTeam = teams[0], HomeWinOdd = 1.3, DrawOdd = 2.5, AwayWinOdd = 3.75, TimeOfStart = DateTime.Now + TimeSpan.FromDays(2) }, new Match() { HomeTeam = teams[1], AwayTeam = teams[2], HomeWinOdd = 2.5, DrawOdd = 2.8, AwayWinOdd = 2.5, TimeOfStart = DateTime.Now + TimeSpan.FromDays(1) }, new Match() { HomeTeam = teams[4], AwayTeam = teams[6], HomeWinOdd = 2.2, DrawOdd = 18, AwayWinOdd = 1.6, TimeOfStart = DateTime.Now + TimeSpan.FromDays(2) }, new Match() { HomeTeam = teams[5], AwayTeam = teams[7], HomeWinOdd = 2.2, DrawOdd = 18, AwayWinOdd = 1.6, TimeOfStart = DateTime.Now + TimeSpan.FromHours(1) }, new Match() { HomeTeam = teams[9], AwayTeam = teams[8], HomeWinOdd = 1.15, DrawOdd = 2.5, AwayWinOdd = 5, TimeOfStart = DateTime.Now + TimeSpan.FromHours(3) }, new Match() { HomeTeam = teams[10], AwayTeam = teams[8], HomeWinOdd = 1.45, DrawOdd = 2.2, AwayWinOdd = 3.5, TimeOfStart = DateTime.Now + TimeSpan.FromDays(6) }, new Match() { HomeTeam = teams[12], AwayTeam = teams[13], HomeWinOdd = 2.6, AwayWinOdd = 1.8, TimeOfStart = DateTime.Now + TimeSpan.FromDays(1) }, new Match() { HomeTeam = teams[14], AwayTeam = teams[15], HomeWinOdd = 1.9, AwayWinOdd = 1.9, TimeOfStart = DateTime.Now + TimeSpan.FromHours(1) }, new Match() { HomeTeam = teams[12], AwayTeam = teams[15], HomeWinOdd = 2.0, AwayWinOdd = 1.8, TimeOfStart = DateTime.Now + TimeSpan.FromDays(3) }, new Match() { HomeTeam = teams[13], AwayTeam = teams[14], HomeWinOdd = 1.5, AwayWinOdd = 2.25, TimeOfStart = DateTime.Now + TimeSpan.FromDays(3) } }; var wallets = new List <Wallet>() { new Wallet() { Funds = 150 }, new Wallet() { Funds = 2000 } }; var users = new List <User>() { new User() { FirstName = "Krešimir", LastName = "Čondić", UserName = "******", Role = Role.User, Wallet = wallets[0] }, new User() { FirstName = "Mario", LastName = "Čeprnja", UserName = "******", Role = Role.User, Wallet = wallets[1] }, new User() { FirstName = "Vladimir", LastName = "Vrankulj", UserName = "******", Role = Role.Admin } }; context.Sports.AddRange(sports); context.Teams.AddRange(teams); context.Matches.AddRange(matches); context.Wallets.AddRange(wallets); context.Users.AddRange(users); context.SaveChanges(); }