예제 #1
0
        public virtual CaptureResponse Capture(XDocument xmlDocument)
        {
            var startDate = SystemContext.Clock.Now;

            _documentValidator.Validate(xmlDocument);

            var events      = _documentParser.Parse(xmlDocument.Root);
            var currentUser = _userProvider.GetCurrentUser();

            var request = new EpcisRequest
            {
                RecordTime   = SystemContext.Clock.Now,
                DocumentTime = DateTime.Parse(xmlDocument.Root.Attribute("creationDate").Value),
                User         = currentUser
            };

            foreach (var @event in events)
            {
                request.AddEvent(@event);
            }

            _requestPersister.Persist(request);

            return(new CaptureResponse
            {
                EventCount = request.Events.Count,
                CaptureStartDateUtc = startDate,
                CaptureEndDateUtc = SystemContext.Clock.Now,
                EventIds = request.Events.Select(e => e.Id.ToString()).ToArray()
            });
        }
예제 #2
0
        public void CanSaveAndLoadEpcisRequest()
        {
            Guid id;

            using (var tx = session.BeginTransaction())
            {
                var request = new EpcisRequest
                {
                    DocumentTime = new DateTime(2017, 11, 11, 12, 38, 00),
                    RecordTime   = new DateTime(2017, 11, 11, 12, 42, 00)
                };
                request.AddEvent(new EpcisEvent
                {
                    EventType           = EventType.ObjectEvent,
                    Action              = EventAction.Add,
                    EventTime           = new DateTime(2017, 10, 10, 10, 10, 00),
                    EventTimezoneOffset = new TimeZoneOffset {
                        Representation = "+01:00"
                    }
                });

                id = (Guid)session.Save(request);
                tx.Commit();
            }

            session.Clear();

            using (var tx = session.BeginTransaction())
            {
                var request = session.Get <EpcisRequest>(id);

                Assert.AreEqual(request.DocumentTime, new DateTime(2017, 11, 11, 12, 38, 00));
                Assert.AreEqual(request.RecordTime, new DateTime(2017, 11, 11, 12, 42, 00));
                Assert.AreEqual(request.Events.Count, 1);

                tx.Commit();
            }
        }
예제 #3
0
        public virtual IEnumerable <string> Capture(XDocument xmlDocument)
        {
            _documentValidator.Validate(xmlDocument);

            var events      = _documentParser.Parse(xmlDocument.Root);
            var currentUser = _userProvider.GetCurrentUser();

            var request = new EpcisRequest
            {
                RecordTime     = SystemContext.Clock.Now,
                DocumentTime   = DateTime.Parse(xmlDocument.Root.Attribute("creationDate").Value),
                SubscriptionId = TryExtractSubscriptionId(xmlDocument),
                User           = currentUser
            };

            foreach (var @event in events)
            {
                request.AddEvent(@event);
            }

            _requestPersister.Persist(request);

            return(request.Events.Select(e => e.Id.ToString()));
        }