static public List <result> getRaceStandings(List <int> contestantsId, wyscig race, int raceNumber)
        {
            var raceResults = new List <result>();

            foreach (var contestantId in contestantsId)
            {
                result r = ContestantDataUtility.getContestantsRaceResult(contestantId, race, raceNumber);
                raceResults.Add(r);
            }
            return(raceResults);
        }
        static public void createCompetition(int disciplineId, int numberOfRaces, string city, int supervisorId, string name, string schedule, string qualifiers, ref bool successfulOperation, TemplateForm form)
        {
            if (!raceNameTaken(name))   //jeśli nazwa nie jest zajęta
            {
                if (competitionScheduleCheck(Convert.ToInt32(numberOfRaces), schedule))
                {
                    var currentEmployee = LoggedUserUtility.getLoggedEmployee();

                    var competition = new zawody
                    {
                        id_organizator     = currentEmployee.id_pracownik,
                        id_dyscyplina      = disciplineId,
                        nazwa              = name,
                        id_opiekun_zawodow = supervisorId
                    };
                    db.zawody.Add(competition);
                    db.SaveChanges();

                    var dates = new List <DateTime>();
                    dates = getCompetitionDates(schedule);

                    for (int i = 0; i < dates.Count; ++i)
                    {
                        var race = new wyscig {
                            miasto = city, id_zawody = competition.id_zawody, data = dates[i], id_trasa = 1
                        };
                        db.wyscig.Add(race);
                        db.SaveChanges();

                        if (checkQualifiersPossibility(numberOfRaces, qualifiers) && i == 0)
                        {
                            competition.id_kwalifikacje = race.id_wyscig;
                            db.SaveChanges();
                        }
                    }
                    competition.data_poczatek = dates[0];
                    competition.data_koniec   = dates[dates.Count - 1];
                    db.SaveChanges();
                }
                else
                {
                    MessageBox.Show("Błąd przy wprowadzaniu harmonogramu wyścigu", "Niepowodzenie");
                    successfulOperation = false;
                }
            }
            else
            {
                MessageBox.Show("Podana nazwa wyścigu jest już zajęta", "Niepowodzenie");
                successfulOperation = false;
            }
        }
Ejemplo n.º 3
0
        static public teamResult getTeamsRaceResult(int teamId, wyscig race, int raceNumber, List <int> contestantsId)
        {
            var raceStandings   = CompetitionDataUtility.getRaceStandings(contestantsId, race, raceNumber);
            var competitionName = db.zawody.Where(z => z.id_zawody == race.id_zawody).SingleOrDefault().nazwa;

            var        aggregatedPoints = sumTeamsPoints(raceStandings);
            var        place            = getTeamsPlaceInRace(aggregatedPoints, teamId);
            teamResult r;

            r.place           = place + 1;
            r.competitionName = competitionName;
            r.points          = 0;
            r.teamId          = teamId;
            r.raceName        = ", wyścig numer " + raceNumber.ToString();
            return(r);
        }
        static public result getContestantsRaceResult(int id, wyscig race, int raceNumber)
        {
            var raceResult = db.wynik.Where(w => w.id_wyscig == race.id_wyscig && w.id_zawodnik == id).SingleOrDefault();
            var time       = TimeSpan.Zero;

            if (raceResult != null)
            {
                time = raceResult.czas.Value;
            }
            var racePlace = (from _wynik in db.wynik
                             where (_wynik.czas < time && _wynik.id_wyscig == race.id_wyscig && _wynik.czas != null && time != null)
                             select _wynik.czas).Count();
            var competitionName = db.zawody.Where(z => z.id_zawody == race.id_zawody).SingleOrDefault().nazwa;

            var    teamIds = getContestantsTeams(id).Select(t => t.id_druzyna).ToList();
            result r;

            r.competitionName = competitionName;
            r.points          = 0;
            r.contestantId    = id;
            r.raceName        = ", wyścig numer " + raceNumber.ToString();
            r.teamIds         = teamIds;
            if (time != null)
            {
                r.place = racePlace + 1;
                if (racePlace < 10)
                {
                    r.points = 500 - racePlace * 50;
                }
                return(r);
            }
            else
            {
                r.place = 0;
                return(r);
            }
        }
        static public void updateCompetition(int disciplineId, int numberOfRaces, string city, int supervisorId, string name, string schedule, string qualifiers, ref bool successfulOperation, TemplateForm form)
        {
            if (raceNameTaken(name))
            {
                var competition = db.zawody.FirstOrDefault(z => z.nazwa == name);

                if (LoggedUserUtility.getLoggedEmployee().id_pracownik == competition.id_organizator)   //sprawdzam uprawnienia
                {
                    competition.id_dyscyplina      = disciplineId;
                    competition.id_opiekun_zawodow = supervisorId;

                    if (city.Length > 0)   //sprawdzam czy wpisano jakies miasto
                    {
                        var races = db.wyscig.Where(w => w.id_zawody == competition.id_zawody);
                        foreach (var race in races)
                        {
                            race.miasto = city.ToString();
                        }
                        db.SaveChanges();
                    }

                    if (competitionScheduleCheck(numberOfRaces, schedule))  //sprawdzam czy liczba wyscigow pokrywa sie z iloscia dat
                    {
                        var dates = new List <DateTime>();
                        dates = getCompetitionDates(schedule);

                        var races     = db.wyscig.Where(w => w.id_zawody == competition.id_zawody);
                        int raceIndex = 0;
                        foreach (var race in races)
                        {
                            if (dates.Count <= raceIndex)
                            {
                                db.wyscig.Remove(race);
                            }
                            else
                            {
                                race.data = dates[raceIndex];
                            }
                            ++raceIndex;
                        }
                        if (dates.Count > races.Count())   //jesli po edycji jest więcej wyścigów niż poprzednio
                        {
                            var cityName = "";
                            if (city.Length == 0)  //sprawdzam czy przy edycji zostało podane nowe miasto
                            {
                                cityName = races.FirstOrDefault <wyscig>().miasto;
                            }
                            else
                            {
                                cityName = city;
                            }

                            for (int i = races.Count(); i < dates.Count; ++i)
                            {
                                var race = new wyscig {
                                    miasto = cityName, id_zawody = competition.id_zawody, data = dates[i], id_trasa = 1
                                };
                                db.wyscig.Add(race);
                            }
                        }

                        //todo qualifiers
                        competition.data_poczatek = dates[0];
                        competition.data_koniec   = dates[dates.Count - 1];
                        db.SaveChanges();
                    }
                }
                else
                {
                    MessageBox.Show("Nie masz uprawnień do usunięcia tych zawodów", "Niepowodzenie");
                    successfulOperation = false;
                }
            }
            else
            {
                MessageBox.Show("Nie znaleziono zawodów o podanej nazwie", "Niepowodzenie");
                successfulOperation = false;
            }
        }