private void GetInvalidatedCacheItems() { lock (invalidatedCacheItems) { if (Response.Contains("invalidatedcacheitems")) { Response["invalidatedcacheitems"].Merge((DataTree)invalidatedCacheItems.Clone()); } else { Response["invalidatedcacheitems"] = (DataTree)invalidatedCacheItems.Clone(); } invalidatedCacheItems.Clear(); } }
private void BuildSipmlifiedAuditTrail(string documentType, List <BsonDocument> auditDocuments) { string id = auditDocuments[0]["__originalid"].ToString(); DataTree reportDocument = report[documentType][id]; DataTree currentDocument = new DataTree(); foreach (BsonDocument auditDocument in auditDocuments) { ApplyAuditTrailDocumentToReportDocument(auditDocument, currentDocument, documentType); // We assume all changes after manager approval are done by payroll. This is asimplification // and may create confusing results if approval states are switched on and off. if (!reportDocument["manager"].Empty) { reportDocument["payroll"] = (DataTree)currentDocument.Clone(); } else if ((bool)auditDocument.GetValue("approvedbymanager", false)) { reportDocument["manager"] = (DataTree)currentDocument.Clone(); } else if ((bool)auditDocument.GetValue("approvedbyworker", false)) { reportDocument["worker"] = (DataTree)currentDocument.Clone(); } } // Unapproved entries that haven't been deletd are shown. if (!reportDocument.Contains("worker") && !(bool)currentDocument["__deleted"]) { reportDocument["worker"] = (DataTree)currentDocument.Clone(); } // Deleted by manager if (!reportDocument.Contains("manager") && !(bool)reportDocument["worker"]["__deleted"] && (bool)currentDocument["__deleted"]) { reportDocument["manager"] = (DataTree)currentDocument.Clone(); } // Deleted by payroll if (!reportDocument.Contains("payroll") && !(bool)reportDocument["manager"]["__deleted"] && (bool)currentDocument["__deleted"]) { reportDocument["payroll"] = (DataTree)currentDocument.Clone(); } }
public MC2Value clone(DataTree datatree) { return((DataTree)datatree.Clone()); }