public virtual IQueryable <Sungero.Workflow.IAssignmentBase> OnChekingDataQuery(IQueryable <Sungero.Workflow.IAssignmentBase> query) { // Фильтр по типу. var typeFilterEnabled = _filter != null && (_filter.ActionItem || _filter.Other); var showActionItems = !typeFilterEnabled || _filter.ActionItem; var showOthers = !typeFilterEnabled || _filter.Other; var result = query .Where(a => showActionItems && ActionItemSupervisorAssignments.Is(a) || showOthers && (Docflow.DeadlineExtensionAssignments.Is(a) || RecordManagement.DeadlineExtensionAssignments.Is(a) || ReportRequestCheckAssignments.Is(a) || Workflow.ReviewAssignments.Is(a) || CheckReturnCheckAssignments.Is(a) || AcquaintanceFinishAssignments.Is(a))); // Запрос непрочитанных без фильтра. if (_filter == null) { return(RecordManagement.PublicFunctions.Module.ApplyCommonSubfolderFilters(result)); } // Фильтры по статусу, замещению и периоду. result = RecordManagement.PublicFunctions.Module.ApplyCommonSubfolderFilters(result, _filter.InProcess, _filter.Last30Days, _filter.Last90Days, _filter.Last180Days, false); return(result); }
public Sungero.Core.StateView GetStateView() { var stateView = StateView.Create(); // Блок "От кого". var taskBeginText = _obj.Texts.OrderByDescending(t => t.Created).FirstOrDefault(); var comment = taskBeginText != null ? taskBeginText.Body : string.Empty; comment = comment != AcquaintanceTasks.Resources.TaskAutoText ? comment : string.Empty; if (_obj.Started.HasValue) { Docflow.PublicFunctions.OfficialDocument .AddUserActionBlock(stateView, _obj.Author, AcquaintanceTasks.Resources.StateViewDocumentSendFromAcquaintance, _obj.Started.Value, _obj, comment, _obj.StartedBy); } else { Docflow.PublicFunctions.OfficialDocument .AddUserActionBlock(stateView, _obj.Author, Docflow.ApprovalTasks.Resources.StateViewTaskDrawCreated, _obj.Created.Value, _obj, comment, _obj.Author); } // Блок "Задача". var taskBlock = this.AddTaskBlock(stateView); // "Ознакомление в электронном виде". var assignments = AcquaintanceAssignments.GetAll() .Where(a => Equals(a.Task, _obj)) .Where(a => a.Created >= _obj.Started) .ToList(); var acquaintantedAssignments = assignments .Where(a => a.Status == Workflow.AssignmentBase.Status.Completed) .Where(a => Equals(a.CompletedBy, a.Performer)) .ToList(); var attentionAssignments = assignments .Where(a => a.Status == Workflow.AssignmentBase.Status.Completed) .Where(a => !Equals(a.CompletedBy, a.Performer)) .ToList(); // "Ознакомление под собственноручную подпись". var isElectronicAcquaintance = _obj.IsElectronicAcquaintance == true; if (!isElectronicAcquaintance) { // Задания выполненные не лично считаются также ознакомленными. acquaintantedAssignments = assignments .Where(a => a.Status == Workflow.AssignmentBase.Status.Completed) .ToList(); // Заданий требующих внимания нет. attentionAssignments = new List <IAcquaintanceAssignment>(); } // Блок "Ознакомленные". if (acquaintantedAssignments.Count > 1) { this.AddSelfCompletedAssignmentsBlocks(taskBlock, acquaintantedAssignments, isElectronicAcquaintance); } else { this.AddAssignmentBlock(taskBlock, acquaintantedAssignments.FirstOrDefault(), isElectronicAcquaintance, StateBlockIconSize.Large, AcquaintanceTasks.Resources.StateViewAsquaintance); } // Блок "Задания требующие внимания". foreach (var assignment in attentionAssignments) { this.AddAssignmentBlock(taskBlock, assignment, isElectronicAcquaintance, StateBlockIconSize.Large, AcquaintanceTasks.Resources.StateViewAsquaintance); } // Блок "Задания в работе". var inProcessAssignments = assignments .Where(a => a.Status != Workflow.AssignmentBase.Status.Completed) .ToList(); this.AddInProcessAssignmentsBlock(taskBlock, inProcessAssignments); // Блок "Задание-контроль". var finishAssignments = AcquaintanceFinishAssignments.GetAll() .Where(a => Equals(a.Task, _obj)) .Where(a => a.Created >= _obj.Started) .ToList(); foreach (var assignment in finishAssignments) { this.AddAssignmentBlock(taskBlock, assignment, isElectronicAcquaintance, StateBlockIconSize.Large, AcquaintanceTasks.Resources.StateViewFinishAssignment); } return(stateView); }
/// <summary> /// Добавить задания на ознакомление. /// </summary> /// <param name="parentBlock">Родительский блок.</param> /// <param name="assignment">Задание на ознакомление.</param> /// <param name="isElectronicAcquaintance">Признак электронного ознакомления.</param> /// <param name="iconSize">Размер иконки.</param> /// <param name="header">Заголовок.</param> public void AddAssignmentBlock(Sungero.Core.StateBlock parentBlock, IAssignment assignment, bool isElectronicAcquaintance, Sungero.Core.StateBlockIconSize iconSize, string header) { if (assignment == null) { return; } var headerStyle = Docflow.PublicFunctions.Module.CreateHeaderStyle(false); var noteStyle = Docflow.PublicFunctions.Module.CreateNoteStyle(); var separatorStyle = Docflow.PublicFunctions.Module.CreateSeparatorStyle(); var performerDeadlineStyle = Docflow.PublicFunctions.Module.CreatePerformerDeadlineStyle(); // Сущность (ссылка). var block = parentBlock.AddChildBlock(); block.Entity = assignment; // Иконка. block.AssignIcon(Docflow.ApprovalRuleBases.Resources.Assignment, iconSize); var selfCompleted = !isElectronicAcquaintance || Equals(assignment.Performer, assignment.CompletedBy); if (assignment.Result != null) { block.AssignIcon(Docflow.ApprovalTasks.Resources.Completed, iconSize); if (iconSize == StateBlockIconSize.Small) { block.AssignIcon(StateBlockIconType.Completed, iconSize); } if (!selfCompleted) { block.AssignIcon(AcquaintanceTasks.Resources.SubstitutionAccept, iconSize); } } // Заголовок. if (!string.IsNullOrWhiteSpace(header)) { block.AddLabel(header, headerStyle); block.AddLineBreak(); } // Исполнитель. var performerName = Docflow.PublicFunctions.OfficialDocument.GetAuthor(assignment.Performer, assignment.CompletedBy); block.AddLabel(performerName, performerDeadlineStyle); // Срок. var deadline = assignment.Deadline.HasValue ? Docflow.PublicFunctions.Module.ToShortDateShortTime(assignment.Deadline.Value.ToUserTime()) : Docflow.OfficialDocuments.Resources.StateViewWithoutTerm; deadline = string.Format("{0}: {1}", Docflow.OfficialDocuments.Resources.StateViewDeadline, deadline); if (assignment.Completed.HasValue) { var completed = Docflow.PublicFunctions.Module.ToShortDateShortTime(assignment.Completed.Value.ToUserTime()); deadline = string.Format("{0}: {1}", Docflow.OfficialDocuments.Resources.StateViewDate, completed); } block.AddLabel(deadline, performerDeadlineStyle); // Комментарий. var comment = Docflow.PublicFunctions.Module.GetAssignmentUserComment(assignment); if (!string.IsNullOrWhiteSpace(comment)) { block.AddLineBreak(); block.AddLabel(Docflow.PublicConstants.Module.SeparatorText, separatorStyle); block.AddLineBreak(); block.AddEmptyLine(Docflow.PublicConstants.Module.EmptyLineMargin); block.AddLabel(comment, noteStyle); } // Статус. var status = string.Empty; if (assignment.Status == Workflow.AssignmentBase.Status.InProcess) { status = Docflow.ApprovalTasks.Resources.StateViewInProcess; if (assignment.IsRead != true) { status = Docflow.ApprovalTasks.Resources.StateViewUnRead; } } if (assignment.Status == Workflow.AssignmentBase.Status.Aborted || assignment.Status == Workflow.AssignmentBase.Status.Suspended) { status = Docflow.ApprovalTasks.Resources.StateViewAborted.ToString(); } if (assignment.Status == Workflow.AssignmentBase.Status.Completed) { status = AcquaintanceTasks.Resources.StateViewAcquainted; if (!selfCompleted || AcquaintanceFinishAssignments.Is(assignment)) { status = AcquaintanceTasks.Resources.StateViewCompleted; } } Docflow.PublicFunctions.Module.AddInfoToRightContent(block, status); if (assignment.Status == Workflow.AssignmentBase.Status.InProcess && assignment.Deadline.HasValue) { Docflow.PublicFunctions.OfficialDocument.AddDeadlineHeaderToRight(block, assignment.Deadline.Value, assignment.Performer); } }
/// <summary> /// Добавить блок задачи на ознакомление. /// </summary> /// <param name="stateView">Схема представления.</param> /// <returns>Новый блок.</returns> public Sungero.Core.StateBlock AddTaskBlock(Sungero.Core.StateView stateView) { // Стили. var isDraft = _obj.Status == Workflow.Task.Status.Draft; var headerStyle = Docflow.PublicFunctions.Module.CreateHeaderStyle(isDraft); var labelStyle = Docflow.PublicFunctions.Module.CreateStyle(false, isDraft, false); var noteStyle = Docflow.PublicFunctions.Module.CreateNoteStyle(isDraft); // Блок задачи. var taskBlock = stateView.AddBlock(); taskBlock.Entity = _obj; taskBlock.IsExpanded = _obj.Status == Workflow.Task.Status.InProcess; // Иконка. taskBlock.AssignIcon(AcquaintanceTasks.Resources.AcquaintanceTaskIco, StateBlockIconSize.Large); // Заголовок. var header = AcquaintanceTasks.Resources.StateViewDocumentSelfSignAcquaintance; if (_obj.IsElectronicAcquaintance == true) { header = AcquaintanceTasks.Resources.StateViewDocumentElectonicAcquaintance; } taskBlock.AddLabel(header, headerStyle); taskBlock.AddLineBreak(); // Срок. var deadline = _obj.Deadline.HasValue ? Docflow.PublicFunctions.Module.ToShortDateShortTime(_obj.Deadline.Value.ToUserTime()) : Docflow.OfficialDocuments.Resources.StateViewWithoutTerm; taskBlock.AddLabel(string.Format("{0}: {1}", Docflow.OfficialDocuments.Resources.StateViewDeadline, deadline), noteStyle); // Статус. var status = string.Empty; if (_obj.Status == Workflow.Task.Status.InProcess) { status = Docflow.ApprovalTasks.Resources.StateViewInProcess; var onReview = AcquaintanceFinishAssignments.GetAll() .Where(a => Equals(a.Task, _obj)) .Where(a => a.Created >= _obj.Started) .Any(); if (onReview) { status = AcquaintanceTasks.Resources.StateViewFinish; } } else if (_obj.Status == Workflow.Task.Status.Completed) { status = Docflow.ApprovalTasks.Resources.StateViewCompleted; } else if (_obj.Status == Workflow.Task.Status.Aborted) { status = Docflow.ApprovalTasks.Resources.StateViewAborted; } else if (_obj.Status == Workflow.Task.Status.Suspended) { status = Docflow.ApprovalTasks.Resources.StateViewSuspended; } else if (_obj.Status == Workflow.Task.Status.Draft) { status = Docflow.ApprovalTasks.Resources.StateViewDraft; } Docflow.PublicFunctions.Module.AddInfoToRightContent(taskBlock, status, labelStyle); return(taskBlock); }