/// <summary> /// retrieves embarkation statistics asynchronous /// </summary> /// <param name="shipId">shipId attribute</param> /// <param name="shipDate">shipDate attribute</param> /// <param name="voyageIds">voyageId attribute</param> /// <param name="flowDirection">The flow direction.</param> /// <returns> /// embarkation statistics /// </returns> public async Task<Entity.EmbarkationStatistics> GetByIdAsync(string shipId, string shipDate, string voyageIds, string flowDirection = null) { var embarkationStatistics = new Entity.EmbarkationStatistics(); var embarkationStatisticsResponse = await this.embarkationStatisticsClient.RetrieveEmbarkationStatisticsAsync(shipId: shipId, itineraryDate: shipDate, voyageIds: voyageIds); var embarkationStatisticsData = embarkationStatisticsResponse != null ? JsonConvert.DeserializeObject<Entities.EmbarkationStatistics>(embarkationStatisticsResponse) : default(Entities.EmbarkationStatistics); if (embarkationStatisticsData != null) { var boardingEmbarkStats = new Collection<BoardingEmbarkStats> { new BoardingEmbarkStats { BoardingCheckedInCount = 100, BoardingExpectedCount = 200, BoardingNumber = 500, BoardingOnboardCount = 200 }, new BoardingEmbarkStats { BoardingCheckedInCount = 200, BoardingExpectedCount = 230, BoardingNumber = 550, BoardingOnboardCount = 300 }, }; embarkationStatistics.GuestEmbarkation = GuestEmbarkStatsMapper.Map(embarkationStatisticsData.GuestEmbarkations); embarkationStatistics.CrewEmbarkation = CrewEmbarkStatsMapper.Map(embarkationStatisticsData.CrewEmbarkations); embarkationStatistics.VisitorEmbarkation = VisitorEmbarkStatsMapper.Map(embarkationStatisticsData.VisitorEmbarkations); embarkationStatistics.CurrentBoardingNumber = CurrentBoardingNumberConstant; var filterCountryId = embarkationStatisticsData.GuestEmbarkations.Select(x => new { Id = x.CountryId, Count = x.CheckedIn + x.NotCheckedIn + x.Onboard }).OrderByDescending(y => y.Count).DistinctBy(a => a.Id).Select(c => c.Id).ToList(); embarkationStatistics.AssignEmbarkationCountryStats(filterCountryId); embarkationStatistics.AssignBoardingEmbarkStats(boardingEmbarkStats); if (!string.IsNullOrEmpty(flowDirection) && flowDirection.Equals(FlowDirectionConstant, StringComparison.OrdinalIgnoreCase)) { var personNotification = DIContainer.Instance.Resolve<PersonAlertClientRepository>(); var alerts = await personNotification.RetrieveAlerts(IsCBPClearanceId, shipDate, string.Empty); var alertIds = alerts.Items != null && alerts.Items.Count > 0 ? alerts.Items.DistinctBy(a => a.AlertId).ToList().RetrieveIds(a => a.AlertId) : null; if (alertIds != null) { var personAlerts = await personNotification.RetrievePersonAlerts(DIContainer.Instance.Resolve<ApplicationSetting>().ApplicationSettingId, AlertStatusIds, null, alertIds); if (personAlerts.Items.Count > 0) { var alertStats = new AlertStats { AlertType = CBPHoldConstant }; alertStats.OpenCount = personAlerts.Items.Count(a => a.StatusId.Equals(OpenStatusId, StringComparison.OrdinalIgnoreCase)); alertStats.CloseCount = personAlerts.Items.Count(a => a.StatusId.Equals(CloseStatusId, StringComparison.OrdinalIgnoreCase)); embarkationStatistics.AlertStats.Add(alertStats); } } } } return embarkationStatistics; }
/// <summary> /// retrieves embarkation statistics asynchronous /// </summary> /// <param name="shipId">shipId attribute</param> /// <param name="shipDate">shipDate attribute</param> /// <param name="voyageIds">voyageId attribute</param> /// <returns> /// embarkation statistics /// </returns> public async Task<EmbarkationStatistics> GetEmbarkDataByShipIdAsync(string shipId, string shipDate, string voyageIds) { var embarkationStatistics = new Entity.EmbarkationStatistics(); var embarkationStatisticsResponse = await this.embarkationStatisticsClient.RetrieveEmbarkationStatisticsAsync(shipId: shipId, itineraryDate: shipDate, voyageIds: voyageIds); var embarkationStatisticsData = embarkationStatisticsResponse != null ? JsonConvert.DeserializeObject<Entities.EmbarkationStatistics>(embarkationStatisticsResponse) : default(Entities.EmbarkationStatistics); if (embarkationStatisticsData != null) { embarkationStatistics.GuestEmbarkation = EmbarkStatsMapper.MapGuestEmbarkData(embarkationStatisticsData.GuestEmbarkations); embarkationStatistics.CrewEmbarkation = EmbarkStatsMapper.MapCrewEmbarkData(embarkationStatisticsData.CrewEmbarkations); embarkationStatistics.VisitorEmbarkation = EmbarkStatsMapper.MapVisitorEmbarkData(embarkationStatisticsData.VisitorEmbarkations); } return embarkationStatistics; }