private bool CheckPassedRunners(BaseballPlayDetails Details) { // runners can't pass other runners if ((Details.RBDestination.HasValue ? (Details.RBDestination > 4 ? 4 : Details.RBDestination) : 0) > (Details.R1Destination.HasValue && Details.R1Destination > 0 ? Details.R1Destination : 6)) { return(false); } if ((Details.RBDestination.HasValue ? (Details.RBDestination > 4 ? 4 : Details.RBDestination) : 0) > (Details.R2Destination.HasValue && Details.R2Destination > 0 ? Details.R2Destination : 6)) { return(false); } if ((Details.RBDestination.HasValue ? (Details.RBDestination > 4 ? 4 : Details.RBDestination) : 0) > (Details.R3Destination.HasValue && Details.R3Destination > 0 ? Details.R3Destination : 6)) { return(false); } if ((Details.R1Destination.HasValue ? (Details.R1Destination > 4 ? 4 : Details.R1Destination) : 0) > (Details.R2Destination.HasValue && Details.R2Destination > 0 ? Details.R2Destination : 6)) { return(false); } if ((Details.R1Destination.HasValue ? (Details.R1Destination > 4 ? 4 : Details.R1Destination) : 0) > (Details.R3Destination.HasValue && Details.R3Destination > 0 ? Details.R3Destination : 6)) { return(false); } if ((Details.R2Destination.HasValue ? (Details.R2Destination > 4 ? 4 : Details.R2Destination) : 0) > (Details.R3Destination.HasValue && Details.R3Destination > 0 ? Details.R3Destination : 6)) { return(false); } return(true); }
public BaseballPlayCreatedEvent(Guid id, string retrosheetGameId, int eventNumber, int lineupChangeSequence, string eventText, string batter, string countOnBatter, string pitches, BaseballPlayDetails details) { Id = id; RetrosheetGameId = retrosheetGameId; EventNumber = eventNumber; LineupChangeSequence = lineupChangeSequence; EventText = eventText; Batter = batter; CountOnBatter = countOnBatter; Pitches = pitches; Details = details; }
public BaseballPlay(Guid id, string retrosheetGameId, int eventNumber, int lineupChangeSequence, string eventText, string batter, string countOnBatter, string pitches, BaseballPlayDetails details) { Id = id; _RetrosheetGameId = retrosheetGameId; _EventNumber = eventNumber; _LineupChangeSequence = lineupChangeSequence; _EventText = eventText; _Batter = batter; _CountOnBatter = countOnBatter; _Pitches = pitches; _Details = details; ApplyChange(new BaseballPlayCreatedEvent(id, retrosheetGameId, eventNumber, lineupChangeSequence, eventText, batter, countOnBatter, pitches, details)); }
public CreateBaseballPlayCommand(Guid id, string retrosheetGameId, int eventNumber, int lineupChangeSequence, int inning, int teamAtBat, string batter, string countOnBatter, string pitches, string eventText, bool lastPlay, BaseballPlayDetails details) { Id = id; RetrosheetGameId = retrosheetGameId; EventNumber = eventNumber; LineupChangeSequence = lineupChangeSequence; Inning = inning; TeamAtBat = teamAtBat; Batter = batter; CountOnBatter = countOnBatter; Pitches = pitches; EventText = eventText; LastPlay = lastPlay; Details = details; }
private bool CheckRunnerExists(BaseballPlayDetails Details) { // runners at end of play must have been runners at start of play if (Details.R1Destination.HasValue && !Details.StartOfPlay.RunnerOnFirst) { return(false); } if (Details.R2Destination.HasValue && !Details.StartOfPlay.RunnerOnSecond) { return(false); } if (Details.R3Destination.HasValue && !Details.StartOfPlay.RunnerOnThird) { return(false); } return(true); }
private bool CheckOneRunnerPerBag(BaseballPlayDetails Details) { // max of 1 runner per bag at end of play, except for runners left on base at end of half inning if (!Details.EndOfHalfInning && ((Details.RBDestination == 1 ? 1 : 0) + (Details.R1Destination == 1 ? 1 : 0) + (Details.R2Destination == 1 ? 1 : 0) + (Details.R3Destination == 1 ? 1 : 0) > 1)) { return(false); } if (!Details.EndOfHalfInning && ((Details.RBDestination == 2 ? 1 : 0) + (Details.R1Destination == 2 ? 1 : 0) + (Details.R2Destination == 2 ? 1 : 0) + (Details.R3Destination == 2 ? 1 : 0) > 1)) { return(false); } if (!Details.EndOfHalfInning && ((Details.RBDestination == 3 ? 1 : 0) + (Details.R1Destination == 3 ? 1 : 0) + (Details.R2Destination == 3 ? 1 : 0) + (Details.R3Destination == 3 ? 1 : 0) > 1)) { return(false); } return(true); }
public async Task <IActionResult> AddEvent([FromBody] CreateBaseballPlayRequest request) { BaseballPlayRM previousPlay = null; if (request.EventNumber > 1 && !Dictionaries.cdBaseballPlayRM.TryRemove(request.RetrosheetGameId + (request.EventNumber - 1).ToString("000"), out previousPlay)) { return(StatusCode(500, "Previous play data not available on server.")); } BaseballPlayDetails details = new BaseballPlayDetails(previousPlay, request.RetrosheetGameId, request.EventNumber, request.TeamAtBat.ToString(), request.EventText, request.LastPlay); request.Details = details; CreateBaseballPlayRequestValidator validator = new CreateBaseballPlayRequestValidator(); var validationResults = validator.Validate(request); foreach (var warning in validationResults.Errors.Where(e => e.Severity == FluentValidation.Severity.Warning)) { baseballPlayValidationLogger.LogWarning(request.RetrosheetGameId + " " + request.EventNumber.ToString("000") + " " + request.EventText + " : " + warning.ErrorMessage); } if (!validationResults.Errors.Any(e => e.Severity == FluentValidation.Severity.Error)) { var cmd = _mapper.Map <CreateBaseballPlayCommand>(request); await _commandSender.Send(cmd); } else { foreach (var validationError in validationResults.Errors.Where(e => e.Severity == FluentValidation.Severity.Error)) { baseballPlayValidationLogger.LogError(request.RetrosheetGameId + " " + request.EventNumber.ToString("000") + " " + request.EventText + " : " + validationError.ErrorMessage); } return(BadRequest(request.RetrosheetGameId + " " + request.EventNumber.ToString("000") + " " + request.EventText + " has validation errors")); } return(Ok()); }