/// <summary> /// Изменить диапазон дней. /// </summary> /// <param name="numberOfPairsPerDay">На какой изменить.</param> /// <param name="dateBegin">Дата начала диапазона.</param> /// <param name="dateEnd">Дата окончания диапазона.</param> public void AddDayMany(HowDays numberOfPairsPerDay, DateTime dateBegin, DateTime dateEnd) { int beginInd = Array.FindIndex(DaysOfStudies, d => d.Date.Date == dateBegin.Date); int endInd = Array.FindIndex(DaysOfStudies, d => d.Date.Date == dateEnd.Date); for (int i = beginInd; i <= endInd; i++) { DaysOfStudies[i].Study = numberOfPairsPerDay; } }
/// <summary> /// У указанного дня недели устанавливает тип дня. /// </summary> /// <param name="dayOfWeek">День недели.</param> /// <param name="numberOfPairsPerDay">Тип дня(выходной, учебный..)</param> public void AddDayWeek(DayOfWeek dayOfWeek, HowDays numberOfPairsPerDay) { for (int i = 0; i < DaysOfStudies.Length; i++) { if (DaysOfStudies[i].Date.DayOfWeek == dayOfWeek) { DaysOfStudies[i].Study = numberOfPairsPerDay; i += 6; } } }
/// <summary> /// Изменить один день Консоль. /// </summary> /// <param name="numberOfPairsPerDay">На какой изменить.</param> private void AddDayOneConsole(HowDays numberOfPairsPerDay) { char characterInput; do { DateTime date = DateValidationCheckConsole("Введите дату между", BeginSemestr, EndSemestr); AddDayOne(numberOfPairsPerDay, date); Console.WriteLine($"Введите 'y' если хотите добавить еще один день."); characterInput = Console.ReadKey(true).KeyChar; } while (characterInput == 'y'); }
/// <summary> /// Функция изменения типа дней.!!! Рефакторинг /// </summary> /// <param name="howDays">На какой день поменять.</param> private void AddDayConsole(HowDays howDays) { Console.WriteLine(); string dayIs = "сокращенных дней"; if (howDays == HowDays.WorkingDay) { dayIs = "рабочих дней"; } if (howDays == HowDays.DayOff) { dayIs = "выходных дней"; } List <KeyValuePair <char, string> > command = new List <KeyValuePair <char, string> >() { new KeyValuePair <char, string>('0', "выход"), new KeyValuePair <char, string>('1', "добавления одного"), new KeyValuePair <char, string>('2', "добавления диапазона"), new KeyValuePair <char, string>('3', "добавление дню недели") }; Console.WriteLine($"Возможные команды для добавления {dayIs}."); Console.WriteLine("Введите:"); foreach (var item in command) { Console.WriteLine($"'{item.Key}' - {item.Value}."); } char characterInput; do { characterInput = Console.ReadKey(true).KeyChar; } while (!command.Exists(x => x.Key == characterInput)); Console.WriteLine($"Вы ввели '{command.Find(x => x.Key == characterInput).Key}' - {command.Find(x => x.Key == characterInput).Value}."); if (characterInput == command[0].Key) { return; } if (characterInput == command[1].Key) { AddDayOneConsole(howDays); } if (characterInput == command[2].Key) { AddDayManyConsole(howDays); } if (characterInput == command[3].Key) { AddDayWeekConsole(howDays); } AddDayConsole(howDays); }
/// <summary> /// Изменить Несколько дней Консоль. /// </summary> /// <param name="numberOfPairsPerDay">На какой изменить.</param> private void AddDayManyConsole(HowDays numberOfPairsPerDay) { char characterInput; do { DateTime dateBegin = DateValidationCheckConsole("Введите дату начала диапазона между", BeginSemestr, EndSemestr); DateTime dateEnd = DateValidationCheckConsole("Введите дату окончания диапазона между", dateBegin, EndSemestr); AddDayMany(numberOfPairsPerDay, dateBegin, dateEnd); Console.WriteLine($"Введите 'y' если хотите добавить еще один диапазон дней."); characterInput = Console.ReadKey(true).KeyChar; } while (characterInput == 'y'); }
/// <summary> /// Изменить один день недели Консоль. /// </summary> /// <param name="numberOfPairsPerDay">На какой изменить.</param> private void AddDayWeekConsole(HowDays numberOfPairsPerDay) { var cultureDataFormat = DateTimeFormatInfo.CurrentInfo; cultureDataFormat.FirstDayOfWeek = DayOfWeek.Monday; List <KeyValuePair <int, string> > dayweek = new List <KeyValuePair <int, string> > (); for (var i = (int)cultureDataFormat.FirstDayOfWeek; i < (int)(7 + cultureDataFormat.FirstDayOfWeek); i++) { dayweek.Add(new KeyValuePair <int, string>(i % 7, cultureDataFormat.AbbreviatedDayNames[i % 7])); } char characterInput; do { characterInput = ' '; Console.WriteLine("Введите день недели из:"); foreach (var item in dayweek) { Console.Write($"{item.Value,4}"); } string day = Console.ReadLine(); int ind = dayweek.FindIndex(x => x.Value == day); if (ind != -1) { AddDayWeek((DayOfWeek)dayweek[ind].Key, numberOfPairsPerDay); Console.WriteLine($"Введите 'y' если хотите добавить еще один день недели."); characterInput = Console.ReadKey(true).KeyChar; } else { Console.WriteLine("Нет такого дня недели! Попробуйте еще раз"); characterInput = 'y'; } } while (characterInput == 'y'); }
/// <summary> /// У указанного дня устанавливает тип дня. /// </summary> /// <param name="numberOfPairsPerDay">На какой изменить.</param> /// <param name="date">День.</param> public void AddDayOne(HowDays numberOfPairsPerDay, DateTime date) { DaysOfStudies.First(d => d.Date.Date == date.Date).Study = numberOfPairsPerDay; }
public DaysOfStudy(DateTime date, HowDays study) { Date = date; Study = study; }