/// <summary> /// Map ships information. /// </summary> /// <param name="dataReader">The data reader.</param> /// <returns>ship information</returns> internal static async Task<ShipInfo> MapShipInfo(SqlDataReader dataReader) { var shipInfo = new ShipInfo(); if (dataReader != null) { shipInfo.AssignGangwayLocations(await MapGangwayLocations(dataReader)); await dataReader.NextResultAsync(); shipInfo.AssignStateroomCategories(await MapStateroomCategories(dataReader)); await dataReader.NextResultAsync(); shipInfo.AssignVoyageCollection(await MapVoyages(dataReader)); await dataReader.NextResultAsync(); var itineraries = await MapDictionaryAsync(dataReader); shipInfo.Voyages.AsParallel().Select(itinerary => { itinerary.MapMasterChildRelations(itineraries, master => master.VoyageId, (master, childs) => master.AssignItineraries(childs)); return true; }).ToList(); } return shipInfo; }
/// <summary> /// retrieves ship info /// </summary> /// <param name="shipId">shipIds attribute</param> /// <param name="isFullInfo">if set to <c>true</c> [is full information].</param> /// <returns> /// returns ship info /// </returns> public async Task<ShipInfo> RetrieveShipInfo(string shipId, bool isFullInfo) { var shipInfo = new ShipInfo(); var voyageCollection = await DIContainer.Instance.Resolve<VoyageClientRepository>().RetrieveVoyageListAsync(shipId); shipInfo.AssignVoyageCollection(voyageCollection.Items.Where(a => a.IsActive).ToList()); if (isFullInfo) { var gangwayLocations = await this.referenceDataRepository.RetrieveGangwayLocationListAsync(shipId); shipInfo.AssignGangwayLocations(gangwayLocations); var stateroomCategories = await this.referenceDataRepository.RetrieveStateroomCategoryListAsync(shipId); shipInfo.AssignStateroomCategoryCollection(stateroomCategories.Items); } shipInfo.ShipId = shipId; return shipInfo; }