Пример #1
0
        public void TestCellSelectorOnKeyDatesTable()
        {
            //Opening Schedule Page
            TopMenu topMenuInstance = new TopMenu(driver);
            Actions builder         = new Actions(driver);

            builder.MoveToElement(topMenuInstance.TopMenuSection).Build().Perform();
            Acts.Click(topMenuInstance.ScheduleItem);

            //Select group from LeftContainer
            scheduleContentInstance = new ScheduleContent(driver);
            Acts.Click(scheduleContentInstance
                       .LeftContainerInstance
                       .GroupsInLocation
                       .GetGroupByName("DP-094-MQC"));

            //Go to Key-Dates tab

            scheduleContentInstance.KeyDatesButton.Click();

            // Select some cell in key-dates table

            ScheduleKeyDatesTab scheduleKeyDatesTabInstance = new ScheduleKeyDatesTab(driver);
            string text = scheduleKeyDatesTabInstance.KeyDatesTable.GetCellBy2Keys("Demo2", "DP-094-MQC").Text;

            Console.WriteLine("Value from cell " + text);
        }
Пример #2
0
        public static List <ScheduleContent> ParseResponse(string myResponse)
        {
            var response = JObject.Parse(myResponse);
            // check if error occured
            var report = response["report"].ToString();

            if (!string.IsNullOrWhiteSpace(report))
            {
                var ex = new ArgumentException(report);
                _logger.Error(ex);
                throw ex;
            }

            var scheduleContent = (JArray)response["ScheduleContent"];

            var weekTimetable = new List <ScheduleContent>();

            foreach (var block in scheduleContent)
            {
                try
                {
                    {
                        LessonType lessonType        = ConvertLessonType(block["tu"].ToString()[0]);
                        string     teacherName       = block["u"].ToString();
                        string     roomName          = block["r"].ToString();
                        string     subjectCode       = block["k"].ToString().Trim();
                        string     subjectNameHelper = block["s"].ToString().Trim();
                        string     subjectName       = subjectNameHelper.First().ToString().ToUpper() + subjectNameHelper.Substring(1);
                        var        content           = new ScheduleContent()
                        {
                            BlockNumber = int.Parse(block["dw"].ToString()) - 1,
                            LessonType  = lessonType,
                            TeacherName = teacherName,
                            RoomName    = roomName,
                            CourseCode  = subjectCode,
                            CourseName  = subjectName
                        };
                        weekTimetable.Add(content);
                    }
                }
                catch (Exception ex)
                {
                    _logger.Error(ex);
                    throw;
                }
            }
            return(weekTimetable);
        }
Пример #3
0
        internal ScheduleContent <TValue> GetContentFile(int DayInt)
        {
            if (!_contentdictionary.ContainsKey(DayInt))
            {
                lock (_object)
                {
                    if (!_contentdictionary.ContainsKey(DayInt))
                    {
                        ScheduleContent <TValue> content = new ScheduleContent <TValue>(DayInt, this);
                        _contentdictionary.Add(DayInt, content);
                    }
                }
            }

            return(_contentdictionary[DayInt]);
        }
