/// <summary> /// Получить список вариантов для выполнения задания. /// </summary> /// <param name="assignment">Задание.</param> /// <returns>Список вариантов выполнения задания.</returns> private List <Structures.Module.AllowResultCodes> GetResultVariants(Sungero.Workflow.IAssignmentBase assignment) { // Ссылки на выполнения задания. var results = new List <Structures.Module.AllowResultCodes>(); var processAssignmentType = GetChatBotProcessAssignmentType(assignment); if (processAssignmentType != null) { // Для простых заданий, ссылка генерируется по другому. if (Sungero.Workflow.SimpleAssignments.Is(assignment)) { var simpleAssignment = Sungero.Workflow.SimpleAssignments.As(assignment); var code = new Structures.Module.AllowResultCodes(); code.ResultCode = "Complete"; code.ResultLocale = simpleAssignment.Info.Actions.Complete.LocalizedName; results.Add(code); } else { Sungero.Metadata.EntityMetadata meta = Sungero.Domain.Shared.TypeExtension.GetEntityMetadata(assignment); foreach (var res in processAssignmentType.AllowResults) { var code = new Structures.Module.AllowResultCodes(); code.ResultCode = res.Result; code.ResultLocale = Sungero.Domain.Shared.ResourceExtensions.GetLocalizedName(meta.Actions.Single(a => a.Name == res.Result)); results.Add(code); } } } var remainedLength = 5 - results.Count; while (remainedLength > 0) { remainedLength--; var code = new Structures.Module.AllowResultCodes(); code.ResultCode = string.Empty; code.ResultLocale = string.Empty; results.Add(code); } return(results); }
/// <summary> /// Получение всех вложений к заданию в виде массива. /// </summary> /// <param name="assignment">Задание.</param> public virtual Sungero.Content.IElectronicDocument[] GetAttachements(Sungero.Workflow.IAssignmentBase assignment) { var documentsList = new List <Sungero.Content.IElectronicDocument> { }; foreach (var doc in assignment.AllAttachments) { if (Sungero.Content.ElectronicDocuments.Is(doc)) { documentsList.Add(Sungero.Content.ElectronicDocuments.As(doc)); Logger.DebugFormat("Attachement: {0}", doc.Id); } } var remainedLength = 5 - documentsList.Count; while (remainedLength > 0) { remainedLength--; documentsList.Add(Sungero.Content.ElectronicDocuments.Null); } var list = documentsList.ToArray(); return(documentsList.ToArray()); }
/// <summary> /// Получить тип и текстовые данные для выполняемого задания. /// </summary> /// <param name="assignment">Задание.</param> /// <returns>Правило выполнения задания.</returns> public virtual Structures.Module.ChatBotProcessAssignmentType GetChatBotProcessAssignmentType(Sungero.Workflow.IAssignmentBase assignment) { var typeName = assignment.Info.Name; var assignmentText = Resources.AssignmentTextFormat(assignment.Subject, assignment.Author.Name, assignment.Deadline.HasValue ? assignment.Deadline.Value.ToString() : " - ", assignment.Task.ActiveText); // Простое задание. if (typeName == Constants.Module.SimpleAssignmentName) { var resultItems = new List <Structures.Module.AllowResultData>() { Structures.Module.AllowResultData.Create("Complete", Resources.SimpleAssignmentCompleteText) }; return(Structures.Module.ChatBotProcessAssignmentType.Create(Constants.Module.SimpleAssignmentName, assignmentText, resultItems)); } // Задание на ознакомление с документом. if (typeName == Constants.Module.AcquaintanceAssignmentName) { var resultItems = new List <Structures.Module.AllowResultData>() { Structures.Module.AllowResultData.Create(Sungero.RecordManagement.AcquaintanceAssignment.Result.Acquainted.Value, Resources.AcquaintanceAssignmentAcquaintanedText) }; return(Structures.Module.ChatBotProcessAssignmentType.Create(Constants.Module.AcquaintanceAssignmentName, assignmentText, resultItems)); } }