/// <summary> /// Pobiera z bazy numer pomieszczenia, do którego przypisany jest/był dany pracownik we wskazanym dniu. /// </summary> /// <param name="workerId">ID pracownika, którego gabinet ma zostać znaleziony.</param> /// <param name="date"> /// Data, dla której obowiązywać ma przypisanie wskazanego pracownika do poszukiwanego pomieszczenia. /// Wartość null powoduje, że ta metoda również zwraca null. /// </param> /// <returns> /// Numer gabinetu, /// null jeśli nie gabinetu, nie znaleziono pracownika o podanym ID lub drugi argument to null. /// </returns> public string GetRoomNumber(int workerId, DateTime date) { string roomNumber = null; if (date != null && workerId > 0) { // szukanie gabinetu, do którego wskazany pracownik jest/był przypisany w wybranym dniu A_DictionaryRoom entity = userService.SelectRoom(x => x.WorkerId == workerId && x.DateFrom <= date && (x.DateTo == null || x.DateTo >= date)); if (entity != null) { roomNumber = entity.Number; } } return(roomNumber); }
/// <summary> /// Pobiera z tabeli A_DictionaryRooms rekord, którego id zawiera spełniający podane kryteria rekord z tabeli A_WorkersRooms. /// </summary> /// <param name="predicate">Funkcja (predykat) sprawdzająca warunek dla każdego elementu. Wartość null powoduje, że ta metoda również zwraca null.</param> /// <returns> /// Obiekt reprezentujący rekord z tabeli A_DictionaryRooms, /// null jeżeli nie znaleziono gabinetu odpowiadającego podanym warunkom lub podany argument to null. /// </returns> public A_DictionaryRoom SelectRoom(System.Linq.Expressions.Expression <Func <A_WorkersRoom, bool> > predicate) { // A_DictionaryRoom <---> A_WorkersRoom <---> A_Workers if (predicate != null) { db = new MedicalCenterDBContainer(); // znalezienie rekordu wiążącego A_Workers.Id z A_DictionaryRoom.Id A_WorkersRoom temp = db.A_WorkersRooms.FirstOrDefault(predicate); // zwrócenie numeru gabinetu lub null, jeśli nie znaleziono (lub nie znaleziono powiązania między gabinetem a pracownikiem) if (temp != null) { // pobranie obiektu z numerem telefonu A_DictionaryRoom room = db.A_DictionaryRooms.FirstOrDefault(x => x.Id == temp.RoomId); if (room != null) { // jeśli pobrany wpis był aktualizowany, szukana jest jego najnowsza wersja while (room.New > 0) { room = db.A_DictionaryRooms.FirstOrDefault(x => x.Id == room.New); } // jeśli wpis został oznaczony jako usunięty, zwracany jest null if (room.IsDeleted) { room = null; } } db.Dispose(); return(room); } else { return(null); } } else { return(null); } }
/// <summary> /// Pobiera z bazy ID poradni, w ramach której przyjmuje/przyjmował dany lekarz we wskazanym dniu. /// </summary> /// <param name="doctorId">ID lekarza, dla którego poradnia ma zostać znaleziona.</param> /// <param name="date"> /// Data, dla której obowiązywać ma przynależność wskazanego lekarza do poszukiwanej poradni. /// Wartość null powoduje, że ta metoda zwraca wartość -1. /// </param> /// <returns> /// ID poradni większe od 0, /// 0 jeśli nie znaleziono takiej poradni lub nie znaleziono lekarza o podanym ID, /// -1 jeśli drugi argument to null. /// </returns> public int GetClinicId(int doctorId, DateTime date) { int clinicId = 0; if (date != null && doctorId > 0) { A_DictionaryRoom entity = userService.SelectRoom(x => x.WorkerId == doctorId && x.DateFrom <= date && (x.DateTo == null || x.DateTo >= date)); if (entity != null) { clinicId = entity.ClinicId; } } else { clinicId = -1; } return(clinicId); }