Пример #4
0
        public static bool GenerateReport(string exportDirectory, ScheduleContent scheduleContent, string userName, string password)
        {
            LogExtension.LogInfo("Report exporting started", MethodBase.GetCurrentMethod(), " ExportDirectory - " + exportDirectory + " UserName - " + userName + " Password - " + password);
            var exportStatus = false;

            //try
            //{
            //    if (Directory.Exists(exportDirectory + scheduleContent.ScheduleId))
            //    {
            //        Array.ForEach(Directory.GetFiles(exportDirectory + scheduleContent.ScheduleId), File.Delete);
            //    }
            //    else
            //    {
            //        Directory.CreateDirectory(exportDirectory + scheduleContent.ScheduleId);
            //    }

            //    var thread = new Thread(delegate()
            //    {
            //        try
            //        {
            //            var reportContent = new ReportWriter();
            //            reportContent.ReportingServer = new UMPServer();
            //            reportContent.ReportServerCredential =
            //    new System.Net.NetworkCredential(userName, password);
            //            reportContent.ReportServerUrl = GlobalAppSettings.SystemSettings.BaseUrl + "/api/reportserverapi";
            //            reportContent.ReportPath = scheduleContent.ItemId.ToString();

            //            switch (scheduleContent.ExportTypeId)
            //            {
            //                case ExportType.Pdf:
            //                    reportContent.Save(
            //                        exportDirectory + scheduleContent.ScheduleId + "\\" + scheduleContent.ReportName +
            //                        ".pdf", WriterFormat.PDF);
            //                    break;

            //                case ExportType.Excel:
            //                    reportContent.Save(
            //                        exportDirectory + scheduleContent.ScheduleId + "\\" + scheduleContent.ReportName +
            //                        ".xls", WriterFormat.Excel);
            //                    break;

            //                case ExportType.Word:
            //                    reportContent.Save(
            //                        exportDirectory + scheduleContent.ScheduleId + "\\" + scheduleContent.ReportName +
            //                        ".doc", WriterFormat.Word);
            //                    break;

            //                default:
            //                    reportContent.Save(
            //                        exportDirectory + scheduleContent.ScheduleId + "\\" + scheduleContent.ReportName +
            //                        ".html", WriterFormat.HTML);
            //                    break;
            //            }
            //        }
            //        catch (Exception ex)
            //        {
            //            exportStatus = false;
            //            LogExtension.LogError("Exception while exporting report", ex, MethodBase.GetCurrentMethod(), " ExportDirectory - " + exportDirectory + " UserName - " + userName + " Password - " + password + " ScheduleId - " + scheduleContent.ScheduleId + " ExportTypeId" + scheduleContent.ExportTypeId);
            //        }
            //        exportStatus = true;
            //    });
            //    thread.SetApartmentState(ApartmentState.STA);
            //    thread.Start();
            //    thread.Join();
            //}
            //catch (Exception ex)
            //{
            //    exportStatus = false;
            //    LogExtension.LogError("Exception while exporting report", ex, MethodBase.GetCurrentMethod(), " ExportDirectory - " + exportDirectory + " UserName - " + userName + " Password - " + password + " ScheduleId - " + scheduleContent.ScheduleId + " ExportTypeId" + scheduleContent.ExportTypeId);
            //}
            return(exportStatus);
        }
Пример #5
0
        public static async Task <Timetable> ConvertAndMergeSameConsecutiveBlocks(ScheduleTimetableResult scheduleTimetable, ICourseService courseService, bool isTimetableForCourse)
        {
            var sortedBlocks = scheduleTimetable.Result.ScheduleContents
                               .OrderBy(b => b.Day)
                               .ThenBy(b => b.CourseName)
                               .ThenBy(b => b.TeacherName)
                               .ThenBy(b => b.RoomName)
                               .ThenBy(b => b.LessonType)
                               .ThenBy(b => b.BlockNumber)
                               .ToList();

            IEnumerable <Task <Block> > mergedBlocks = Merge(sortedBlocks,
                                                             (group, b2) =>
            {
                ScheduleContent b1 = group.First();
                return(b1.Day == b2.Day &&
                       b1.CourseName == b2.CourseName &&
                       b1.RoomName == b2.RoomName &&
                       b1.LessonType == b2.LessonType &&
                       (b1.BlockNumber == b2.BlockNumber - 1 ||
                        b1.BlockNumber == b2.BlockNumber));       // || b1.BlockNumber == b2.BlockNumber to eliminate duplicates (same blocks)
            },
                                                             async(group) =>
            {
                ScheduleContent firstInGroup = group.First();
                var teacherBuilder           = new StringBuilder();
                foreach (var item in group.Select(x => x.TeacherName).Distinct())
                {
                    if (string.IsNullOrEmpty(teacherBuilder.ToString()))
                    {
                        teacherBuilder.Append(item);
                    }
                    else
                    {
                        teacherBuilder.Append($", {item}");
                    }
                }
                var block = new Block()
                {
                    BlockType = ConvertToBlockType(firstInGroup.LessonType),
                    Day       = ConvertToDay(firstInGroup.Day),
                    Teacher   = teacherBuilder.ToString(),
                    Room      = firstInGroup.RoomName,
                    StartHour = (byte)(firstInGroup.BlockNumber + 6),     // block number start 1 but starting hour in school is 7:00
                    Duration  = (byte)(group.Last().BlockNumber - firstInGroup.BlockNumber + 1)
                };
                if (!isTimetableForCourse)
                {
                    Course course = await courseService.GetOrAddNotExistsCourse(firstInGroup.CourseCode,
                                                                                firstInGroup.CourseName);
                    Block courseBlock = course.Timetable?.GetBlock(block);
                    if (courseBlock != null)
                    {
                        block.BlockId = courseBlock.BlockId;
                    }
                    block.CourseId = course.Id;
                }

                return(block);
            }
                                                             );

            Timetable mergedTimetable = new(scheduleTimetable.Semester);

            foreach (var mergedBlock in mergedBlocks)
            {
                mergedTimetable.AddNewBlock(await mergedBlock);
            }
            return(mergedTimetable);
        }