private IActionResult ParseGetCompetitorResult(
            MotorsportResultAPI.Types.Domain.v1.Rally.Competitor subject)
        {
            switch (subject)
            {
            case null:
                return(BadRequest(new MotorsportResultAPI.Types.Domain.v1.Error("400", "Rally/v1/Competitor", "Competitor doesn't exists")));

            default:
                return(Ok(subject));
            }
        }
예제 #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);
        }
예제 #3
0
 public MotorsportResultAPI.Types.Data.v1.Rally.Competitor MapCompetitorToData(
     MotorsportResultAPI.Types.Domain.v1.Rally.Competitor subject)
 {
     //TODO AM: Remove list
     return(new MotorsportResultAPI.Types.Data.v1.Rally.Competitor(
                subject.Id,
                subject.EventId,
                subject.CarNumber,
                subject.Name,
                subject.Car,
                subject.Category,
                Enumerable.Empty <MotorsportResultAPI.Types.Data.v1.Rally.StageResult>()
                .ToList <MotorsportResultAPI.Types.Data.v1.Rally.StageResult>()));
 }
예제 #4
0
        public (MotorsportResultAPI.Types.Domain.v1.Rally.Competitor, MotorsportResultAPI.Types.Enumeration.Results) Execute(
            MotorsportResultAPI.Types.Domain.v1.Rally.Competitor subject)
        {
            var _competitor = this.c_competitorRepository.FetchById(subject.Id);

            if (_competitor == null)
            {
                var _dataCompetitor = this.c_mapper.MapCompetitorToData(subject);
                this.c_competitorRepository.Save(_dataCompetitor);

                return(subject, MotorsportResultAPI.Types.Enumeration.Results.Created);
            }

            return(subject, MotorsportResultAPI.Types.Enumeration.Results.AlreadyExists);
        }
예제 #5
0
        private TimeSpan BuildOverallTime(
            MotorsportResultAPI.Types.Domain.v1.Rally.Competitor competitor,
            int stageId)
        {
            var _stageTotal = competitor.StageResults
                              .Where(stageResult => stageResult.StageId <= stageId)
                              .Aggregate(
                TimeSpan.Zero, (subStageTotal, stageResult) => subStageTotal.Add(stageResult.StageTime)
                );
            var _penaltyTotal = competitor.StageResults
                                .Where(stageResult => stageResult.StageId <= stageId)
                                .Aggregate(
                TimeSpan.Zero, (subPenaltyTotal, stageResult) => subPenaltyTotal.Add(stageResult.PenaltyTime)
                );

            return(_stageTotal.Add(_penaltyTotal));
        }