public async void QueryInstanceEventsOnEventTypes()
        {
            // Assign
            int expectedNoEvents = 1;

            // Act
            await CleanDB();
            await PopulateDatabase();

            InstanceEventList instanceEvents = await _instanceClient.GetInstanceEvents(testInstanceId, new string[] { "deleted" }, null, null);

            // Assert
            Assert.Equal(expectedNoEvents, instanceEvents.InstanceEvents.Count());
        }
        public async void QueryInstanceEventsOnTimeFrame()
        {
            // Assign
            int expectedNoEvents = 3;

            // Act
            await CleanDB();

            string from = DateTime.UtcNow.AddMinutes(-1.5).ToString("s", CultureInfo.InvariantCulture);

            await PopulateDatabase();

            string            to             = DateTime.UtcNow.AddMinutes(1.5).ToString("s", CultureInfo.InvariantCulture);
            InstanceEventList instanceEvents = await _instanceClient.GetInstanceEvents(testInstanceId, null, from, to);

            // Assert
            Assert.Equal(expectedNoEvents, instanceEvents.InstanceEvents.Count());
        }
Exemple #3
0
        public async Task <ActionResult <InstanceEventList> > Get(
            [FromRoute] int instanceOwnerPartyId,
            [FromRoute] Guid instanceGuid,
            [FromQuery] string[] eventTypes,
            [FromQuery] string from,
            [FromQuery] string to)
        {
            string instanceId = $"{instanceOwnerPartyId}/{instanceGuid}";

            if (string.IsNullOrEmpty(instanceId))
            {
                return(BadRequest("Unable to perform query."));
            }

            DateTime?fromDateTime = null, toDateTime = null;

            if (!(string.IsNullOrEmpty(from) || string.IsNullOrEmpty(to)))
            {
                try
                {
                    fromDateTime = DateTimeHelper.ParseAndConvertToUniversalTime(from);
                    toDateTime   = DateTimeHelper.ParseAndConvertToUniversalTime(to);
                }
                catch
                {
                    return(BadRequest("Unable to perform query. Invalid format for time span. Use string format of UTC."));
                }
            }

            List <InstanceEvent> instanceEvents = await _repository.ListInstanceEvents(instanceId, eventTypes, fromDateTime, toDateTime);

            InstanceEventList instanceEventList = new InstanceEventList {
                InstanceEvents = instanceEvents
            };

            return(Ok(instanceEventList));
        }
Exemple #4
0
        /// <summary>
        /// Retrieves all instance events related to given instance, listed event types and given time frame from instanceEvent collection.
        /// </summary>
        /// <param name="instanceId"> Id of instance to retrieve events for. </param>
        /// <param name="eventTypes">List of event types to filter the events by.</param>
        /// <param name="from"> Lower bound for DateTime span to filter events by. Utc format and invariantCulture. </param>
        /// <param name="to"> Upper bound for DateTime span to filter events by. Utc format and invariantCulture. </param>
        /// <returns>List of intance events.</returns>
        public async Task <InstanceEventList> GetInstanceEvents(string instanceId, string[] eventTypes, string from, string to)
        {
            string requestUri = $"{_versionPrefix}/instances/{instanceId}/events?";

            if (eventTypes != null)
            {
                StringBuilder eventTypeList = new StringBuilder();
                foreach (string type in eventTypes)
                {
                    if (eventTypeList.Length >= 1)
                    {
                        eventTypeList.Append(",");
                    }

                    eventTypeList.Append(type);
                }

                requestUri += $"&eventTypes={eventTypeList.ToString()}";
            }

            if (!(string.IsNullOrEmpty(from) || string.IsNullOrEmpty(to)))
            {
                requestUri += $"&from={from}&to={to}";
            }

            HttpResponseMessage response = await _client.GetAsync(_hostName + requestUri);

            if (response.IsSuccessStatusCode)
            {
                string eventData = await response.Content.ReadAsStringAsync();

                InstanceEventList instanceEvents = JsonConvert.DeserializeObject <InstanceEventList>(eventData);
                return(instanceEvents);
            }

            throw new StorageClientException($"GET error:  {response.Content?.ReadAsStringAsync()}");
        }