/** KKT VARŽYBŲ PIRMAS REZULTATŲ SKAIČIAVIMO ALGORITMAS*/
        public List <ResultModel> ResultsKKT1(int compId, int resultType, string group)
        {
            List <ResultModel> results = new List <ResultModel>();

            List <CompetitorsKKTModel> compTeam = CompetitionDB.TblCompetitorsKKT.ToArray().Where(x => x.CompetitionId == compId && x.Group == group).Select(x => new CompetitorsKKTModel(x)).ToList();
            List <RouteKKTModel>       routes   = CompetitionDB.TblRoutesKKT.ToArray().Where(x => x.CompetitionId == compId && x.Type == group).Select(x => new RouteKKTModel(x)).ToList();

            foreach (var ct in compTeam)
            {
                ResultModel result = new ResultModel();
                int         teamId = ct.TeamId;
                result.TeamName = CompetitionDB.TblTeams.Find(teamId).Name.ToString();
                List <JudgesPaperKKTModel> judgesPapers = new List <JudgesPaperKKTModel>();
                int sumTime = 0;
                foreach (var r in routes)
                {
                    JudgesPaperKKTModel jp = CompetitionDB.TblJudgesPapersKKT.ToArray().Where(x => x.RouteId == r.Id && x.TeamId == teamId).Select(x => new JudgesPaperKKTModel(x)).FirstOrDefault();
                    jp.RouteName = r.Name;
                    if (TimeCompare(MaxTimeRoute(r.Id), jp.Time) && jp.Time != "00:00:00")
                    {
                        jp.Points = r.Points;
                        int penaltySum = PointsFromPenalties(jp.Id);
                        jp.PenaltySum = penaltySum;
                        int routeTimeFromJP = TimeToSec(jp.Time);
                        sumTime += (penaltySum * 30) + routeTimeFromJP;
                        if (penaltySum == 0)
                        {
                            jp.TimewithPenalty = jp.Time;
                        }
                        else
                        {
                            jp.TimewithPenalty = SecToTime((penaltySum * 30) + routeTimeFromJP);
                        }

                        result.PlusPoints(r.Points);
                    }
                    else
                    {
                        jp.Time            = "00:00:00";
                        jp.TimewithPenalty = "00:00:00";
                    }

                    judgesPapers.Add(jp);
                }
                result.JudgesPapers = judgesPapers;
                result.TimeSum      = SecToTime(sumTime);
                results.Add(result);
            }
            List <ResultModel> resultsOrder = results.OrderByDescending(x => x.PointsSum).ThenBy(x => x.TimeSum).ToList();
            int i = 1;

            foreach (ResultModel res in resultsOrder)
            {
                res.Place = i;
                i++;
            }

            return(resultsOrder);
        }
Exemple #2
0
        public HttpResponseMessage Get(int routeId, int teamId)
        {
            if (CompetitionDB.TblJudgesPapersKKT.FirstOrDefault(x => x.TeamId == teamId && x.RouteId == routeId) != null)
            {
                JudgesPaperKKTModel         paper    = CompetitionDB.TblJudgesPapersKKT.ToArray().Where(x => x.TeamId == teamId && x.RouteId == routeId).Select(x => new JudgesPaperKKTModel(x)).FirstOrDefault();
                List <PenaltyQuantityModel> quantity = CompetitionDB.TblPenaltyQuantities.ToArray().Where(x => x.JudgesPaperId == paper.Id).Select(x => new PenaltyQuantityModel(x)).ToList();
                foreach (var q in quantity)
                {
                    q.PenaltyName = CompetitionDB.TblPenalties.FirstOrDefault(x => x.Id == q.PenaltyId).Name.ToString();
                }
                paper.Penalties  = quantity;
                paper.TeamName   = CompetitionDB.TblTeams.FirstOrDefault(x => x.Id == paper.TeamId).Name.ToString();
                paper.RouteName  = CompetitionDB.TblRoutesKKT.FirstOrDefault(x => x.Id == paper.RouteId).Name.ToString();
                paper.PenaltySum = PointsFromPenalties(paper.Id, quantity);
                /** Kaip padaryti dėl skaičiavimo. Baudos verčiamos į laiką ar minusiuojamos nuo taškų*/
                /***paper.TimeWithPenalty(SecToTime((TimeToSec(paper.Time)) + (paper.PenaltySum * 30)));*/

                return(ToJsonOK(paper));
            }

            return(ToJsonNotFound("Objektas nerastas."));
        }