Esempio n. 1
0
        private void RefreshGroupsAndSubjects()
        {
            GroupsAndSubjects.Clear();
            var dct = new Dictionary <int, GroupsAndSubjects>();

            foreach (var value in RequestToDataBase.Instance.ReadGroupsAndSubjects())
            {
                dct.Add(value.Group.CodeOfGroup, value);
            }
            var all = ClassGroups.Select(g => dct.TryGetValue(g.CodeOfGroup, out GroupsAndSubjects gs) ? gs : CreateEmpty(g));

            foreach (var value in all)
            {
                GroupsAndSubjects.Add(value);
            }
        }
Esempio n. 2
0
        public GroupsAndSubjects[] ReadGroupsAndSubjects(int term)
        {
            List <GroupsAndSubjects> grandsb  = new List <GroupsAndSubjects>();
            List <SubjectInform>     subjlist = new List <SubjectInform>();

            if (Open())
            {
                using (FbTransaction dbtran = conn.BeginTransaction())
                {
                    using (FbCommand selectCommand = new FbCommand())
                    {
                        selectCommand.CommandText = "select id_group, name_of_group, term, groups.id_department, d1.name_of_department, id_subject, name_of_subject, subjects.id_department, d2.name_of_department, lecturehour, exercisehour, labhour,  f1.id_faculty, f1.name_of_faculty " +
                                                    "from (GroupsAndSubjects join Groups using(id_group) join departments d1 on d1.id_department = groups.id_department join Subjects using(id_subject) join departments d2 on d2.id_department = subjects.id_department join faculty f1 on d1.id_faculty = f1.id_faculty)  where term = @Term";
                        selectCommand.Connection  = conn;
                        selectCommand.Transaction = dbtran;
                        selectCommand.Parameters.AddWithValue("@Term", term);
                        FbDataReader reader = selectCommand.ExecuteReader();
                        while (reader.Read())
                        {
                            if (!grandsb.Exists(g => g.Group.CodeOfGroup == reader.GetInt32(0)))
                            {
                                var sbinf = new SubjectInform
                                {
                                    Subject = new Subject
                                    {
                                        CodeOfSubject = reader.GetInt32(5),
                                        NameOfSubject = reader.GetString(6),
                                        Department    = new Department
                                        {
                                            CodeOfDepartment = reader.GetInt32(7),
                                            NameOfDepartment = reader.GetString(8)
                                        }
                                    },
                                    LectureHour    = reader.GetInt32(9),
                                    ExerciseHour   = reader.GetInt32(10),
                                    LaboratoryHour = reader.GetInt32(11)
                                };
                                subjlist.Add(sbinf);

                                var GroupsSubjects = new GroupsAndSubjects
                                {
                                    Group = new Group
                                    {
                                        CodeOfGroup = reader.GetInt32(0),
                                        NameOfGroup = reader.GetString(1),
                                        Term        = reader.GetInt32(2),
                                        Department  = new Department
                                        {
                                            CodeOfDepartment = reader.GetInt32(3),
                                            NameOfDepartment = reader.GetString(4),
                                            Faculty          = new Faculty
                                            {
                                                CodeOfFaculty = reader.GetInt32(12),
                                                NameOfFaculty = reader.GetString(13)
                                            }
                                        }
                                    },
                                    InformationAboutSubjects = subjlist.ToArray()
                                };
                                grandsb.Add(GroupsSubjects);
                                subjlist.Clear();
                            }
                            else
                            {
                                var sbinf = new SubjectInform
                                {
                                    Subject = new Subject
                                    {
                                        CodeOfSubject = reader.GetInt32(5),
                                        NameOfSubject = reader.GetString(6),
                                        Department    = new Department
                                        {
                                            CodeOfDepartment = reader.GetInt32(7),
                                            NameOfDepartment = reader.GetString(8)
                                        }
                                    },
                                    LectureHour    = reader.GetInt32(9),
                                    ExerciseHour   = reader.GetInt32(10),
                                    LaboratoryHour = reader.GetInt32(11)
                                };
                                foreach (var group in grandsb)
                                {
                                    if (group.Group.CodeOfGroup == reader.GetInt32(0))
                                    {
                                        var temp = group.InformationAboutSubjects.Append(sbinf);
                                        group.InformationAboutSubjects = temp.ToArray();
                                    }
                                }
                            }
                        }
                    }
                    dbtran.Commit();
                    return(grandsb.ToArray());
                }
            }
            return(null);
        }