# Разработка и тестирование библиотеки расчета списка доступного времени бронирования столика в ресторане ## Техническое задание на разработку библиотеки * название библиотеки: `RestaurantHelpers.dll` * Название класса: `Booking` * Название метода: `CalcTimeList` В параметрах библиотеке передаются: * JSON-строка со временем работы ресторана по дням недели (1 - понедельник... 7- воскресенье), время работы задано строкой в формате "HH:MM-HH:MM", например: ```json { "1": "11:00-23:00", "2": "11:00-23:00", "3": "11:00-23:00", "4": "11:00-23:00", "5": "11:00-05:00", "6": "12:00-05:00", "7": "12:00-03:00" } ``` * Дата и время (в формате **DataTime**), для которого нужно рассчитать список доступного времени ```cd var targetTime = new DateTime(2024, 02, 28, 10, 0, 0); ``` Библиотека должна возвращать IEnumerable список **TimeSpan** с шагом 30 минут, например: ```cs var result = new List() { new TimeSpan(11, 0, 0), new TimeSpan(11, 30, 0), new TimeSpan(12, 0, 0), new TimeSpan(12, 30, 0), ... } return result; ``` Итоговая спецификация метода **CalcTimeList** ```cs public IEnumerable CalcTimeList(string workTime, DateTime targetTime); ``` При расчете нужно учитывать следующие ограничения: * при попытке заказать расчет на прошедшую дату генерировать исключение * при заказе расчета на "сегодня" учитывать текущее время и не включать в список прошедшее время * не включать в список время за 2 часа до завершения работы ресторана * учитывать "ночной" режим работы. Т.е. при расчете списка на воскресение включать утренние часы, остающиеся от субботы (не конкретно эти дни, а просто проверять время работы предыдущего дня недели) ## Написать модульные тесты для разработанной библиотеки