示例#1
0
        public static void AddTimetableToCalendar(ITimetable timetable, DateTime dateOfMondayOfWeekOne)
        {
            _dateOfMondayOfWeekOne = dateOfMondayOfWeekOne;
            List <Event> events = ConvertTimetableToEvents(timetable);

            AddEventsToCalendar(events);
        }
 public CurrencyRateProcessor(
     ICurrencyNameFormatter formatter,
     ITimetable timetable)
 {
     this.formatter = formatter;
     this.timetable = timetable;
 }
示例#3
0
        public void GenerateGui(ITimetable timetable)
        {
            var slots = timetable.ToList();

            ClearGui();
            slots.Sort();
            NoOfSelectedSubjectLabel.Content = GetSubjectCount(slots);
            GenerateTimetableView(slots);
            DescriptionViewer.Update(slots);
        }
示例#4
0
        private static List <Event> ConvertTimetableToEvents(ITimetable timetable)
        {
            List <Slot> slotList = timetable.ToList();
            var         events   = new List <Event>();

            foreach (var slot in slotList)
            {
                events.Add(ConvertSlotToEvent(slot));
            }
            return(events);
        }
示例#5
0
 public WriterApp(
     IRatesUpdater ratesUpdater,
     ITimetable timetable,
     ISystemClock clock,
     ILogger <WriterApp> logger)
 {
     this.ratesUpdater = ratesUpdater;
     this.timetable    = timetable;
     this.clock        = clock;
     this.logger       = logger;
 }
 public Page_AddToGoogleCalendar(ITimetable timetable, DateTime dateOfMondayOfWeekOne)
 {
     InitializeComponent();
     _timetable             = timetable;
     _dateOfMondayOfWeekOne = dateOfMondayOfWeekOne;
     if (_dateOfMondayOfWeekOne.DayOfWeek != DayOfWeek.Monday)
     {
         InstructionLabel.Visibility = Visibility.Visible;
         return;
     }
     OpenDialogHost(_dateOfMondayOfWeekOne);
 }
示例#7
0
        public void Remove_BasicTest(ITimetable timetable)
        {
            timetable.AddOrUpdate("a", 100);
            timetable.AddOrUpdate("b", 50);
            timetable.Remove("a");

            var items = timetable.GetTimetable();

            items.Count.Should().Be(1);
            items[0].RouteId.Should().Be("b");
            items[0].MsBeforeArrival.Should().Be(50);
        }
示例#8
0
 public bool Contains(ITimetable item)
 {
     return(_timetables.Contains(item));
 }
示例#9
0
 public void Add(ITimetable timetable)
 {
     _timetables.Add(timetable);
 }
示例#10
0
 bool ICollection <ITimetable> .Remove(ITimetable item)
 {
     return(_timetables.Remove(item));
 }
示例#11
0
 private IEnumerable <ListItem> GetAllItems(ITimetable timetable, Func <ITrain, string> func)
 => timetable.Trains.Select(func).Distinct().Where(s => s != "").OrderBy(s => s).Select(s => new ListItem {
     Text = s
 }).ToArray();
 public override Task OnActivateAsync()
 {
     _timetable = new NaiveTimetable();
     return(base.OnActivateAsync());
 }
 public Page_SaveTimetableAsImage(ITimetable input)
 {
     InitializeComponent();
     TimeTableGui.GenerateGUI(input);
 }
        private void Parsing(IXLWorksheet worksheet, ITimetable timetable)
        {
            //нужно получить список групп
            //из них поймем длину таблицы (*кол-во столбцов)
            const int firstGroup = 4;                 //где неачинается полезная информация
            IXLRow    currentRow = FindRaw(worksheet, "№ гр.", 1);
            var       index      = firstGroup;        //начало групп

            while (!currentRow.Cell(index).IsEmpty()) //ищем конец групп
            {
                index++;
            }
            var lastGroup      = index - 1;
            var groupRow       = currentRow.Row(firstGroup, lastGroup); //строка групп
            var pastDaysBuffer = 0;                                     //сдвиг строк относительно предыдущих дней

            //берем range n-го интервала времени для всех групп
            var groupInterval = GetGroupInterval(worksheet, groupRow.RowNumber()); //кол-во строк для номера группы

            for (var dayIndex = 0; dayIndex < 6; dayIndex++)                       //+совместные пары для групп
            {
                //определяем, сколько пар в этом дне (может еще в 19:05 и еще одна быть)
                var lessonsCount = 1;
                var dayColumn    = worksheet.FirstColumnUsed();
                while (dayColumn.Cell(groupRow.FirstCell().Address.RowNumber + groupInterval - 1
                                      + lessonsCount * 4 + pastDaysBuffer).Style.Border.BottomBorder != XLBorderStyleValues.Medium)
                {
                    lessonsCount++;
                }

                //начинаем проверять каждое время на пары
                for (var timeIndex = 0; timeIndex < lessonsCount; timeIndex++)
                {
                    index = groupRow.FirstCell().Address.RowNumber + groupInterval + 4 * timeIndex + pastDaysBuffer; //индекс обрабатываемой строки
                    var currentRange = worksheet.Range(index, firstGroup, index + 3, lastGroup);
                    //идти по ней, проверяя на жирный текст
                    //при нахождении искать первую границу справа, потом снизу
                    for (var i = 1; i <= lastGroup - firstGroup + 1; i++)
                    {
                        for (var k = 1; k < 4; k += 2)
                        {
                            var currentCell = currentRange.Cell(k, i);
                            if (currentCell.IsMerged() && (currentCell.MergedRange().FirstCell() != currentCell))
                            {
                                continue;
                            }
                            if (currentCell.Style.Font.Bold && (currentCell.Value.ToString() != ""))
                            {
                                timetable.Lessons.Add(GetLessonData(worksheet, groupRow, currentRange, i, dayIndex, timeIndex, k));
                            }
                            if (currentCell.IsMerged())
                            {
                                var mergedRange = currentCell.MergedRange();
                                for (var j = 1; j <= mergedRange.ColumnCount(); j++)
                                {
                                    string group = worksheet.Cell(groupRow.FirstCell().Address.RowNumber, mergedRange.Cell(1, j).Address.ColumnNumber).Value.ToString();
                                    Lesson l     = timetable.Lessons[timetable.Lessons.Count - 1] as Lesson;                                   //я бегло не могу сообразить, что здесь может пойти не так, а глубже я уже не в состояни вникать
                                    timetable.Lessons.Add(new Lesson(l.Time, l.Type, group, l.Room, l.WeekType, l.Day, l.Teacher, l.Subject)); //работает - не трожь
                                }
                            }
                        }
                    }
                }
                pastDaysBuffer += lessonsCount * 4 + 1;
            }

            //return timetable;
        }
 public void GenerateGUI(ITimetable timetable)
 {
     TimeTableGui.GenerateGui(timetable);
     TimetableDescriptionViewer.GenerateAsImage(timetable.ToList());
 }