Esempio n. 1
0
        /// <summary>
        /// Creates the action item information.
        /// </summary>
        /// <param name="actionItem">The action item.</param>
        /// <param name="item">The item.</param>
        /// <returns>ActionItemInfo.</returns>
        public ActionItemInfo CreateActionItemInfo(IActionItemEdit actionItem, IDynamicObject item)
        {
            if (item == null)
                return null;

            var actionManager = DynamicTypeManager.GetActionManager(actionItem.Process);
            var actionDefinition = actionManager.ActionDefinitions.FirstOrDefault(ad => string.Compare(ad.Guid.ToString(), actionItem.ActionGuid, StringComparison.Ordinal) == 0);

            if (actionDefinition == null)
            {
                return null;
            }

            var isNotification = false;

            var assignmentActionDefinition = actionDefinition as IAssignmentActionDefinition;
            if (assignmentActionDefinition != null)
            {
                isNotification = assignmentActionDefinition.IsNotification;
            }

            if (assignmentActionDefinition != null && !assignmentActionDefinition.IsNotification)
            {
                if (!actionDefinition.CanExecute(item, null))
                    return null;
            }

            var subject = actionDefinition.GetSubject(item);
            var message = actionDefinition.GetMessageForDashboard(item);
            var dueDate = GetDueDate(actionDefinition, item);
            var actionType = GetActionType(actionDefinition);

            return new ActionItemInfo(
                actionItem.Id,
                actionItem.Process,
                actionItem.ActionGuid,
                actionItem.ItemId ?? 0,
                actionDefinition.Name,
                subject,
                message,
                actionType,
                actionDefinition.GroupName,
                dueDate,
                actionItem.IsActionNew ?? true,
                isNotification);
        }
Esempio n. 2
0
        private IEditableRoot GetSourceItem(IActionItemEdit action)
        {
            if (!action.ItemId.HasValue)
                return null;

            var item = DynamicTypeManager.GetEditableRoot<IEditableRoot>(action.Process, action.ItemId.Value);

            return item != null && item.Id == action.ItemId.Value ? item : null;
        }