private IEnumerable <HistoryItem> Build(HistoryRequest request, Action <ClarifyGeneric, WorkflowObjectInfo> genericAction) { var clarifyDataSet = _session.CreateDataSet(); var workflowObjectInfo = WorkflowObjectInfo.GetObjectInfo(request.WorkflowObject.Type); var workflowGeneric = clarifyDataSet.CreateGenericWithFields(workflowObjectInfo.ObjectName); if (workflowObjectInfo.HasIDFieldName) { workflowGeneric.DataFields.Add(workflowObjectInfo.IDFieldName); } genericAction(workflowGeneric, workflowObjectInfo); var inverseActivityRelation = workflowObjectInfo.ActivityRelation; var activityRelation = _schemaCache.GetRelation("act_entry", inverseActivityRelation).InverseRelation; var actEntryGeneric = workflowGeneric.Traverse(activityRelation.Name); actEntryGeneric.AppendSort("entry_time", false); actEntryGeneric.AppendSort("objid", false); if (request.Since.HasValue) { var filter = new FilterExpression().MoreThan("entry_time", request.Since.Value); actEntryGeneric.Filter.AddFilter(filter); } var templateDictionary = _templatePolicyConfiguration.RenderPolicies(request.WorkflowObject); //query generic hierarchy and while using act entry templates transform the results into HistoryItems return(_historyItemAssembler.Assemble(actEntryGeneric, templateDictionary, request)); }
private IEnumerable<HistoryItem> Build(HistoryRequest request, Action<ClarifyGeneric, WorkflowObjectInfo> genericAction) { var clarifyDataSet = _session.CreateDataSet(); var workflowObjectInfo = WorkflowObjectInfo.GetObjectInfo(request.WorkflowObject.Type); var workflowGeneric = clarifyDataSet.CreateGenericWithFields(workflowObjectInfo.ObjectName); if (workflowObjectInfo.HasIDFieldName) { workflowGeneric.DataFields.Add(workflowObjectInfo.IDFieldName); } genericAction(workflowGeneric, workflowObjectInfo); var inverseActivityRelation = workflowObjectInfo.ActivityRelation; var activityRelation = _schemaCache.GetRelation("act_entry", inverseActivityRelation).InverseRelation; var actEntryGeneric = workflowGeneric.Traverse(activityRelation.Name); actEntryGeneric.AppendSort("entry_time", false); if (request.Since.HasValue) { var filter = new FilterExpression().MoreThan("entry_time", request.Since.Value); actEntryGeneric.Filter.AddFilter(filter); } var templateDictionary = _templatePolicyConfiguration.RenderPolicies(request.WorkflowObject); //query generic hierarchy and while using act entry templates transform the results into HistoryItems return _historyItemAssembler.Assemble(actEntryGeneric, templateDictionary, request); }
private static HistoryViewModel CreateHistoryModel(HistoryRequest request, IEnumerable <HistoryItem> historyItems) { return(new HistoryViewModel { Since = DateTime.UtcNow, WorkflowObject = request.WorkflowObject, AllActivitiesShown = request.ShowAllActivities, HistoryItems = historyItems.ToArray() }); }
private static HistoryViewModel CreateHistoryModel(HistoryRequest request, IEnumerable<HistoryItem> historyItems) { return new HistoryViewModel { Since = DateTime.UtcNow, WorkflowObject = request.WorkflowObject, AllActivitiesShown = request.ShowAllActivities, HistoryItems = historyItems.ToArray() }; }
public IEnumerable<HistoryItem> Assemble(ClarifyGeneric actEntryGeneric, IDictionary<int, ActEntryTemplate> templatesByCode, HistoryRequest historyRequest) { actEntryGeneric.DataFields.AddRange("act_code", "entry_time", "addnl_info"); if (!historyRequest.ShowAllActivities) { var activeCodes = templatesByCode.Values.Where(t => !t.IsVerbose).Select(d => d.Code).ToArray(); actEntryGeneric.Filter(f => f.IsIn("act_code", activeCodes)); } //adding related generics expected by any fancy act entry templates var templateRelatedGenerics = traverseRelatedGenerics(actEntryGeneric, templatesByCode); _employeeAssembler.TraverseEmployee(actEntryGeneric); _contactAssembler.TraverseContact(actEntryGeneric); if (historyRequest.HistoryItemLimit.HasValue) { actEntryGeneric.MaximumRows = historyRequest.HistoryItemLimit.Value; } actEntryGeneric.Query(); var actEntryDTOS = actEntryGeneric.DataRows().Select(actEntryRecord => { var id = historyRequest.WorkflowObject.Id; if (historyRequest.WorkflowObject.IsChild) { //child objects are loaded in bulk so historyRequest.WorkflowObject.Id is not the correct id //find the act_entry's parent generic id field value var info = WorkflowObjectInfo.GetObjectInfo(actEntryGeneric.ParentRelation.TargetName); var parentId = actEntryRecord.AsInt(actEntryGeneric.ParentRelation.Name); var parentRow = actEntryGeneric.ParentGeneric.DataRows().First(r => r.DatabaseIdentifier() == parentId); id = (info.HasIDFieldName) ? parentRow[info.IDFieldName].ToString() : Convert.ToString(parentRow.DatabaseIdentifier()); } var code = actEntryRecord.AsInt("act_code"); return new ActEntry { Id = id, Type = historyRequest.WorkflowObject.Type, Template = findTemplateByActCode(code, templatesByCode), When = actEntryRecord.AsDateTime("entry_time"), Who = _employeeAssembler.Assemble(actEntryRecord, _contactAssembler), AdditionalInfo = actEntryRecord.AsString("addnl_info"), ActEntryRecord = actEntryRecord }; }).ToList(); return actEntryDTOS .Select(dto => createActivityDTOFromMapper(dto, templateRelatedGenerics)) .Where(i=>!i.IsCancelled) .Where(_ => historyRequest.ShowAllActivities || !_.IsVerbose) .ToList(); }
public IEnumerable <HistoryItem> Build(HistoryRequest request) { return(Build(request, (generic, workflowObjectInfo) => { if (workflowObjectInfo.IDFieldName.IsEmpty() || workflowObjectInfo.IDFieldName == "objid") { generic.Filter(f => f.Equals("objid", Convert.ToInt32(request.WorkflowObject.Id))); } else { generic.Filter(f => f.Equals(workflowObjectInfo.IDFieldName, request.WorkflowObject.Id)); } })); }
public IEnumerable<HistoryItem> Build(HistoryRequest request) { return Build(request, (generic, workflowObjectInfo) => { if (workflowObjectInfo.IDFieldName.IsEmpty() || workflowObjectInfo.IDFieldName == "objid") { generic.Filter(f => f.Equals("objid", Convert.ToInt32(request.WorkflowObject.Id))); } else { generic.Filter(f => f.Equals(workflowObjectInfo.IDFieldName, request.WorkflowObject.Id)); } }); }
public IEnumerable <HistoryItem> Build(HistoryRequest request, string[] ids) { return(Build(request, (generic, workflowObjectInfo) => generic.Filter(f => f.IsIn(workflowObjectInfo.IDFieldName, ids)))); }
public IEnumerable <HistoryItem> Assemble(ClarifyGeneric actEntryGeneric, IDictionary <int, ActEntryTemplate> templatesByCode, HistoryRequest historyRequest) { actEntryGeneric.DataFields.AddRange("act_code", "entry_time", "addnl_info", "proxy"); if (!historyRequest.ShowAllActivities) { var activeCodes = templatesByCode.Values.Where(t => !t.IsVerbose).Select(d => d.Code).ToArray(); actEntryGeneric.Filter(f => f.IsIn("act_code", activeCodes)); } //adding related generics expected by any fancy act entry templates var templateRelatedGenerics = traverseRelatedGenerics(actEntryGeneric, templatesByCode); _employeeAssembler.TraverseEmployee(actEntryGeneric); _contactAssembler.TraverseContact(actEntryGeneric); if (historyRequest.HistoryItemLimit.HasValue) { actEntryGeneric.MaximumRows = historyRequest.HistoryItemLimit.Value; } actEntryGeneric.Query(); var actEntryDTOS = actEntryGeneric.DataRows().Select(actEntryRecord => { var id = historyRequest.WorkflowObject.Id; if (historyRequest.WorkflowObject.IsChild) { //child objects are loaded in bulk so historyRequest.WorkflowObject.Id is not the correct id //find the act_entry's parent generic id field value var info = WorkflowObjectInfo.GetObjectInfo(actEntryGeneric.ParentRelation.TargetName); var parentId = actEntryRecord.AsInt(actEntryGeneric.ParentRelation.Name); var parentRow = actEntryGeneric.ParentGeneric.DataRows().First(r => r.DatabaseIdentifier() == parentId); id = (info.HasIDFieldName) ? parentRow[info.IDFieldName].ToString() : Convert.ToString(parentRow.DatabaseIdentifier()); } var code = actEntryRecord.AsInt("act_code"); return(new ActEntry { Id = id, Type = historyRequest.WorkflowObject.Type, Template = findTemplateByActCode(code, templatesByCode), When = actEntryRecord.AsDateTime("entry_time"), Who = _employeeAssembler.Assemble(actEntryRecord, _contactAssembler), ImpersonatedBy = _employeeAssembler.Assemble(actEntryRecord), AdditionalInfo = actEntryRecord.AsString("addnl_info"), ActEntryRecord = actEntryRecord }); }).Where(_ => !_.Template.IsCancelled).ToList(); return(actEntryDTOS .Select(dto => createActivityDTOFromMapper(dto, templateRelatedGenerics)) .Where(i => !i.IsCancelled) .Where(_ => historyRequest.ShowAllActivities || !_.IsVerbose) .ToList()); }
private HistoryViewModel getHistoryWithConstraint(HistoryRequest request) { var historyItems = getHistoryItems(request); return CreateHistoryModel(request, historyItems); }
private IEnumerable<HistoryItem> getHistoryItems(HistoryRequest request) { var historyBuilderPolicy = _entityHistoryBuilders.First(policy => policy.Handles(request.WorkflowObject)); return historyBuilderPolicy.BuildHistory(request); }
public HistoryViewModel GetHistory(HistoryRequest request) { return getHistoryWithConstraint(request); }
public IEnumerable<HistoryItem> Build(HistoryRequest request, string[] ids) { return Build(request, (generic,workflowObjectInfo) => generic.Filter(f => f.IsIn(workflowObjectInfo.IDFieldName, ids))); }
private IEnumerable <HistoryItem> getHistoryItems(HistoryRequest request) { var historyBuilderPolicy = _entityHistoryBuilders.First(policy => policy.Handles(request.WorkflowObject)); return(historyBuilderPolicy.BuildHistory(request)); }
private HistoryViewModel getHistoryWithConstraint(HistoryRequest request) { var historyItems = getHistoryItems(request); return(CreateHistoryModel(request, historyItems)); }
public HistoryViewModel GetHistory(HistoryRequest request) { return(getHistoryWithConstraint(request)); }