Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions topic-3/task-1/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
26 changes: 23 additions & 3 deletions topic-3/task-2/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,36 @@
Начало временного промежутка — объект класса Time
Конец временного промежутка — объект класса Time
Должен возвращать true, если встреча, у которой был вызван метод,
пересекает переданный временной промежутук
пересекает переданный временной промежуток
2.5. Время начала встречи должно быть больше времени конца
2.6. Встреча может быть назначана только в промежутке между 08:00 до 19:00
2.6. Встреча может быть назначена только в промежутке между 08:00 до 19:00
@constructor
@this {Meeting}
@param {Date} meetingDate - Дата встречи
@param {Time} startTime - Время начала встречи
@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;
module.exports.Meeting = Meeting;
19 changes: 17 additions & 2 deletions topic-3/task-3/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
12 changes: 10 additions & 2 deletions topic-3/task-4/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,15 @@
@param {Array<Vacation>} 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;