UNPKG

@botonic/plugin-contentful

Version:

Botonic Plugin Contentful is one of the **[available](https://github.com/hubtype/botonic/tree/master/packages)** plugins for Botonic. **[Contentful](http://www.contentful.com)** is a CMS (Content Management System) which manages contents of a great variet

100 lines 4.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ScheduleDelivery = void 0; const tslib_1 = require("tslib"); const cms_1 = require("../../cms"); const time = tslib_1.__importStar(require("../../time")); const delivery_utils_1 = require("../delivery-utils"); const reference_1 = require("./reference"); class ScheduleDelivery extends reference_1.DeliveryWithReference { constructor(delivery, resumeErrors) { super(cms_1.ContentType.SCHEDULE, delivery, resumeErrors); } schedule(id, context) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const f = yield this.getEntry(id, cms_1.DEFAULT_CONTEXT, { include: ScheduleDelivery.REFERENCES_INCLUDE, }); return this.fromEntry(f, context); }); } fromEntry(entry, context) { return tslib_1.__awaiter(this, void 0, void 0, function* () { try { this.checkEntry(entry); const schedule = new time.Schedule(time.Schedule.TZ_CET); // TODO allow configuration this.addDaySchedules(schedule, entry.fields); this.addExceptions(schedule, entry.fields.exceptions); const referenceDelivery = { delivery: this.reference, context, }; return yield (0, delivery_utils_1.addCustomFields)(new cms_1.ScheduleContent(delivery_utils_1.ContentfulEntryUtils.commonFieldsFromEntry(entry), schedule), entry.fields, referenceDelivery, [ 'exceptions', 'partition', 'mondays', 'tuesdays', 'wednesdays', 'thursdays', 'fridays', 'saturdays', 'sundays', ]); } catch (e) { throw new cms_1.CmsException(`Error loading Scheduler '${entry.sys.id}'`, e); } }); } addDaySchedules(schedule, fields) { const days = [ fields.sundays, fields.mondays, fields.tuesdays, fields.wednesdays, fields.thursdays, fields.fridays, fields.saturdays, ]; for (const day in days) { if (!days[day]) { continue; } const daySchedule = this.createDaySchedule(schedule, days[day]); schedule.addDaySchedule(+day, daySchedule); } } createDaySchedule(sched, hourRanges) { const timeRanges = hourRanges.map(hr => { try { this.checkEntry(hr); return new time.TimeRange(sched.createHourAndMinute(hr.fields.fromHour, hr.fields.fromMinute), sched.createHourAndMinute(hr.fields.toHour, hr.fields.toMinute)); } catch (e) { throw new cms_1.CmsException(`Error loading hour range '${hr.sys.id}'`, e); } }); return new time.DaySchedule(timeRanges); } addExceptions(schedule, exceptions) { var _a; if (!exceptions) { return; } for (const exception of exceptions) { try { this.checkEntry(exception); const timeRanges = this.createDaySchedule(schedule, exception.fields.hourRanges || []); const dateStr = exception.fields.date.split('-'); const date = new Date(+dateStr[0], +dateStr[1] - 1, +dateStr[2]); schedule.addException(date, timeRanges); } catch (e) { this.logOrThrow(`Loading Schedule Exception '${exception.sys.id}' (name '${(_a = exception.fields) === null || _a === void 0 ? void 0 : _a.name}')`, {}, e, delivery_utils_1.ContentfulEntryUtils.getContentId(exception)); } } } } exports.ScheduleDelivery = ScheduleDelivery; ScheduleDelivery.REFERENCES_INCLUDE = 2; //# sourceMappingURL=schedule.js.map