/// <summary> /// Metoda pobierająca tabelę ze zgłoszeniami urlopowymi (i ich właścicielami) wymagającymi zatwierdzenia/odrzucenia /// różnego typu w zależności od tego, przej jaki typ formularza została wywołana. /// </summary> /// <param name="form">Formularz wywołujący.</param> /// <returns>Zwraca tabelę zawierającą zgłoszenia urlopowe wymagające zatwierdzenia/odrzucenia. /// Tabela zawiera kolumny: "Employee id", "Position", "Name", "Surname", "e-mail", "Leave Id", /// "Type", "Status" /// "First day", "Last day", "Remarks", "Used days".</returns> /// <exception cref="SqlException">An exception occurred while executing the command against a locked row.</exception> /// <exception cref="InvalidOperationException">The current state of the connection is closed.</exception> /// <exception cref="ArgumentException">Rzucany, gdy formularz nie jest typu, który pozwala na tą operację.</exception> private static DataTable GetNeedsAction(LeaveManagerForm form) { //Zapytanie sql zczytujące zgłoszenia wymagające zatwierdzenia/odrzucenia. SqlCommand command = new SqlCommand("SELECT E.Employee_ID AS 'Employee id', P.Description AS 'Position', " + "E.Name, E.Surname, E.EMail AS 'e-mail',L.Leave_ID AS 'Leave Id', LT.Name AS 'Type', " + "LS.Name AS 'Status', L.First_day AS 'First day', L.Last_day AS 'Last day', L.Remarks, L.Used_days " + "AS 'Used days' FROM Employee E, " + "Leave L, Leave_type LT, Position P, Status_type LS WHERE L.Employee_ID = E.Employee_ID " + "AND L.LT_ID = LT.LT_ID AND P.Position_ID = E.Position_ID AND LS.ST_ID = L.LS_ID AND " + "LS.Name = @Name ORDER BY L.First_day", form.Connection); //Jeżeli formularz posiada uruchomioną transakcję, to dodaj do niej zapytanie. if (form.TransactionOn) command.Transaction = form.Transaction; //Ustaw parametr nazwy statusu w zależności od typu formularza. if (form.GetType() == new FormAssistant().GetType()) { command.Parameters.Add("@Name", SqlDbType.VarChar).Value = "Pending validation"; } else//to znaczy, że manager //todo ładny koment :P { if (form.GetType() == new FormManager().GetType()) { command.Parameters.Add("@Name", SqlDbType.VarChar).Value = "Pending manager aproval"; } else { throw new ArgumentException(); } } //Stworzenie obiektu czytającego wyniki zapytania. SqlDataReader reader = command.ExecuteReader(); DataTable Result = new DataTable(); //Zczytanie wyników zapytania do tabeli. Result.Load(reader); reader.Close(); return Result; }