/// <summary> /// Persons the event list asynchronous. /// </summary> /// <param name="personId">The person identifier.</param> /// <param name="searchParameters">The search parameters.</param> /// <returns> /// Instance of Event History /// </returns> public async Task<ListResult<EventHistory>> PersonEventListAsync(string personId, PersonEventSearchParameter searchParameters) { var eventHistoryCollection = new ListResult<EventHistory>(); var eventHistory = new EventHistory(); ////TODO : Implement Date time value to pass to mas service to retrieve drill events. DateTime dateTime; try { DateTime.TryParseExact(searchParameters.DateTime, CustomDateTimeFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime); } catch { dateTime = DateTime.UtcNow; } //// TODO : Will remove later after 2015-11-23 Release. if (dateTime.Equals(DateTime.MinValue)) { dateTime = DateTime.UtcNow; } var drillEvents = RetrieveDrillEvents(dateTime, personId, searchParameters.PersonType.ToString(CultureInfo.CurrentCulture)); var gangwayEvents = this.personEventClientRepository.RetrieveEventListAsync(new PersonHistorySearchParameters { ShipId = searchParameters.ShipId, PersonIds = searchParameters.PersonId, PersonTypeId = searchParameters.PersonTypeId, MaxResults = searchParameters.MaxResults, OrderBy = searchParameters.OrderBy, PageNumber = searchParameters.PageNumber, Parts = searchParameters.Parts }); await Task.WhenAll(drillEvents, gangwayEvents); eventHistory.AssignGangwayEvents(PersonEventHistoryMapper.MapListAsync(gangwayEvents.Result.Items)); eventHistory.AssignDrillEvents(drillEvents.Result); eventHistoryCollection.Items.Add(eventHistory); eventHistoryCollection.TotalResults = gangwayEvents.Result.TotalResults; return eventHistoryCollection; }