コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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;
        }
コード例 #4
0
        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;
        }