Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        public MotorsportResultAPI.Types.Domain.v1.Rally.Competitor MapCompetitorToDomain(
            MotorsportResultAPI.Types.Data.v1.Rally.Competitor subject)
        {
            var x = new MotorsportResultAPI.Types.Domain.v1.Rally.Competitor(
                subject.Id,
                subject.EventId,
                subject.CarNumber,
                subject.Name,
                subject.Car,
                subject.Category,
                subject.StageResults.Select(stageResult => this.MapStageResultToDomain(stageResult)).ToList());

            return(x);
        }