diff --git a/topic-3/task-1/index.js b/topic-3/task-1/index.js index 94ab761..6a35ee6 100644 --- a/topic-3/task-1/index.js +++ b/topic-3/task-1/index.js @@ -17,6 +17,22 @@ @param {number} minutes - Минуты */ function Time(hours, minutes) { + /* проверка входных значений на адекатность */ + if (typeof(hours,minutes) !=="number" || minutes < 0 || hours < 0 || hours > 23 || minutes > 59) { + throw new Error("Time data must be number that more than 0"); + } + /* задание контекста для аргументов hours и minutes */ + this.hours = hours; + this.minutes = minutes; +} +/*Переводим в Си, делаем проверку */ +Time.prototype.isEarlier = function(Time) { + return Time.hours * 3600 + Time.minutes * 60 > this.hours * 3600 + this.minutes * 60 +} +/* аналогично предыдущему методу только later */ +Time.prototype.isLater = function(Time) { + return Time.hours * 3600 + Time.minutes * 60 < this.hours * 3600 + this.minutes * 60 + } module.exports.Time = Time; \ No newline at end of file diff --git a/topic-3/task-2/index.js b/topic-3/task-2/index.js index 166c7d1..fb812f1 100644 --- a/topic-3/task-2/index.js +++ b/topic-3/task-2/index.js @@ -7,9 +7,9 @@ Начало временного промежутка — объект класса Time Конец временного промежутка — объект класса Time Должен возвращать true, если встреча, у которой был вызван метод, - пересекает переданный временной промежутук + пересекает переданный временной промежуток 2.5. Время начала встречи должно быть больше времени конца - 2.6. Встреча может быть назначана только в промежутке между 08:00 до 19:00 + 2.6. Встреча может быть назначена только в промежутке между 08:00 до 19:00 @constructor @this {Meeting} @param {Date} meetingDate - Дата встречи @@ -17,6 +17,26 @@ @param {Time} endTime - Время конца встречи */ function Meeting(meetingDate, startTime, endTime) { + /* минимальное значение SiStartTime не должно быть меньше (08:00) 8 * 3600 + 0 * 60 = 28800 сек + максимальное значение SiEndTime не должно быть больше (19:00) 19 * 3600 + 0 * 60 = 68400 сек */ + const SiStartTime = startTime.hours * 3600 + startTime.minutes * 60; + const SiEndTime = endTime.hours * 3600 + endTime.minutes * 60; + if (startTime > endTime || SiStartTime < 28800 || SiEndTime > 68400 ) { + throw new Error ("The meeting is only about between 8:00 and 19:00"); + } + /* задаем контекст для валидного диапазона встречи */ + this.meetingDate = meetingDate; + this.startTime = startTime; + this.endTime = endTime; +} +/* переводим в Си, сравниваем с ранее заданным диапазоном встречи */ +Meeting.prototype.isMeetingInTimeRange = function (startTime,endTime) { + const currentStartTime = this.startTime.hours * 3600 + this.startTime.minutes * 60; + const currentEndTime = this.endTime.hours * 3600 + this.endTime.minutes * 60; + const inRangeStartTime = startTime.hours * 3600 + startTime.minutes * 60; + const inRangeEndTime = endTime.hours * 3600 + endTime.minutes * 60; + + return currentEndTime > inRangeStartTime && currentStartTime < inRangeEndTime; } -module.exports.Meeting = Meeting; \ No newline at end of file +module.exports.Meeting = Meeting; diff --git a/topic-3/task-3/index.js b/topic-3/task-3/index.js index b5ff228..55ee220 100644 --- a/topic-3/task-3/index.js +++ b/topic-3/task-3/index.js @@ -12,7 +12,22 @@ */ function Vacation(vacationStartDate, vacationEndDate) { - + /* проверяем данные на адекватность */ + if (vacationEndDate <= vacationStartDate || vacationStartDate === undefined || vacationEndDate === undefined) { + throw new Error ("Start date must be earlier than the end one"); + } + /*задаем контекст для валидного диапазона дат */ + this.vacationStartDate = vacationStartDate; + this.vacationEndDate = vacationEndDate; +} +/* сравниваем валидный диапазон с передаваемым в date */ +Vacation.prototype.isDateInVacation = function (date) { + if (this.vacationStartDate <= date && date <= this.vacationEndDate) { + return true; + } else { + return false; + } + /* return this.vacationStartDate <= date <= this.vacationEndDate; - не работает. Не понимаю почему. По возможности объясни, пожалуйста :)*/ + } - module.exports.Vacation = Vacation; \ No newline at end of file diff --git a/topic-3/task-4/index.js b/topic-3/task-4/index.js index 7d670e8..ad2c343 100644 --- a/topic-3/task-4/index.js +++ b/topic-3/task-4/index.js @@ -8,7 +8,15 @@ @param {Array} vacations - Массив отпусков */ -function Organaizer(meetings = [], vacations = []) { -}; +function Organaizer(meetings = [], vacations = []) { + /* проверки агрументов */ + if (!Array.isArray(meetings) || !Array.isArray(vacations)) { + throw new Error("Arguments must be arrays"); + } + /* задание полей у класса */ + this.meetings = meetings; + this.vacations = vacations; +} + module.exports.Organaizer = Organaizer; \ No newline at end of file