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();
        }
Beispiel #2
0
        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}\" создана.");
        }