public bool UndoTeamScore(int matchId, int battingTeamId, CalcBall value) { if (matchId == 0 || battingTeamId == 0 || value == null) { return(false); } var match = MatchesTable.GetMatch(matchId); match.MatchComplete = false; match.WinningTeamName = null; match.Comments = null; if (match.HomeTeamId == battingTeamId && match.HomeTeamBalls > 0) { match.HomeTeamRuns = match.HomeTeamRuns - value.RunsGiven; match.HomeTeamWickets = match.HomeTeamWickets - value.WicketsTaken; match.HomeTeamBalls = match.HomeTeamBalls - value.BallBowled; match.HomeTeamWides = match.HomeTeamWides - value.Wides; match.HomeTeamNoBalls = match.HomeTeamNoBalls - value.Noballs; match.HomeTeamByes = match.HomeTeamByes - value.Byes; match.HomeTeamLegByes = match.HomeTeamLegByes - value.LegByes; } else if (match.AwayTeamId == battingTeamId && match.AwayTeamBalls > 0) { match.AwayTeamRuns = match.AwayTeamRuns - value.RunsGiven; match.AwayTeamWickets = match.AwayTeamWickets - value.WicketsTaken; match.AwayTeamBalls = match.AwayTeamBalls - value.BallBowled; match.AwayTeamWides = match.AwayTeamWides - value.Wides; match.AwayTeamNoBalls = match.AwayTeamNoBalls - value.Noballs; match.AwayTeamByes = match.AwayTeamByes - value.Byes; match.AwayTeamLegByes = match.AwayTeamLegByes - value.LegByes; match.AwayTeamInningsComplete = false; } return(MatchesTable.UpdateMatch(match));; }
public bool UpdateBowlerThisBall(int matchId, int bowlingTeamId, CalcBall value) { var val = false; // Handle when calc ball lost value if (value == null || string.IsNullOrEmpty(value.BowlerName)) { return(val); } // Handle when team innings complete var match = Access.MatchService.GetMatch(matchId); if ((match.AwayTeam.Id == bowlingTeamId && match.HomeTeam.InningsComplete) || (match.HomeTeam.Id == bowlingTeamId && match.AwayTeam.InningsComplete)) { return(val); } var currentPlayers = GetPlayersPerTeamPerMatch(bowlingTeamId, matchId); var player = currentPlayers.Where(p => p.Name == value.BowlerName).FirstOrDefault(); player.RunsGiven = player.RunsGiven + value.RunsGiven; player.BallsBowled = player.BallsBowled + value.BallBowled; player.Wickets = player.Wickets + value.WicketsTaken; if (Helper.ConvertBallstoOvers(player.Thisoverballs).Split('.')[1] == "0") // Reset every last ball previous over { player.Thisoverruns = false; } player.Thisoverballs = player.Thisoverballs + value.BallBowled; player.Thisoverruns = player.Thisoverruns ? player.Thisoverruns : (value.RunsTaken + value.Wides + value.Noballs == 0) ? false : true; player.Maiden = player.Maiden + ((Helper.ConvertBallstoOvers(player.Thisoverballs).Split('.')[1] == "0" && !player.Thisoverruns) ? 1 : 0); player.Wides = player.Wides + value.Wides; player.NoBalls = player.NoBalls + value.Noballs; val = PlayersTable.UpdatePlayer(player); //Catch or Stumping if (val && !string.IsNullOrEmpty(value.Fielder)) { var fielder = currentPlayers.Where(p => p.Name == value.Fielder).FirstOrDefault(); fielder.Catches = fielder.Catches + (value.BatsmanHowOut.Contains($"c {value.Fielder}") ? 1 : 0); fielder.Stumpings = fielder.Stumpings + (value.BatsmanHowOut.Contains($"st †{value.Fielder}") ? 1 : 0); val = PlayersTable.UpdatePlayer(fielder); } return(val); }
public BallService(Ball ball, int teamno) { CalcBall = new CalcBall(ball); if (teamno == 1) { Access.TeamOneBalls.Add(CalcBall); } else { Access.TeamTwoBalls.Add(CalcBall); } }
public bool UpdateBatsmanThisBall(int matchId, int battingTeamId, CalcBall value) { var val = false; // Handle when calc ball lost value if (value == null || string.IsNullOrEmpty(value.BatsmanName)) { return(val); } // Handle when team innings complete var match = Access.MatchService.GetMatch(matchId); if ((match.HomeTeam.Id == battingTeamId && match.HomeTeam.InningsComplete) || (match.AwayTeam.Id == battingTeamId && match.AwayTeam.InningsComplete)) { return(val); } var currentPlayers = GetPlayersPerTeamPerMatch(battingTeamId, matchId); // Active Batsman var player = currentPlayers.Where(p => p.Name == value.BatsmanName).FirstOrDefault(); player.RunsTaken = player.RunsTaken + value.RunsTaken; player.BallsPlayed = player.BallsPlayed + value.BallsPlayed; if (value.RunsTaken == 4) { player.Fours = player.Fours + 1; } if (value.RunsTaken == 6) { player.Sixes = player.Sixes + 1; } player.HowOut = value.BatsmanHowOut; val = PlayersTable.UpdatePlayer(player); // Update is runner out if (val && !string.IsNullOrEmpty(value.RunnerBatsman) && value.RunnerHowOut.Contains("runout")) { var runner = currentPlayers.Where(p => p.Name == value.RunnerBatsman).FirstOrDefault(); runner.HowOut = value.RunnerHowOut; val = PlayersTable.UpdatePlayer(runner); } return(val); }
public bool UndoBatsmanLastBall(int matchId, int battingTeamId, CalcBall value) { var val = false; // Handle when calc ball lost value if (value == null || string.IsNullOrEmpty(value.BatsmanName)) { return(val); } var currentPlayers = GetPlayersPerTeamPerMatch(battingTeamId, matchId); //Active Batsman var player = currentPlayers.Where(p => p.Name == value.BatsmanName).FirstOrDefault(); if (player.BallsPlayed > 0) { player.RunsTaken = player.RunsTaken - value.RunsTaken; player.BallsPlayed = player.BallsPlayed - value.BallsPlayed; if (value.RunsTaken == 4) { player.Fours = player.Fours - 1; } if (value.RunsTaken == 6) { player.Sixes = player.Sixes - 1; } player.HowOut = "not out"; val = PlayersTable.UpdatePlayer(player); } //Runner if (val && !string.IsNullOrEmpty(value.RunnerBatsman)) { var runner = currentPlayers.Where(p => p.Name == value.RunnerBatsman).FirstOrDefault(); runner.HowOut = "not out"; val = PlayersTable.UpdatePlayer(runner); } return(val); }
private void UndoScore(object sender, EventArgs e) { var currentMatch = Access.MatchService.GetMatch(MatchId); CalcBall undoBall = null; if (currentMatch.HomeTeam.Id == BattingteamId) { if (currentMatch.HomeTeam.InningsComplete || Access.TeamOneBalls.Count <= 0) { Toast.MakeText(this, $"{currentMatch.HomeTeam.Name} innings is complete or not started.", ToastLength.Long).Show(); return; } else { undoBall = Access.TeamOneBalls[Access.TeamOneBalls.Count - 1]; Access.TeamOneBalls.RemoveAt(Access.TeamOneBalls.Count - 1); } } else { if (currentMatch.AwayTeam.InningsComplete || Access.TeamTwoBalls.Count <= 0) { Toast.MakeText(this, $"{currentMatch.AwayTeam.Name} innings is complete or not started.", ToastLength.Long).Show(); return; } else { undoBall = Access.TeamTwoBalls[Access.TeamTwoBalls.Count - 1]; Access.TeamTwoBalls.RemoveAt(Access.TeamTwoBalls.Count - 1); } } if (Access.PlayerService.UndoBatsmanLastBall(MatchId, BattingteamId, undoBall) && Access.PlayerService.UndoBowlerLastBall(MatchId, BowlingteamId, undoBall)) { Access.MatchService.UndoTeamScore(MatchId, BattingteamId, undoBall); } GotoCurrentMatch(); }
public bool UndoBowlerLastBall(int matchId, int bowlingTeamId, CalcBall value) { var val = false; // Handle when calc ball lost value if (value == null || string.IsNullOrEmpty(value.BowlerName)) { return(val); } var currentPlayers = GetPlayersPerTeamPerMatch(bowlingTeamId, matchId); var player = currentPlayers.Where(p => p.Name == value.BowlerName).FirstOrDefault(); if (player.BallsBowled > 0) { // Check last 6 balls if batsman is scored if score on 6th ball undo else dont do it var match = Access.MatchService.GetMatch(matchId); var team = (match.HomeTeam.Id == bowlingTeamId) ? 2 : 1; var balls = (team == 1) ? Access.TeamOneBalls : Access.TeamTwoBalls; player.Thisoverruns = false; int i = 6; foreach (var b in balls.Where(p => p.BowlerName == player.Name).AsEnumerable().Reverse()) { if (i == 0) { break; } if (b.RunsTaken > 0 || b.Wides > 0 || b.Noballs > 0) { player.Thisoverruns = true; break; } i = i - (b.BallBowled == 1 ? 1 : 0); } if (player.Maiden > 0) { player.Maiden = player.Maiden - ((Helper.ConvertBallstoOvers(player.Thisoverballs).Split('.')[1] == "0" && !player.Thisoverruns) ? 1 : 0); } player.Thisoverballs = player.Thisoverballs - value.BallBowled; player.RunsGiven = player.RunsGiven - value.RunsGiven; player.BallsBowled = player.BallsBowled - value.BallBowled; player.Wickets = player.Wickets - value.WicketsTaken; player.Wides = player.Wides - value.Wides; player.NoBalls = player.NoBalls - value.Noballs; val = PlayersTable.UpdatePlayer(player); } //Catch or Stumping if (val && !string.IsNullOrEmpty(value.Fielder)) { var fielder = currentPlayers.Where(p => p.Name == value.Fielder).FirstOrDefault(); fielder.Catches = fielder.Catches - (value.BatsmanHowOut.Contains($"c {value.Fielder}") ? 1 : 0); fielder.Stumpings = fielder.Stumpings - (value.BatsmanHowOut.Contains($"st †{value.Fielder}") ? 1 : 0); val = PlayersTable.UpdatePlayer(fielder); } return(val); }
public bool UpdateTeamScore(int matchId, int battingTeamId, CalcBall value) { var match = MatchesTable.GetMatch(matchId); if (match.HomeTeamId == battingTeamId && !match.HomeTeamInningsComplete) { match.HomeTeamRuns = match.HomeTeamRuns + value.RunsGiven; match.HomeTeamWickets = match.HomeTeamWickets + value.WicketsTaken; match.HomeTeamBalls = match.HomeTeamBalls + value.BallBowled; match.HomeTeamWides = match.HomeTeamWides + value.Wides; match.HomeTeamNoBalls = match.HomeTeamNoBalls + value.Noballs; match.HomeTeamByes = match.HomeTeamByes + value.Byes; match.HomeTeamLegByes = match.HomeTeamLegByes + value.LegByes; // Home team completed innings if (match.HomeTeamBalls >= match.TotalOvers * 6) { match.HomeTeamInningsComplete = true; } //Match complete if (match.AwayTeamInningsComplete && (match.HomeTeamInningsComplete || match.HomeTeamRuns > match.AwayTeamRuns)) { match.MatchComplete = true; match.HomeTeamInningsComplete = true; // Home team successfully chased if (match.HomeTeamRuns > match.AwayTeamRuns) { match.WinningTeamName = match.HomeTeamName; match.Comments = match.WinningTeamName + " won by " + (Access.PlayerService.GetPlayersPerTeamPerMatch(match.HomeTeamId, match.Id).Count - match.HomeTeamWickets) + " wickets"; } // Home team lost else if (match.HomeTeamRuns < match.AwayTeamRuns) { var diffruns = match.AwayTeamRuns - match.HomeTeamRuns; match.Comments = match.AwayTeamName + " won by " + diffruns + " runs"; } // Game Tie else if (match.HomeTeamRuns == match.AwayTeamRuns) { match.Comments = "Game is tie"; } } } else if (match.AwayTeamId == battingTeamId && !match.AwayTeamInningsComplete) { match.AwayTeamRuns = match.AwayTeamRuns + value.RunsGiven; match.AwayTeamWickets = match.AwayTeamWickets + value.WicketsTaken; match.AwayTeamBalls = match.AwayTeamBalls + value.BallBowled; match.AwayTeamWides = match.AwayTeamWides + value.Wides; match.AwayTeamNoBalls = match.AwayTeamNoBalls + value.Noballs; match.AwayTeamByes = match.AwayTeamByes + value.Byes; match.AwayTeamLegByes = match.AwayTeamLegByes + value.LegByes; // Away team completed innings if (match.AwayTeamBalls >= match.TotalOvers * 6) { match.AwayTeamInningsComplete = true; } //Match complete if (match.HomeTeamInningsComplete && (match.AwayTeamInningsComplete || match.HomeTeamRuns < match.AwayTeamRuns)) { match.MatchComplete = true; match.AwayTeamInningsComplete = true; // Away team successfully chased if (match.HomeTeamRuns < match.AwayTeamRuns) { match.WinningTeamName = match.AwayTeamName; match.Comments = match.WinningTeamName + " won by " + (Access.PlayerService.GetPlayersPerTeamPerMatch(match.AwayTeamId, match.Id).Count - match.AwayTeamWickets) + " wickets"; } // Away team lost else if (match.HomeTeamRuns > match.AwayTeamRuns) { var diffruns = match.HomeTeamRuns - match.AwayTeamRuns; match.Comments = match.HomeTeamName + " won by " + diffruns + " runs"; } // Game Tie else if (match.HomeTeamRuns == match.AwayTeamRuns) { match.Comments = "Game is tie"; } } } return(MatchesTable.UpdateMatch(match)); }
private void UpdateScore(object sender, EventArgs e) { if (!mFielder_Keeper.Enabled) { ThisBall.Fielder = null; } // Extras one if (ThisBall.Wide == 1) { ThisBall.Wide = Convert.ToInt32(mExtra1Runs.SelectedItem.ToString()); } else if (ThisBall.NoBall == 1) { ThisBall.NoBall = Convert.ToInt32(mExtra1Runs.SelectedItem.ToString()); } // Extras two if (ThisBall.Byes == 1) { ThisBall.Byes = Convert.ToInt32(mExtra2Runs.SelectedItem.ToString()); } else if (ThisBall.LegByes == 1) { ThisBall.LegByes = Convert.ToInt32(mExtra2Runs.SelectedItem.ToString()); } var calcball = new CalcBall(ThisBall); if (Match.HomeTeam.Id == BattingteamId) { Access.TeamOneBalls.Add(calcball); } else { Access.TeamTwoBalls.Add(calcball); } //Update score if (Access.PlayerService.UpdateBatsmanThisBall(MatchId, BattingteamId, calcball) && Access.PlayerService.UpdateBowlerThisBall(MatchId, BowlingteamId, calcball)) { Access.MatchService.UpdateTeamScore(MatchId, BattingteamId, calcball); } Match = Access.MatchService.GetMatch(MatchId); // Current innings is complete if ((Match.HomeTeam.Id == BattingteamId && Match.HomeTeam.InningsComplete) || (Match.AwayTeam.Id == BattingteamId && Match.AwayTeam.InningsComplete)) { var currentInningsComplete = new Android.App.AlertDialog.Builder(this); currentInningsComplete.SetTitle("Current Innings is Complete."); var teamname = Match.HomeTeam.Id == BattingteamId ? Match.HomeTeam.Name : Match.AwayTeam.Name; var runs = Match.HomeTeam.Id == BattingteamId ? Match.HomeTeam.Runs : Match.AwayTeam.Runs; var wicktes = Match.HomeTeam.Id == BattingteamId ? Match.HomeTeam.Wickets : Match.AwayTeam.Wickets; currentInningsComplete.SetMessage($"{teamname} is scored {runs} for {wicktes} wickets."); currentInningsComplete.SetPositiveButton("Ok", (senderAlert, args) => { currentInningsComplete.Dispose(); if (Match.Complete) { MatchComplete($"Congratulations, {Match.Comments}"); } else { GotoCurrentMatch(); } }); currentInningsComplete.Show(); } // Match is complete else if (Match.Complete) { MatchComplete($"Congratulations, { Match.Comments}"); } // One or less wickets left. Press 'Complete' to match complete or 'No, Continue' to add new batsman. else if (Access.PlayerService.GetPlayersPerTeamPerMatch(BattingteamId, Match.Id).Where(o => o.HowOut == "not out").Count() <= 1) { var wicketsgone = new Android.App.AlertDialog.Builder(this); wicketsgone.SetTitle("All Out"); wicketsgone.SetMessage("One or less wickets left. Press 'Innings Over' if current innings is complete, 'No, Continue' to add new batsman."); wicketsgone.SetPositiveButton("Innings Over", (senderAlert, args) => { wicketsgone.Dispose(); if (Match.HomeTeam.Id == BattingteamId) { Match.HomeTeam.InningsComplete = true; } else { Match.AwayTeam.InningsComplete = true; } if (Match.HomeTeam.InningsComplete && Match.AwayTeam.InningsComplete) { Match.Complete = true; var diffruns = Match.HomeTeam.Runs - Match.AwayTeam.Runs; if (diffruns == 0) { Match.Comments = "Game is tie"; } else { Match.WinningTeamName = (diffruns > 0) ? Match.HomeTeam.Name : Match.AwayTeam.Name; Match.Comments = Match.WinningTeamName + " won by " + Math.Abs(diffruns) + " runs"; } MatchComplete($"Congratulations, { Match.Comments}"); } else { GotoCurrentMatch(); } Access.MatchService.UpdateMatch(Match); }); wicketsgone.SetNegativeButton("No, Continue", (senderAlert, args) => { wicketsgone.Dispose(); Intent intent = new Intent(this.BaseContext, typeof(AddDeletePlayerActivity)); intent.PutExtra("MatchId", MatchId); intent.PutExtra("BattingTeamId", BattingteamId); intent.PutExtra("BowlingTeamId", BowlingteamId); intent.PutExtra("SelectedTeam", "Batting"); StartActivity(intent); }); wicketsgone.Show(); } else { GotoCurrentMatch(); } }