internal ServerXReport GetReport(SessionId _sessionId) { var actualFrom = Stored; List <XReport> reports; var state = EState.SINGLE; var items = new List <AbstractXReportItem>(); foreach (var pair in m_xValues) { items.Add(pair.Value.GetOriginalValueReportItem(pair.Key, _sessionId)); } if (m_changes.TryGetValue(_sessionId, out reports)) { if (m_currentVersion[_sessionId] >= 0) { var last = reports[reports.Count - 1]; var actual = reports[m_currentVersion[_sessionId]]; state |= EState.UNDO_ABLE | EState.REVERT_ABLE; if (last != actual) { state |= EState.REDO_ABLE; } var changes = actual; items.AddRange(changes.Items); actualFrom = changes.ActualFrom; } } else { m_changes.Add(_sessionId, new List <XReport>()); m_currentVersion.Add(_sessionId, -1); } var result = new ServerXReport(Uid, items, actualFrom, Kind, state); return(result); }
internal ServerXReport GetReport(SessionId _sessionId, uint _actualFor) { var actualFrom = Stored; var lastModification = Stored; var items = new List <AbstractXReportItem>(); List <XReport> reports; XReport last = null; if (m_changes.TryGetValue(_sessionId, out reports)) { last = reports.LastOrDefault(_report => _report.ActualFrom <= _actualFor); if (last != null) { actualFrom = last.ActualFrom; } } else { m_changes.Add(_sessionId, new List <XReport>()); m_currentVersion.Add(_sessionId, -1); } foreach (var pair in m_xValues) { var xName = pair.Key; items.Add(pair.Value.GetOriginalValueReportItem(xName, _sessionId)); if (last != null) { items.AddRange(last.Items.Where(_item => _item.FieldId == xName)); } } var result = new ServerXReport(Uid, items, actualFrom, Kind, EState.SINGLE); return(result); }
internal ServerXReport GetReport(SessionId _sessionId, uint _actualFor) { var actualFrom = Stored; var lastModification = Stored; var items = new List<AbstractXReportItem>(); List<XReport> reports; XReport last = null; if (m_changes.TryGetValue(_sessionId, out reports)) { last = reports.LastOrDefault(_report => _report.ActualFrom <= _actualFor); if (last != null) { actualFrom = last.ActualFrom; } } else { m_changes.Add(_sessionId, new List<XReport>()); m_currentVersion.Add(_sessionId, -1); } foreach (var pair in m_xValues) { var xName = pair.Key; items.Add(pair.Value.GetOriginalValueReportItem(xName, _sessionId)); if (last != null) { items.AddRange(last.Items.Where(_item => _item.FieldId == xName)); } } var result = new ServerXReport(Uid, items, actualFrom, Kind, EState.SINGLE); return result; }
internal ServerXReport GetReport(SessionId _sessionId) { var actualFrom = Stored; List<XReport> reports; var state = EState.SINGLE; var items = new List<AbstractXReportItem>(); foreach (var pair in m_xValues) { items.Add(pair.Value.GetOriginalValueReportItem(pair.Key, _sessionId)); } if (m_changes.TryGetValue(_sessionId, out reports)) { if (m_currentVersion[_sessionId] >= 0) { var last = reports[reports.Count - 1]; var actual = reports[m_currentVersion[_sessionId]]; state |= EState.UNDO_ABLE|EState.REVERT_ABLE; if (last != actual) state |= EState.REDO_ABLE; var changes = actual; items.AddRange(changes.Items); actualFrom = changes.ActualFrom; } } else { m_changes.Add(_sessionId, new List<XReport>()); m_currentVersion.Add(_sessionId, -1); } var result = new ServerXReport(Uid, items, actualFrom, Kind, state); return result; }