/// <summary>
        /// Lists the asynchronous.
        /// </summary>
        /// <param name="filter">The filter.</param>
        /// <returns>
        /// the location report parameter list
        /// </returns>
        public async Task<ReconciliationReport> ListAsync(ReconciliationReportSearchParameters filter)
        {
            var reconciliationTask = this.reconciliationReportRepository.ListReconciliationReportAsync(filter);
            var reconciliationReport = new ReconciliationReport();

            reconciliationReport.GuestReconciliationReport = await reconciliationTask;
            var summaryOfShipCount = reconciliationReport.GuestReconciliationReport.SummaryOfShipCount;
            if (summaryOfShipCount != null)
            {
                reconciliationReport.ShipSummaryReportCollection.Add(
                    new ShipCountSummary
                    {
                        SystemType = "SeaNtry",
                        TotalOccupancy = !string.IsNullOrEmpty(summaryOfShipCount.TotalOccupancy) ? Convert.ToInt32(summaryOfShipCount.TotalOccupancy) : 0,
                        StatusCount = !string.IsNullOrEmpty(summaryOfShipCount.Onboard) ? Convert.ToInt32(summaryOfShipCount.Onboard) : 0,
                        NoShowCount = !string.IsNullOrEmpty(summaryOfShipCount.TotalOccupancy) ? Convert.ToInt32(summaryOfShipCount.TotalOccupancy) - Convert.ToInt32(summaryOfShipCount.Onboard) : 0
                    });

                reconciliationReport.ShipSummaryReportCollection.Add(
                    new ShipCountSummary
                    {
                        SystemType = "SPMS",
                        TotalOccupancy = !string.IsNullOrEmpty(summaryOfShipCount.TotalOccupancy) ? Convert.ToInt32(summaryOfShipCount.TotalOccupancy) : 0,
                        StatusCount = !string.IsNullOrEmpty(summaryOfShipCount.CheckedIn) ? Convert.ToInt32(summaryOfShipCount.CheckedIn) : 0,
                        NoShowCount = !string.IsNullOrEmpty(summaryOfShipCount.NotCheckedIn) ? Convert.ToInt32(summaryOfShipCount.NotCheckedIn) : 0
                    });
            }

            return reconciliationReport;
        }
 /// <summary>
 /// Lists the reconciliation report asynchronous.
 /// </summary>
 /// <param name="filter">The filter.</param>
 /// <returns>
 /// Task containing ship summary report.
 /// </returns>
 public async Task<ListResult<Entities.ShipSummary>> ListShipSummaryReportAsync(ReconciliationReportSearchParameters filter)
 {
     var task = await this.shipSummaryClient.RetrieveShipSummaryStatisticsAsync(
         personTypeId: filter.PersonTypeId,
         voyageId: filter.VoyageId,
         departmentIds: filter.DepartmentIds);
     return !string.IsNullOrEmpty(task) ? JsonConvert.DeserializeObject<ListResult<Entities.ShipSummary>>(task) : default(ListResult<Entities.ShipSummary>);
 }
 public async Task RetrieveReconciliationReportListAsyncTest()
 {
     try
     {
         this.SetupGetRequests();
         ReconciliationReportSearchParameters objParam = new ReconciliationReportSearchParameters();
         objParam.MaxResults = 50;
         objParam.PageNumber = 1;
         this.reconciliationReportManager.Setup(mocketem => mocketem.ListAsync(It.IsNotNull<ReconciliationReportSearchParameters>())).Returns(Task.FromResult(new ReconciliationReport()));
         var response = await this.reconciliationReportsController.Get(objParam);
         var result = await response.ExecuteAsync(new CancellationToken(false));
         Assert.IsTrue(result.IsSuccessStatusCode);
         Assert.AreEqual(HttpStatusCode.OK, result.StatusCode);
     }
     finally
     {
         this.Dispose();
     }
 }
 /// <summary>
 /// Lists the location report asynchronous.
 /// </summary>
 /// <param name="filter">The filter.</param>
 /// <returns>
 /// Task containing reconciliation report and total results.
 /// </returns>
 public async Task<GuestReconciliationReport> ListReconciliationReportAsync(ReconciliationReportSearchParameters filter)
 {
     var task = await this.reconciliationClient.RetrieveGuestReconciliationListAsync(
        firstName: filter.FirstName,
        lastName: filter.LastName,
        reconciliationStatus: filter.ReconciliationStatus,
        exceptionStartDate: filter.ExceptionStartDate != null ? Convert.ToDateTime(filter.ExceptionStartDate, CultureInfo.InvariantCulture) : default(DateTime?),
        exceptionEndDate: filter.ExceptionEndDate != null ? Convert.ToDateTime(filter.ExceptionEndDate, CultureInfo.InvariantCulture) : default(DateTime?),
        staterooms: filter.Staterooms,
        voyageId: filter.VoyageId,
        ageFrom: filter.AgeFrom,
        ageTo: filter.AgeTo,
        itineraryDate: filter.ItineraryDate,
        shipId: filter.ShipId,
        gender: filter.Gender,
         parts: filter.Parts ?? DefaultPartsValue,
        pageNumber: filter.PageNumber.RetrievePageNumber(),
        maxResults: filter.MaxResults.RetrieveMaxResults(),
        orderBy: filter.OrderBy);
     return !string.IsNullOrEmpty(task) ? JsonConvert.DeserializeObject<GuestReconciliationReport>(task) : default(GuestReconciliationReport);
 }
 /// <summary>
 /// Gets the asynchronous.
 /// </summary>
 /// <param name="operationResult">The operation result.</param>
 /// <param name="filter">The filter.</param>
 /// <returns>Task containing reconciliation report and total results.</returns>
 private async Task GetAsync(OperationResult<ReconciliationReport> operationResult, ReconciliationReportSearchParameters filter)
 {
     var reconciliationReport = await this.reconciliationReportManager.ListAsync(filter);
     operationResult.Content = reconciliationReport;
 }
 /// <summary>
 /// Lists the asynchronous.
 /// </summary>
 /// <param name="reconciliationReportSearchParameters">The reconciliation report search parameters.</param>
 /// <returns>Task containing reconciliation report and total results</returns>
 public async Task<ReconciliationReport> ListAsync(ReconciliationReportSearchParameters reconciliationReportSearchParameters)
 {
     return await this.reconciliationReportData.ListAsync(reconciliationReportSearchParameters);
 }