"use strict"; (function () { 'use strict'; angular.module('myitsmApp') .service('editTicketDatesService', ['fieldValidationModel', function (fieldValidationModel) { this.updateDateTime = function (form, ticket, type) { if (ticket[type + 'StartDate'] == null && ticket[type + 'EndDate'] == null) { form[type + 'EndDate'].$setValidity('validScheduledEndDateTime', true); } if (!ticket[type + 'StartDate'] && ticket[type + 'EndDate']) { form[type + 'StartDate'].$setValidity('validScheduledStartDateTime', false); } else { form[type + 'StartDate'].$setValidity('validScheduledStartDateTime', true); } if (ticket[type + 'StartDate'] && ticket[type + 'EndDate']) { var startDateTime = ticket[type + 'StartDate'], endDateTime = ticket[type + 'EndDate']; if (endDateTime < startDateTime) { form[type + 'EndDate'].$setValidity('validScheduledEndDateTime', false); } else { form[type + 'EndDate'].$setValidity('validScheduledEndDateTime', true); } } }; this.updateTargetDateTime = function (form, ticket) { if (form.targetDate) { form.targetDate.$setValidity('validTargetDateTime', fieldValidationModel.isFutureDateTime(ticket.targetDate)); } }; this.scheduledStartDateDisabled = function (ticket, editMode, ignoreAccessMapping) { ticket = ticket || {}; return !editMode ? ticket.useTargetDate || isFieldDisabled(ticket, 'scheduledStartDate') || (ticket.actualStartDate || ticket.actualEndDate) : ticket.type === 'change' && (!ticket.accessMappings.scheduleddateEditAllowed || isFieldDisabled(ticket, 'scheduledStartDate')) && !ignoreAccessMapping && ticket.isClosed(); }; this.scheduledStartTimeDisabled = function (ticket, editMode, ignoreAccessMapping) { ticket = ticket || {}; return !editMode ? !ticket.scheduledStartDate || ticket.useTargetDate || isFieldDisabled(ticket, 'scheduledStartDate') : !ticket.scheduledStartDate || (ticket.type === 'change' && !ignoreAccessMapping && ticket.isClosed() && (!ticket.accessMappings.scheduleddateEditAllowed || isFieldDisabled(ticket, 'scheduledStartDate'))); }; this.scheduledEndDateDisabled = function (ticket, editMode, ignoreAccessMapping) { ticket = ticket || {}; return !editMode ? ticket.useTargetDate || isFieldDisabled(ticket, 'scheduledEndDate') || (ticket.actualStartDate || ticket.actualEndDate) : ticket.type === 'change' && (!ticket.accessMappings.scheduleddateEditAllowed || isFieldDisabled(ticket, 'scheduledEndDate')) && !ignoreAccessMapping && ticket.isClosed(); }; this.scheduledEndTimeDisabled = function (ticket, editMode, ignoreAccessMapping) { ticket = ticket || {}; return !editMode ? !ticket.scheduledEndDate || ticket.useTargetDate || isFieldDisabled(ticket, 'scheduledEndDate') : !ticket.scheduledEndDate || (ticket.type === 'change' && !ignoreAccessMapping && ticket.isClosed() && (!ticket.accessMappings.scheduleddateEditAllowed || isFieldDisabled(ticket, 'scheduledEndDate'))); }; this.actualStartDateDisabled = function (ticket, editMode, ignoreAccessMapping) { ticket = ticket || {}; return !editMode ? ticket.useTargetDate || (ticket.scheduledStartDate || ticket.scheduledEndDate) : ticket.type === 'change' && (!ticket.accessMappings.actualdateEditAllowed) && !ignoreAccessMapping && ticket.isClosed(); }; this.actualStartTimeDisabled = function (ticket, editMode, ignoreAccessMapping) { ticket = ticket || {}; return !editMode ? !ticket.actualStartDate || ticket.useTargetDate : !ticket.actualStartDate || (ticket.type === 'change' && !ignoreAccessMapping && ticket.isClosed() && !ticket.accessMappings.actualdateEditAllowed); }; this.actualEndDateDisabled = function (ticket, editMode, ignoreAccessMapping) { ticket = ticket || {}; return !editMode ? ticket.useTargetDate || (ticket.scheduledStartDate || ticket.scheduledEndDate) : ticket.type === 'change' && (!ticket.accessMappings.actualdateEditAllowed) && !ignoreAccessMapping && ticket.isClosed(); }; this.actualEndTimeDisabled = function (ticket, editMode, ignoreAccessMapping) { ticket = ticket || {}; return !editMode ? !ticket.actualEndDate || ticket.useTargetDate : !ticket.actualEndDate || (ticket.type === 'change' && !ignoreAccessMapping && ticket.isClosed() && !ticket.accessMappings.actualdateEditAllowed); }; this.deploymentStartDateDisabled = function (ticket, editMode, ignoreAccessMapping) { ticket = ticket || {}; return !editMode ? isFieldDisabled(ticket, 'deploymentStartDate') : ticket.type === 'release' && (!ticket.accessMappings.deploymentdateEditAllowed || isFieldDisabled(ticket, 'deploymentStartDate')) && !ignoreAccessMapping && ticket.isClosed(); }; this.deploymentStartTimeDisabled = function (ticket, editMode, ignoreAccessMapping) { ticket = ticket || {}; return !editMode ? !ticket.deploymentStartDate || ticket.useTargetDate || isFieldDisabled(ticket, 'deploymentStartDate') : !ticket.deploymentStartDate || (ticket.type === 'release' && !ignoreAccessMapping && ticket.isClosed() && (!ticket.accessMappings.deploymentdateEditAllowed || isFieldDisabled(ticket, 'deploymentStartDate'))); }; this.deploymentEndDateDisabled = function (ticket, editMode, ignoreAccessMapping) { ticket = ticket || {}; return !editMode ? isFieldDisabled(ticket, 'deploymentEndDate') : ticket.type === 'release' && (!ticket.accessMappings.deploymentdateEditAllowed || isFieldDisabled(ticket, 'deploymentEndDate')) && !ignoreAccessMapping && ticket.isClosed(); }; this.deploymentEndTimeDisabled = function (ticket, editMode, ignoreAccessMapping) { ticket = ticket || {}; return !editMode ? !ticket.deploymentEndDate || ticket.useTargetDate || isFieldDisabled(ticket, 'deploymentEndDate') : !ticket.deploymentEndDate || (ticket.type === 'release' && !ignoreAccessMapping && ticket.isClosed() && (!ticket.accessMappings.deploymentdateEditAllowed || isFieldDisabled(ticket, 'deploymentEndDate'))); }; this.targetDateDisabled = function (ticket, editMode) { ticket = ticket || {}; return !editMode ? !ticket.useTargetDate : !ticket.accessMappings.targetdateEditAllowed || isFieldDisabled(ticket, 'targetDate'); }; this.targetTimeDisabled = function (ticket, editMode) { ticket = ticket || {}; return !editMode ? !ticket.targetDate || !ticket.useTargetDate : !ticket.targetDate || !ticket.accessMappings.targetdateEditAllowed || isFieldDisabled(ticket, 'targetDate'); }; function isFieldDisabled(ticket, field) { var fieldDisabled = false; if (ticket && ticket.timing) { fieldDisabled = fieldValidationModel.isFieldDisabled(ticket.type ? ticket.type : EntityVO.TYPE_CHANGE, ticket.status && ticket.status.value ? ticket.status.value : 'Draft', ticket.timing.name ? ticket.timing.name : ticket.timing, field); } return fieldDisabled; } }]); }());