private User GetUserFromRow(MySqlDataReader reader)
        {
            User user = new User();

            UserAccountType accountType = (UserAccountType)Enum.ToObject(typeof(UserAccountType), reader.GetInt32(1));

            if (accountType is UserAccountType.Student)
            {
                Student student = new Student
                {
                    StudyYear = reader.GetInt32(6)
                };

                int?facultyId        = !reader.IsDBNull(7) ? (int?)reader.GetInt32(7) : null;
                int?programId        = !reader.IsDBNull(8) ? (int?)reader.GetInt32(8) : null;
                int?specializationId = !reader.IsDBNull(9) ? (int?)reader.GetInt32(9) : null;

                if (facultyId != null)
                {
                    Faculty faculty = ((App)App.Current).faculties.GetFacultyById((int)facultyId);

                    if (programId != null)
                    {
                        StudyProgram program = faculty.StudyPrograms[(int)programId];
                        student.StudyProgram = program;

                        if (specializationId != null)
                        {
                            StudyProgramSpecialization specialization = program.StudyProgramSpecializations[(int)specializationId];
                            student.StudyProgramSpecialization = specialization;
                        }
                    }
                }

                user = student;
            }
            else if (accountType is UserAccountType.FacultyMember)
            {
                FacultyMember facultyMember = new FacultyMember
                {
                    Faculty      = ((App)App.Current).faculties.GetFacultyById(reader.GetInt32(10)),
                    AcademicRank = (AcademicRank)Enum.ToObject(typeof(AcademicRank), reader.GetInt32(11)),
                    StudyField   = ((App)App.Current).faculties.GetStudyFieldById(reader.GetInt32(12))
                };

                user = facultyMember;
            }

            user.UserId      = reader.GetInt32(0);
            user.FirstName   = reader.GetString(2);
            user.LastName    = reader.GetString(3);
            user.PhoneNumber = !reader.IsDBNull(4) ? reader.GetString(4) : null;
            user.PhoneFormat = !reader.IsDBNull(4) ? reader.GetString(5) : null;

            return(user);
        }
        public int GetStudyProgramSpecializationId(StudyProgram program, StudyProgramSpecialization specialization)
        {
            foreach (var item in program.StudyProgramSpecializations)
            {
                if (item.Value.Name == specialization.Name)
                {
                    return(item.Key);
                }
            }

            return(-1);
        }