public (MotorsportResultAPI.Types.Domain.v1.Rally.Competitor, MotorsportResultAPI.Types.Enumeration.Results) Execute( int eventId, int competitorId, MotorsportResultAPI.Types.Domain.v1.Rally.StageResult stageResult) { var _id = $"{eventId}-{competitorId}"; if (this.c_transformer.ValidateTimeSpan(stageResult.StageTime) == null || this.c_transformer.ValidateTimeSpan(stageResult.PenaltyTime) == null) { return(null, MotorsportResultAPI.Types.Enumeration.Results.InvalidTimeFormat); } var _stageResult = this.c_mapper.MapStageResultToData(stageResult); var _competitor = this.c_competitorRepository.FetchById(_id); if (_competitor != null && _competitor.StageResults.Count() == stageResult.StageId - 1) { _competitor.StageResults.Add(_stageResult); this.c_competitorRepository.Append( _id, _competitor); return(this.c_mapper.MapCompetitorToDomain(_competitor), MotorsportResultAPI.Types.Enumeration.Results.Appended); } if (stageResult.StageId > _competitor.StageResults.Count()) { return(null, MotorsportResultAPI.Types.Enumeration.Results.PreviousStageResultDoesNotExist); } return(null, MotorsportResultAPI.Types.Enumeration.Results.AlreadyExists); }
public MotorsportResultAPI.Types.Data.v1.Rally.StageResult MapStageResultToData( MotorsportResultAPI.Types.Domain.v1.Rally.StageResult subject) { return(new MotorsportResultAPI.Types.Data.v1.Rally.StageResult( subject.StageId, this.c_transformer.ValidateTimeSpan(subject.StageTime), this.c_transformer.ValidateTimeSpan(subject.PenaltyTime))); }
public (MotorsportResultAPI.Types.Domain.v1.Rally.Competitor, MotorsportResultAPI.Types.Enumeration.Results) Execute( string eventId, string competitorId, MotorsportResultAPI.Types.Domain.v1.Rally.StageResult stageResult) { var _id = $"{eventId}-{competitorId}"; var _stageResults = new List <MotorsportResultAPI.Types.Data.v1.Rally.StageResult>(); if (this.c_transformer.ValidateTimeSpan(stageResult.StageTime) == null || this.c_transformer.ValidateTimeSpan(stageResult.PenaltyTime) == null) { return(null, MotorsportResultAPI.Types.Enumeration.Results.InvalidTimeFormat); } var _stageResult = this.c_mapper.MapStageResultToData(stageResult); var _competitor = this.c_competitorRepository.FetchById(_id); if (_competitor != null && _competitor.StageResults.Exists(result => result.StageId == _stageResult.StageId)) { var _correspondingDatabaseSatgeResult = _competitor.StageResults[stageResult.StageId - 1]; if (_stageResult.Equals(_correspondingDatabaseSatgeResult)) { return(null, MotorsportResultAPI.Types.Enumeration.Results.MatchingElement); } foreach (var result in _competitor.StageResults) { if (result.StageId == _stageResult.StageId) { var _updatedStageResult = new MotorsportResultAPI.Types.Data.v1.Rally.StageResult( _stageResult.StageId, _stageResult.StageTime, _stageResult.PenaltyTime); _stageResults.Add(_updatedStageResult); } else { _stageResults.Add(result); } } var _updatedCompetitor = new MotorsportResultAPI.Types.Data.v1.Rally.Competitor( _competitor.Id, _competitor.EventId, _competitor.CarNumber, _competitor.Name, _competitor.Car, _competitor.Category, _stageResults); this.c_competitorRepository.Update( _id, _updatedCompetitor); return(this.c_mapper.MapCompetitorToDomain(_updatedCompetitor), MotorsportResultAPI.Types.Enumeration.Results.Updated); } return(null, MotorsportResultAPI.Types.Enumeration.Results.DoesNotExist); }