UNPKG

instantjob-recruiter-client

Version:

a set of tools for creating an instantjob recruiter react client

164 lines (136 loc) 5.72 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.get_proposal_shifts = undefined; var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray'); var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties'); var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2); var _base = require('selectors/base'); var _missions = require('selectors/missions'); var _fields = require('selectors/fields'); var _moment = require('common/moment'); var _moment2 = _interopRequireDefault(_moment); var _utilities = require('common/utilities'); var _shifts = require('common/shifts'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var get_raw_shifts = function get_raw_shifts(state) { return state.shifts.shifts; }; var get_raw_shift_events = function get_raw_shift_events(state) { return state.shifts.events; }; var add_start_end = function add_start_end(_ref) { var events = _ref.events, shift = (0, _objectWithoutProperties3.default)(_ref, ['events']); var min = void 0, max = void 0; events.forEach(function (_ref2) { var start = _ref2.start, end = _ref2.end; if (!min || min.isAfter(start)) { min = (0, _moment2.default)(start); } if (!max || max.isBefore(end)) { max = (0, _moment2.default)(end); } }); return (0, _extends3.default)({}, shift, { events: events, start: min, end: max, update_events: function update_events(events) { (0, _shifts.action_update_shift_events)(shift, events); } }); }; var get_events_by_shift = (0, _base.tolerant_selector)([get_raw_shift_events], function (events) { return (0, _utilities.split_array)((0, _utilities.array_from_hash)(events).filter(function (_ref3) { var deleted_at = _ref3.deleted_at; return !deleted_at; }), (0, _utilities.property_getter)('calenderable_id')); }); var get_shifts = (0, _base.tolerant_selector)([get_raw_shifts, get_events_by_shift, _fields.get_fields_by_shift], function (shifts, events_by_shift, fields_by_shift) { return (0, _utilities.map_hash)(shifts, function (shift) { return add_start_end((0, _extends3.default)({}, shift, { events: events_by_shift[shift.id] || [], fields: (0, _utilities.array_from_hash)(fields_by_shift[shift.id]) || [] })); }); }); var get_splitted_shifts = (0, _base.tolerant_selector)([get_shifts], function (shifts) { return (0, _utilities.map_hash)((0, _utilities.split_array)((0, _utilities.array_from_hash)(shifts), (0, _utilities.property_getter)('proposal_id')), function (shifts) { return (0, _utilities.split_array)(shifts, (0, _utilities.property_getter)('event_id')); }); }); var get_proposal_shifts = (0, _utilities.make_memoized)(function (proposal_id, mission_id) { return (0, _base.tolerant_selector)([_missions.get_mission_proposals, get_splitted_shifts, _fields.get_shifts_fields], function (missions, splitted_shifts, shifts_fields) { var _ref4 = missions[mission_id] || {}, events = _ref4.events, create_shift = _ref4.create_shift; return (events || []).sort((0, _utilities.compare)(function (_ref5) { var start = _ref5.start; return (0, _moment2.default)(start).valueOf(); })).map(function (_ref6) { var start = _ref6.start, end = _ref6.end, id = _ref6.id; var _ref7 = (splitted_shifts[proposal_id] || {})[id] || [], _ref8 = (0, _slicedToArray3.default)(_ref7, 1), shift = _ref8[0]; var get_shift = function get_shift() { return new _promise2.default(function (resolve, reject) { if (shift) { resolve(shift); } else { (0, _shifts.action_create_shift)(proposal_id, id).then(resolve, reject); } }); }; var fields = void 0; if (shift) { fields = shift.fields; } else { fields = shifts_fields.map(function (_ref9) { var select_value = _ref9.select_value, update_comment = _ref9.update_comment, _fetch_value = _ref9.fetch_value, field = (0, _objectWithoutProperties3.default)(_ref9, ['select_value', 'update_comment', 'fetch_value']); return (0, _extends3.default)({}, field, { on_select_value: function on_select_value(value_id) { return get_shift().then(function (shift) { return select_value(shift.id, value_id); }); }, on_submit_comment: function on_submit_comment(comment) { return get_shift().then(function (shift) { return update_comment(shift.id, comment); }); }, fetch_value: function fetch_value() { return get_shift().then(function (shift) { return _fetch_value(shift.id); }); } }); }); } return (0, _extends3.default)({}, shift || {}, { theoretic: { start: start, end: end }, real: shift, fields: fields, update_events: function update_events(events) { get_shift().then(function (shift) { return (0, _shifts.action_update_shift_events)(shift, events); }); } }); }); }); }); exports.get_proposal_shifts = get_proposal_shifts;