Exemplo n.º 1
0
        static public void logIn(LoginForm form, string login, string password)
        {
            //form.IncorrectLoginLabel.Visible = false;
            form.setIncorrectLoginLabel(false);

            if (db.uzytkownik.Any(u => u.login == login.ToString() && u.haslo == password.ToString()))         //sprawdzam czy podany login i podane hasło są w bazie danych
            {
                form.Hide();
                MainForm mf = new MainForm(form);
                // 0 - mozliwosc wyszukiwania
                // 1 - organizator
                // 2 - kapitan
                // 3 - opiekun
                // 4 - zawodnik
                // default - mozliwosc logowania
                LoggedUserUtility.setCurrentEmail(login.ToString());


                var currentUser = LoggedUserUtility.getLoggedUser();

                var user = LoggedUserUtility.userType.lurker;
                if (currentUser.rola == "zawodnik")
                {
                    user = LoggedUserUtility.userType.contestant;
                    //TODO kapitan, sprawdzic czy w tabeli druzyna jest jako kapitan
                    if (ContestantDataUtility.checkIfCaptain(LoggedUserUtility.getLoggedContestant().id_zawodnik))
                    {
                        user = LoggedUserUtility.userType.captain;
                    }
                }
                else
                {
                    var currentEmployee = LoggedUserUtility.getLoggedEmployee();

                    if (currentEmployee.stanowisko == "organizator")
                    {
                        user = LoggedUserUtility.userType.organiser;
                    }
                    else if (currentEmployee.stanowisko == "opiekun")
                    {
                        user = LoggedUserUtility.userType.supervisor;
                    }
                }
                // jesli do set menu podany user > 4 to nie ma mozliwosci wyszukiwania
                LoggedUserUtility.setCurrentUserType(user);
                mf.SetMenu(user);
                mf.Show();
            }
            else
            {
                form.setIncorrectLoginLabel(true);
            }
        }
        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;
            }
        }
        internal void SetProfile(LoggedUserUtility.userType user, string groupBox, string inviteMessage, string label1, string label2, string label3, string label4, string label5, string label6, string label7)
        {
            this.ProfileView.Text  = groupBox;
            this.label1.Text       = label1;
            this.label2.Text       = label2;
            this.label3.Text       = label3;
            this.label4.Text       = label4;
            this.label5.Text       = label5;
            this.label6.Text       = label6;
            this.label7.Text       = label7;
            this.InviteButton.Text = inviteMessage;

            if (inviteMessage == "Zaproś do zawodów")
            {
                if (user == LoggedUserUtility.userType.supervisor)  //tylko opiekun (user = 3) może dodać druzyne do zawodów
                {
                    InviteButton.Visible = true;
                    comboBox1.Visible    = true;
                    //znajduje zawody obecnie zalogowanego organizatora/opiekuna i wyświetlam je w comboBox1
                    var invitingUser      = LoggedUserUtility.getLoggedEmployee();
                    var usersCompetitions = LoggedUserUtility.getEmployeesCompetitions(invitingUser.id_pracownik);

                    comboBox1.ValueMember   = "id_zawody";
                    comboBox1.DisplayMember = "nazwa";
                    comboBox1.DataSource    = usersCompetitions;
                }
            }
            else
            {
                if (user == LoggedUserUtility.userType.captain)   //tylko kapitan (user = 2) może dodać zawodnika do drużyny
                {
                    InviteButton.Visible = true;
                    comboBox1.Visible    = true;

                    //znajduje drużyny obecnie zalogowanego kapitana i wyświetlam jest w comboBox1
                    var captain       = LoggedUserUtility.getLoggedContestant();
                    var captainsTeams = db.druzyna.Where(d => d.id_kapitan == captain.id_zawodnik).ToList();

                    comboBox1.ValueMember   = "id_druzyna";
                    comboBox1.DisplayMember = "nazwa";
                    comboBox1.DataSource    = captainsTeams;
                }
            }

            //MatchesView.Rows.Add("Motocross Lublin 1:0 Olsztyn");
            //MatchesView.Rows.Add("XYZ 0:1 Motocross Lublin");
        }
 static public void deleteCompetition(string name, 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)   //sprawdzenie uprawnien
         {
             db.zawody.Remove(competition);
             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;
     }
 }
        internal void SetWindow(string kind, int competitionId = 0)
        {
            var type = LoggedUserUtility.getCurrentUserType();

            if (kind == "zawody")
            {
                CompetitionBox.Text   = "Lista zawodów";
                ConfirmButton.Visible = false;
                if (type == LoggedUserUtility.userType.contestant || type == LoggedUserUtility.userType.captain)
                {
                    fillWithAttendedCompetitions(CompetitionView, LoggedUserUtility.getLoggedContestant().id_zawodnik);
                }
                else if (type == LoggedUserUtility.userType.supervisor || type == LoggedUserUtility.userType.organiser)
                {   //wyswietlanie zawodow zarzadzanych przez organizatora/opiekuna
                    List <zawody> competitions       = LoggedUserUtility.getEmployeesCompetitions(LoggedUserUtility.getLoggedEmployee().id_pracownik);
                    var           competitionsAccept = competitions.Select(x => new { Nazwa = x.nazwa, Akcja = "Akceptuj" }).ToList();
                    CompetitionView.DataSource = competitions.Select(x => new { Nazwa = x.nazwa, competitionId = x.id_zawody }).ToList();
                }
            }
            else if (kind == "druzyny")  //done
            {
                CompetitionBox.Text   = "Lista drużyn";
                ConfirmButton.Visible = false;

                fillWithInvitations(CompetitionView, LoggedUserUtility.getLoggedContestant().id_zawodnik);
            }
            else
            {
                CompetitionBox.Text = "Lista wyścigów";

                ConfirmButton.Visible = false;
                if (type == LoggedUserUtility.userType.contestant || type == LoggedUserUtility.userType.captain)  //wyswietlanie wyscigow w ktorych bierze udzial/jest zaproszony zawodnik
                {
                    fillWithRaces(CompetitionView, LoggedUserUtility.getLoggedContestant().id_zawodnik, competitionId);
                    //TODO po kliknieciu zaakceptowane update _zawodnik_wyscig
                }
                else if (type == LoggedUserUtility.userType.supervisor || type == LoggedUserUtility.userType.organiser) // wyscigi ktorymi zarzadzaja organizator/opiekun
                {
                    var races = CompetitionDataUtility.getRacesInCompetition(competitionId);
                    CompetitionView.DataSource = races.AsEnumerable().Select((x, index) => new { Nazwa = "Wyścig nr. " + (index + 1), Akcja = "Dodaj trasę", competitionId = x.id_wyscig }).ToList();  //idwyscig czy dobrze
                    //po kliknieciu przejscie do edycji trasy wyscigu
                }
            }
            CompetitionView.ClearSelection();
            CompetitionView.CurrentCell = null;
        }
        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;
            }
        }