public override void DoAction() { var date = ConsoleReaders.ReadDate("Выберите день для экспорта", proposedDateFunc: () => DateTime.Now).Date; var meetings = _meetingRepository.GetMeetings(m => m.StartDate.Date == date); if (!meetings.Any()) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Встреч за выбранный день не найдено"); Console.ResetColor(); return; } var filePath = Path.Combine(Environment.CurrentDirectory, "export.txt"); using var fileStream = File.Create(filePath); foreach (var meeting in meetings) { fileStream.Write(Encoding.UTF8.GetBytes(meeting.ToString())); } Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine($"Экспортировано {meetings.Count} встреч в файл: {filePath}"); Console.ResetColor(); }
public static Reminder CreateReminder(Meeting meeting) { var reminderDate = ConsoleReaders.ReadDateTime("Введите дату напоминания", new List <ValidationRule <DateTime> > { new ValidationRule <DateTime>(d => d < meeting.StartDate, "Дата напоминания не может быть после начала встречи") }, () => meeting.StartDate.Date); return(new Reminder(meeting, reminderDate)); }
public override void DoAction(Meeting meeting) { var newName = ConsoleReaders.ReadString("Введите имя встречи", new List <ValidationRule <string> > { new ValidationRule <string>(s => !string.IsNullOrEmpty(s), "Имя встречи не может быть пустым") }); meeting.Name = newName; ConsoleUtils.WriteSuccess("Имя встречи изменено"); }
public override void DoAction(Meeting meeting) { var newEndData = ConsoleReaders.ReadDateTime(validationRules: new List <ValidationRule <DateTime> > { new ValidationRule <DateTime>(d => d > DateTime.Now, "Дата не может быть в прошлом"), new ValidationRule <DateTime>(d => d >= meeting.StartDate, "Дата начала не может быть раньше начала") }); if (!_meetingInteractor.CheckIntersect(meeting.StartDate, newEndData, meeting)) { return; } meeting.EndDate = newEndData; ConsoleUtils.WriteSuccess("Дата окончания изменена"); }
private static Reminder TryAddReminder(Meeting meeting) { var needAddReminder = ConsoleReaders.ReadString("Добавить напоминание для встречи? Y - да, N/[ВВОД] - нет", new List <ValidationRule <string> > { new ValidationRule <string>(s => string.IsNullOrEmpty(s) || (s.ToLower() == "n") || (s.ToLower() == "y"), "Неверное значение. Y - да, N/[ВВОД] - нет") }); if (needAddReminder.ToLower() == "n" || string.IsNullOrEmpty(needAddReminder)) { return(null); } var reminder = ReminderInteractor.CreateReminder(meeting); return(reminder); }
public override void DoAction() { var meetingName = ConsoleReaders.ReadString("Введите название встречи", new List <ValidationRule <string> > { new ValidationRule <string>(s => !string.IsNullOrWhiteSpace(s), "Имя встречи не может быть пустым"), new ValidationRule <string>(s => !_meetingRepository.GetMeetings(m => m.Name == s).Any(), "Встреча с данным названием уже существует") }); var startDate = ConsoleReaders.ReadDateTime("Введите начало встречи", new List <ValidationRule <DateTime> > { new ValidationRule <DateTime>(d => d > DateTime.Now, "Дата начала встречи не может быть в прошлом") }); var endDate = ConsoleReaders.ReadDateTime("Введите окончание встречи", new List <ValidationRule <DateTime> > { new ValidationRule <DateTime>(d => d >= startDate, "Дата окончания встречи не может быть раньше начала") }, () => startDate.Date); var meeting = new Meeting(meetingName, startDate, endDate); if (!_meetingInteractor.CheckIntersect(meeting.StartDate, meeting.EndDate)) { return; } _meetingRepository.AddMeeting(meeting); var reminder = TryAddReminder(meeting); if (reminder != null) { meeting.Reminders.Add(reminder); } ConsoleUtils.WriteSuccess($"Встреча \"{meeting}\" создана."); }