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; } }
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; } }