diff --git a/EstateReportingAPI.BusinessLogic/OldReportingManager.cs b/EstateReportingAPI.BusinessLogic/OldReportingManager.cs deleted file mode 100644 index 9df5765..0000000 --- a/EstateReportingAPI.BusinessLogic/OldReportingManager.cs +++ /dev/null @@ -1,496 +0,0 @@ -using EstateReportingAPI.Models; -using Microsoft.EntityFrameworkCore; -using Shared.EntityFramework; -using TransactionProcessor.Database.Contexts; -using TransactionProcessor.Database.Entities; -using TransactionProcessor.Database.Entities.Summary; -using Merchant = EstateReportingAPI.Models.Merchant; -using Operator = EstateReportingAPI.Models.Operator; - -namespace EstateReportingAPI.BusinessLogic; - -/* -public interface IOldReportingManager -{ - Task> GetUnsettledFees(Guid estateId, DateTime startDate, DateTime endDate, List merchantIds, List operatorIds, List productIds, GroupByOption? groupByOption, CancellationToken cancellationToken); - Task GetLastSettlement(Guid estateId, CancellationToken cancellationToken); - Task GetMerchantsTransactionKpis(Guid estateId, CancellationToken cancellationToken); - Task> GetMerchantsByLastSale(Guid estateId, DateTime startDateTime, DateTime endDateTime, CancellationToken cancellationToken); - - Task> GetResponseCodes(Guid estateId, CancellationToken cancellationToken); - Task> GetTodaysSalesCountByHour(Guid estateId, Int32 merchantReportingId, Int32 operatorReportingId, DateTime comparisonDate, CancellationToken cancellationToken); - Task> GetTodaysSalesValueByHour(Guid estateId, Int32 merchantReportingId, Int32 operatorReportingId, DateTime comparisonDate, CancellationToken cancellationToken); - Task GetTodaysSettlement(Guid estateId, Int32 merchantReportingId, Int32 operatorReportingId, DateTime comparisonDate, CancellationToken cancellationToken); - Task> GetTopBottomData(Guid estateId, TopBottom direction, Int32 resultCount, Dimension dimension, CancellationToken cancellationToken); - - Task GetMerchantPerformance(Guid estateId, DateTime comparisonDate, List merchantReportingIds, CancellationToken cancellationToken); - Task GetProductPerformance(Guid estateId, DateTime comparisonDate, List productReportingIds, CancellationToken cancellationToken); - - Task GetOperatorPerformance(Guid estateId, DateTime comparisonDate, List operatorReportingIds, CancellationToken cancellationToken); - - Task> TransactionSearch(Guid estateId, TransactionSearchRequest searchRequest, PagingRequest pagingRequest, SortingRequest sortingRequest, CancellationToken cancellationToken); - -} - -public class OldReportingManager : IOldReportingManager -{ - private readonly IDbContextResolver Resolver; - private static readonly String EstateManagementDatabaseName = "TransactionProcessorReadModel"; - - private IQueryable BuildTodaySalesQuery(EstateManagementContext context) - { - return from t in context.TodayTransactions where t.IsAuthorised && t.TransactionType == "Sale" && t.TransactionDate == DateTime.Now.Date && t.TransactionTime <= DateTime.Now.TimeOfDay select t; - } - - private IQueryable BuildComparisonSalesQuery(EstateManagementContext context, - DateTime comparisonDate) - { - return from t in context.TransactionHistory where t.IsAuthorised && t.TransactionType == "Sale" && t.TransactionDate == comparisonDate && t.TransactionTime <= DateTime.Now.TimeOfDay select t; - } - - private IQueryable BuildUnsettledFeesQuery(EstateManagementContext context, - DateTime startDate, - DateTime endDate) - { - return from merchantSettlementFee in context.MerchantSettlementFees join transaction in context.Transactions on merchantSettlementFee.TransactionId equals transaction.TransactionId where merchantSettlementFee.FeeCalculatedDateTime.Date >= startDate && merchantSettlementFee.FeeCalculatedDateTime.Date <= endDate select new DatabaseProjections.FeeTransactionProjection { Fee = merchantSettlementFee, Txn = transaction }; - } - - private IQueryable BuildTransactionSearchQuery(EstateManagementContext context, - DateTime queryDate) - { - return from txn in context.Transactions join merchant in context.Merchants on txn.MerchantId equals merchant.MerchantId join @operator in context.Operators on txn.OperatorId equals @operator.OperatorId join product in context.ContractProducts on txn.ContractProductId equals product.ContractProductId where txn.TransactionDate == queryDate select new DatabaseProjections.TransactionSearchProjection { Transaction = txn, Merchant = merchant, Operator = @operator, Product = product }; - } - - private IQueryable BuildTodaySettlementQuery(EstateManagementContext context, - DateTime settlementDate) - { - IQueryable settlementData = from s in context.Settlements join f in context.MerchantSettlementFees on s.SettlementId equals f.SettlementId join t in context.TodayTransactions on f.TransactionId equals t.TransactionId where s.SettlementDate == settlementDate select new DatabaseProjections.TodaySettlementTransactionProjection { Fee = f, Txn = t }; - return settlementData; - } - - private IQueryable BuildComparisonSettlementQuery(EstateManagementContext context, - DateTime settlementDate) - { - IQueryable settlementData = from s in context.Settlements join f in context.MerchantSettlementFees on s.SettlementId equals f.SettlementId join t in context.TransactionHistory on f.TransactionId equals t.TransactionId where s.SettlementDate == settlementDate.Date select new DatabaseProjections.ComparisonSettlementTransactionProjection { Fee = f, Txn = t }; - return settlementData; - } - - private async Task GetSettlementSummary(IQueryable query, - CancellationToken cancellationToken) - { - // Get the settleed fees summary - DatabaseProjections.SettlementGroupProjection summary = await BuildSettlementSummaryQuery(query).SingleOrDefaultAsync(cancellationToken); - - return new DatabaseProjections.SettlementGroupProjection - { - SettledCount = summary.SettledCount, - SettledValue = summary.SettledValue, - UnSettledCount = summary.UnSettledCount, - UnSettledValue = summary.UnSettledValue - }; - } - - private static IQueryable BuildSettlementSummaryQuery( - IQueryable query) - { - return query - .GroupBy(_ => 1) - .Select(g => new DatabaseProjections.SettlementGroupProjection - { - SettledCount = g.Count(x => x.Fee.IsSettled), - SettledValue = g.Where(x => x.Fee.IsSettled).Sum(x => x.Fee.CalculatedValue), - UnSettledCount = g.Count(x => !x.Fee.IsSettled), - UnSettledValue = g.Where(x => !x.Fee.IsSettled).Sum(x => x.Fee.CalculatedValue) - }); - } - - private static IQueryable BuildSettlementSummaryQuery( - IQueryable query) - { - return query - .GroupBy(_ => 1) - .Select(g => new DatabaseProjections.SettlementGroupProjection - { - SettledCount = g.Count(x => x.Fee.IsSettled), - SettledValue = g.Where(x => x.Fee.IsSettled).Sum(x => x.Fee.CalculatedValue), - UnSettledCount = g.Count(x => !x.Fee.IsSettled), - UnSettledValue = g.Where(x => !x.Fee.IsSettled).Sum(x => x.Fee.CalculatedValue) - }); - } - - private async Task GetSettlementSummary( - IQueryable query, - CancellationToken cancellationToken) - { - - // Get the settleed fees summary - DatabaseProjections.SettlementGroupProjection summary = await BuildSettlementSummaryQuery(query).SingleOrDefaultAsync(cancellationToken); - - return new DatabaseProjections.SettlementGroupProjection - { - SettledCount = summary.SettledCount, - SettledValue = summary.SettledValue, - UnSettledCount = summary.UnSettledCount, - UnSettledValue = summary.UnSettledValue - }; - } - private const String ConnectionStringIdentifier = "EstateReportingReadModel"; - - public async Task GetLastSettlement(Guid estateId, - CancellationToken cancellationToken) - { - using ResolvedDbContext? resolvedContext = this.Resolver.Resolve(EstateManagementDatabaseName, estateId.ToString()); - await using EstateManagementContext context = resolvedContext.Context; - - DateTime settlementDate = await context.SettlementSummary.Where(s => s.IsCompleted).OrderByDescending(s => s.SettlementDate).Select(s => s.SettlementDate).FirstOrDefaultAsync(cancellationToken); - - IQueryable settlements = from settlement in context.SettlementSummary where settlement.SettlementDate == settlementDate group new { settlement.SettlementDate, FeeValue = settlement.FeeValue.GetValueOrDefault(), SalesValue = settlement.SalesValue.GetValueOrDefault(), SalesCount = settlement.SalesCount.GetValueOrDefault() } by settlement.SettlementDate into grouped select new LastSettlement { FeesValue = grouped.Sum(g => g.FeeValue), SalesCount = grouped.Sum(g => g.SalesCount), SalesValue = grouped.Sum(g => g.SalesValue), SettlementDate = grouped.Key }; - - return await settlements.SingleOrDefaultAsync(cancellationToken); - } - - public async Task GetMerchantsTransactionKpis(Guid estateId, - CancellationToken cancellationToken) - { - using ResolvedDbContext? resolvedContext = this.Resolver.Resolve(EstateManagementDatabaseName, estateId.ToString()); - await using EstateManagementContext context = resolvedContext.Context; - - Int32 merchantsWithSaleInLastHour = (from m in context.Merchants where m.LastSaleDate == DateTime.Now.Date && m.LastSaleDateTime >= DateTime.Now.AddHours(-1) select m.MerchantReportingId).Count(); - - Int32 merchantsWithNoSaleToday = (from m in context.Merchants where m.LastSaleDate == DateTime.Now.Date.AddDays(-1) select m.MerchantReportingId).Count(); - - Int32 merchantsWithNoSaleInLast7Days = (from m in context.Merchants where m.LastSaleDate <= DateTime.Now.Date.AddDays(-7) select m.MerchantReportingId).Count(); - - MerchantKpi response = new() { MerchantsWithSaleInLastHour = merchantsWithSaleInLastHour, MerchantsWithNoSaleToday = merchantsWithNoSaleToday, MerchantsWithNoSaleInLast7Days = merchantsWithNoSaleInLast7Days }; - - return response; - } - - public async Task> GetMerchantsByLastSale(Guid estateId, - DateTime startDateTime, - DateTime endDateTime, - CancellationToken cancellationToken) - { - using ResolvedDbContext? resolvedContext = this.Resolver.Resolve(EstateManagementDatabaseName, estateId.ToString()); - await using EstateManagementContext context = resolvedContext.Context; - - List response = new(); - - var merchants = await context.Merchants.Where(m => m.LastSaleDateTime >= startDateTime && m.LastSaleDateTime <= endDateTime).Select(m => new { - MerchantReportingId = m.MerchantReportingId, - EstateReportingId = context.Estates.Single(e => e.EstateId == m.EstateId).EstateReportingId, - Name = m.Name, - LastSaleDateTime = m.LastSaleDateTime, - LastSale = m.LastSaleDate, - CreatedDateTime = m.CreatedDateTime, - LastStatement = m.LastStatementGenerated, - MerchantId = m.MerchantId, - Reference = m.Reference, - AddressInfo = context.MerchantAddresses.Where(ma => ma.MerchantId == m.MerchantId).OrderByDescending(ma => ma.CreatedDateTime).Select(ma => new { - PostCode = ma.PostalCode, - Region = ma.Region, - Town = ma.Town - // Add more properties as needed - }).FirstOrDefault() // Get the first matching MerchantAddress or null - }).ToListAsync(cancellationToken); - - merchants.ForEach(m => response.Add(new Merchant - { - LastSaleDateTime = m.LastSaleDateTime, - CreatedDateTime = m.CreatedDateTime, - EstateReportingId = m.EstateReportingId, - LastSale = m.LastSale, - LastStatement = m.LastStatement, - MerchantId = m.MerchantId, - MerchantReportingId = m.MerchantReportingId, - Name = m.Name, - Reference = m.Reference, - PostCode = m.AddressInfo?.PostCode, - Region = m.AddressInfo?.Region, - Town = m.AddressInfo?.Town - })); - - return response; - } - - public async Task> GetResponseCodes(Guid estateId, - CancellationToken cancellationToken) - { - using ResolvedDbContext? resolvedContext = this.Resolver.Resolve(EstateManagementDatabaseName, estateId.ToString()); - await using EstateManagementContext context = resolvedContext.Context; - List response = new(); - - List responseCodes = await context.ResponseCodes.ToListAsync(cancellationToken); - - responseCodes.ForEach(r => response.Add(new ResponseCode { Code = r.ResponseCode, Description = r.Description })); - - return response; - } - - public async Task> GetTodaysSalesCountByHour(Guid estateId, - Int32 merchantReportingId, - Int32 operatorReportingId, - DateTime comparisonDate, - CancellationToken cancellationToken) - { - using ResolvedDbContext? resolvedContext = this.Resolver.Resolve(EstateManagementDatabaseName, estateId.ToString()); - await using EstateManagementContext context = resolvedContext.Context; - - IQueryable todaysSales = this.BuildTodaySalesQuery(context); - IQueryable comparisonSales = this.BuildComparisonSalesQuery(context, comparisonDate); - - todaysSales = todaysSales.ApplyMerchantFilter(merchantReportingId).ApplyOperatorFilter(operatorReportingId); - comparisonSales = comparisonSales.ApplyMerchantFilter(merchantReportingId).ApplyOperatorFilter(operatorReportingId); - - // First we need to get a value of todays sales - var todaysSalesByHour = await (from t in todaysSales group t.TransactionAmount by t.Hour into g select new { Hour = g.Key, TotalSalesCount = g.Count() }).ToListAsync(cancellationToken); - - var comparisonSalesByHour = await (from t in comparisonSales group t.TransactionAmount by t.Hour into g select new { Hour = g.Key, TotalSalesCount = g.Count() }).ToListAsync(cancellationToken); - - List response = (from today in todaysSalesByHour join comparison in comparisonSalesByHour on today.Hour equals comparison.Hour select new TodaysSalesCountByHour { Hour = today.Hour.Value, TodaysSalesCount = today.TotalSalesCount, ComparisonSalesCount = comparison.TotalSalesCount }).ToList(); - - return response; - } - - public async Task> GetTodaysSalesValueByHour(Guid estateId, - Int32 merchantReportingId, - Int32 operatorReportingId, - DateTime comparisonDate, - CancellationToken cancellationToken) - { - using ResolvedDbContext? resolvedContext = this.Resolver.Resolve(EstateManagementDatabaseName, estateId.ToString()); - await using EstateManagementContext context = resolvedContext.Context; - - IQueryable todaysSales = this.BuildTodaySalesQuery(context); - IQueryable comparisonSales = this.BuildComparisonSalesQuery(context, comparisonDate); - - todaysSales = todaysSales.ApplyMerchantFilter(merchantReportingId).ApplyOperatorFilter(operatorReportingId); - comparisonSales = comparisonSales.ApplyMerchantFilter(merchantReportingId).ApplyOperatorFilter(operatorReportingId); - - // First we need to get a value of todays sales - var todaysSalesByHour = await (from t in todaysSales group t.TransactionAmount by t.Hour into g select new { Hour = g.Key, TotalSalesValue = g.Sum() }).ToListAsync(cancellationToken); - - var comparisonSalesByHour = await (from t in comparisonSales group t.TransactionAmount by t.Hour into g select new { Hour = g.Key, TotalSalesValue = g.Sum() }).ToListAsync(cancellationToken); - - List response = (from today in todaysSalesByHour join comparison in comparisonSalesByHour on today.Hour equals comparison.Hour select new TodaysSalesValueByHour { Hour = today.Hour.Value, TodaysSalesValue = today.TotalSalesValue, ComparisonSalesValue = comparison.TotalSalesValue }).ToList(); - - return response; - } - - public async Task> GetUnsettledFees(Guid estateId, - DateTime startDate, - DateTime endDate, - List merchantIds, - List operatorIds, - List productIds, - GroupByOption? groupByOption, - CancellationToken cancellationToken) - { - using ResolvedDbContext? resolvedContext = this.Resolver.Resolve(EstateManagementDatabaseName, estateId.ToString()); - await using EstateManagementContext context = resolvedContext.Context; - - IQueryable query = this.BuildUnsettledFeesQuery(context, startDate, endDate).ApplyMerchantFilter(context, merchantIds).ApplyOperatorFilter(context, operatorIds).ApplyProductFilter(context, productIds); - - // Perform grouping - IQueryable groupedQuery = groupByOption switch - { - GroupByOption.Merchant => query.ApplyMerchantGrouping(context), - GroupByOption.Operator => query.ApplyOperatorGrouping(context), - GroupByOption.Product => query.ApplyProductGrouping(context) - }; - return await groupedQuery.ToListAsync(cancellationToken); - } - - public async Task> TransactionSearch(Guid estateId, - TransactionSearchRequest searchRequest, - PagingRequest pagingRequest, - SortingRequest sortingRequest, - CancellationToken cancellationToken) - { - // Base query before any filtering is added - using ResolvedDbContext? resolvedContext = this.Resolver.Resolve(EstateManagementDatabaseName, estateId.ToString()); - await using EstateManagementContext context = resolvedContext.Context; - - IQueryable mainQuery = this.BuildTransactionSearchQuery(context, searchRequest.QueryDate); - - mainQuery = mainQuery.ApplyFilters(searchRequest); - mainQuery = mainQuery.ApplySorting(sortingRequest); - mainQuery = mainQuery.ApplyPagination(pagingRequest); - - // Now build the results - List queryResults = await mainQuery.ToListAsync(cancellationToken); - - List results = new(); - - queryResults.ForEach(qr => { - results.Add(new TransactionResult - { - MerchantReportingId = qr.Merchant.MerchantReportingId, - ResponseCode = qr.Transaction.ResponseCode, - IsAuthorised = qr.Transaction.IsAuthorised, - MerchantName = qr.Merchant.Name, - OperatorName = qr.Operator.Name, - OperatorReportingId = qr.Operator.OperatorReportingId, - Product = qr.Product.ProductName, - ProductReportingId = qr.Product.ContractProductReportingId, - ResponseMessage = qr.Transaction.ResponseMessage, - TransactionDateTime = qr.Transaction.TransactionDateTime, - TransactionId = qr.Transaction.TransactionId, - TransactionReportingId = qr.Transaction.TransactionReportingId, - TransactionSource = qr.Transaction.TransactionSource.ToString(), - TransactionAmount = qr.Transaction.TransactionAmount - }); - }); - - return results; - } - - public async Task GetMerchantPerformance(Guid estateId, - DateTime comparisonDate, - List merchantReportingIds, - CancellationToken cancellationToken) - { - using ResolvedDbContext? resolvedContext = this.Resolver.Resolve(EstateManagementDatabaseName, estateId.ToString()); - await using EstateManagementContext context = resolvedContext.Context; - - // First we need to get a value of todays sales - IQueryable todaysSalesQuery = this.BuildTodaySalesQuery(context); - IQueryable comparisonSalesQuery = this.BuildComparisonSalesQuery(context, comparisonDate); - - todaysSalesQuery = todaysSalesQuery.ApplyMerchantFilter(merchantReportingIds); - comparisonSalesQuery = comparisonSalesQuery.ApplyMerchantFilter(merchantReportingIds); - - // Build the response - TodaysSales response = new() { ComparisonSalesCount = await comparisonSalesQuery.CountAsync(cancellationToken), ComparisonSalesValue = await comparisonSalesQuery.SumAsync(t => t.TransactionAmount, cancellationToken), TodaysSalesCount = await todaysSalesQuery.CountAsync(cancellationToken), TodaysSalesValue = await todaysSalesQuery.SumAsync(t => t.TransactionAmount, cancellationToken) }; - response.ComparisonAverageSalesValue = this.SafeDivide(response.ComparisonSalesValue, response.ComparisonSalesCount); - response.TodaysAverageSalesValue = this.SafeDivide(response.TodaysSalesValue, response.TodaysSalesCount); - - return response; - } - - public async Task GetProductPerformance(Guid estateId, - DateTime comparisonDate, - List productReportingIds, - CancellationToken cancellationToken) - { - using ResolvedDbContext? resolvedContext = this.Resolver.Resolve(EstateManagementDatabaseName, estateId.ToString()); - await using EstateManagementContext context = resolvedContext.Context; - - // First we need to get a value of todays sales - IQueryable todaysSalesQuery = this.BuildTodaySalesQuery(context); - IQueryable comparisonSalesQuery = this.BuildComparisonSalesQuery(context, comparisonDate); - - todaysSalesQuery = todaysSalesQuery.ApplyProductFilter(productReportingIds); - comparisonSalesQuery = comparisonSalesQuery.ApplyProductFilter(productReportingIds); - - TodaysSales response = new() { ComparisonSalesCount = await comparisonSalesQuery.CountAsync(cancellationToken), ComparisonSalesValue = await comparisonSalesQuery.SumAsync(t => t.TransactionAmount, cancellationToken), TodaysSalesCount = await todaysSalesQuery.CountAsync(cancellationToken), TodaysSalesValue = await todaysSalesQuery.SumAsync(t => t.TransactionAmount, cancellationToken) }; - response.ComparisonAverageSalesValue = this.SafeDivide(response.ComparisonSalesValue, response.ComparisonSalesCount); - response.TodaysAverageSalesValue = this.SafeDivide(response.TodaysSalesValue, response.TodaysSalesCount); - - return response; - } - - public async Task GetOperatorPerformance(Guid estateId, - DateTime comparisonDate, - List operatorReportingIds, - CancellationToken cancellationToken) - { - using ResolvedDbContext? resolvedContext = this.Resolver.Resolve(EstateManagementDatabaseName, estateId.ToString()); - await using EstateManagementContext context = resolvedContext.Context; - - // First we need to get a value of todays sales - IQueryable todaysSalesQuery = this.BuildTodaySalesQuery(context); - IQueryable comparisonSalesQuery = this.BuildComparisonSalesQuery(context, comparisonDate); - - todaysSalesQuery = todaysSalesQuery.ApplyOperatorFilter(operatorReportingIds); - comparisonSalesQuery = comparisonSalesQuery.ApplyOperatorFilter(operatorReportingIds); - - TodaysSales response = new() { ComparisonSalesCount = await comparisonSalesQuery.CountAsync(cancellationToken), ComparisonSalesValue = await comparisonSalesQuery.SumAsync(t => t.TransactionAmount, cancellationToken), TodaysSalesCount = await todaysSalesQuery.CountAsync(cancellationToken), TodaysSalesValue = await todaysSalesQuery.SumAsync(t => t.TransactionAmount, cancellationToken) }; - response.ComparisonAverageSalesValue = this.SafeDivide(response.ComparisonSalesValue, response.ComparisonSalesCount); - response.TodaysAverageSalesValue = this.SafeDivide(response.TodaysSalesValue, response.TodaysSalesCount); - - return response; - } - - public async Task> GetTopBottomData(Guid estateId, - TopBottom direction, - Int32 resultCount, - Dimension dimension, - CancellationToken cancellationToken) - { - using ResolvedDbContext? resolvedContext = this.Resolver.Resolve(EstateManagementDatabaseName, estateId.ToString()); - await using EstateManagementContext context = resolvedContext.Context; - - IQueryable mainQuery = this.BuildTodaySalesQuery(context); - - IQueryable topBottomData = dimension switch - { - Dimension.Merchant => mainQuery.ApplyMerchantGrouping(context), - Dimension.Operator => mainQuery.ApplyOperatorGrouping(context), - Dimension.Product => mainQuery.ApplyProductGrouping(context) - }; - - topBottomData = direction switch - { - TopBottom.Top => topBottomData.OrderByDescending(g => g.SalesValue), - _ => topBottomData.OrderBy(g => g.SalesValue) - }; - - List queryResult = await topBottomData.Take(resultCount).ToListAsync(cancellationToken); - - List results = new(); - queryResult.ForEach(qr => results.Add(new Models.TopBottomData { DimensionName = qr.DimensionName, SalesValue = qr.SalesValue })); - return results; - } - - public async Task GetTodaysSettlement(Guid estateId, - Int32 merchantReportingId, - Int32 operatorReportingId, - DateTime comparisonDate, - CancellationToken cancellationToken) - { - using ResolvedDbContext? resolvedContext = this.Resolver.Resolve(EstateManagementDatabaseName, estateId.ToString()); - await using EstateManagementContext context = resolvedContext.Context; - - IQueryable todaySettlementData = this.BuildTodaySettlementQuery(context, DateTime.Now); - IQueryable comparisonSettlementData = this.BuildComparisonSettlementQuery(context, comparisonDate); - - todaySettlementData = todaySettlementData.ApplyMerchantFilter(merchantReportingId).ApplyOperatorFilter(operatorReportingId); - comparisonSettlementData = comparisonSettlementData.ApplyMerchantFilter(merchantReportingId).ApplyOperatorFilter(operatorReportingId); - - DatabaseProjections.SettlementGroupProjection todaySettlement = await this.GetSettlementSummary(todaySettlementData, cancellationToken); - DatabaseProjections.SettlementGroupProjection comparisonSettlement = await this.GetSettlementSummary(comparisonSettlementData, cancellationToken); - - TodaysSettlement response = new() - { - ComparisonSettlementCount = comparisonSettlement.SettledCount, - ComparisonSettlementValue = comparisonSettlement.SettledValue, - ComparisonPendingSettlementCount = comparisonSettlement.UnSettledCount, - ComparisonPendingSettlementValue = comparisonSettlement.UnSettledValue, - TodaysSettlementCount = todaySettlement.SettledCount, - TodaysSettlementValue = todaySettlement.SettledValue, - TodaysPendingSettlementCount = todaySettlement.UnSettledCount, - TodaysPendingSettlementValue = todaySettlement.UnSettledValue - }; - - return response; - } - - - - private Int32 SafeDivide(Int32 number, - Int32 divisor) - { - if (divisor == 0) return number; - - return number / divisor; - } - - private Decimal SafeDivide(Decimal number, - Int32 divisor) - { - if (divisor == 0) return number; - - return number / divisor; - } -}*/ \ No newline at end of file diff --git a/EstateReportingAPI/Handlers/archivecode/DimensionsHandlers.cs b/EstateReportingAPI/Handlers/archivecode/DimensionsHandlers.cs deleted file mode 100644 index 7aca218..0000000 --- a/EstateReportingAPI/Handlers/archivecode/DimensionsHandlers.cs +++ /dev/null @@ -1,151 +0,0 @@ -using EstateReportingAPI.BusinessLogic.Queries; -using EstateReportingAPI.DataTrasferObjects; -using MediatR; -using Microsoft.AspNetCore.Mvc; -using Shared.Results.Web; - -namespace EstateReportingAPI.Handlers; -/* -public static class DimensionsHandlers -{ - public static async Task GetCalendarYears( - [FromHeader] Guid estateId, - IMediator mediator, - CancellationToken cancellationToken) - { - var query = new CalendarQueries.GetYearsQuery(estateId); - var result = await mediator.Send(query, cancellationToken); - - return ResponseFactory.FromResult(result, r => - r.Select(y => new CalendarYear { Year = y }).ToList() - ); - } - - public static async Task GetCalendarDates( - [FromHeader] Guid estateId, - [FromRoute] int year, - IMediator mediator, - CancellationToken cancellationToken) - { - var query = new CalendarQueries.GetAllDatesQuery(estateId); - var result = await mediator.Send(query, cancellationToken); - - return ResponseFactory.FromResult(result, r => - r.Select(d => new CalendarDate - { - Year = d.Year, - Date = d.Date, - DayOfWeek = d.DayOfWeek, - DayOfWeekNumber = d.DayOfWeekNumber, - DayOfWeekShort = d.DayOfWeekShort, - MonthName = d.MonthNameLong, - MonthNameShort = d.MonthNameShort, - MonthNumber = d.MonthNumber, - WeekNumber = d.WeekNumber ?? 0, - WeekNumberString = d.WeekNumberString, - YearWeekNumber = d.YearWeekNumber - }).ToList() - ); - } - - public static async Task GetCalendarComparisonDates( - [FromHeader] Guid estateId, - IMediator mediator, - CancellationToken cancellationToken) - { - var query = new CalendarQueries.GetComparisonDatesQuery(estateId); - var result = await mediator.Send(query, cancellationToken); - - return ResponseFactory.FromResult(result, r => - { - var response = new List - { - new() { Date = DateTime.Now.Date.AddDays(-1), Description = "Yesterday", OrderValue = 0 }, - new() { Date = DateTime.Now.Date.AddDays(-7), Description = "Last Week", OrderValue = 1 }, - new() { Date = DateTime.Now.Date.AddMonths(-1), Description = "Last Month", OrderValue = 2 } - }; - - int orderValue = 3; - foreach (var d in r) - { - response.Add(new ComparisonDate - { - Date = d.Date, - Description = d.Date.ToString("yyyy-MM-dd"), - OrderValue = orderValue++ - }); - } - - return response.OrderBy(d => d.OrderValue); - }); - } - - public static async Task GetMerchants( - [FromHeader] Guid estateId, - IMediator mediator, - CancellationToken cancellationToken) - { - var query = new MerchantQueries.GetMerchantsQuery(estateId); - var result = await mediator.Send(query, cancellationToken); - - return ResponseFactory.FromResult(result, r => - r.Select(m => new Merchant - { - MerchantReportingId = m.MerchantReportingId, - MerchantId = m.MerchantId, - EstateReportingId = m.EstateReportingId, - Name = m.Name, - LastSaleDateTime = m.LastSaleDateTime, - CreatedDateTime = m.CreatedDateTime, - LastSale = m.LastSale, - LastStatement = m.LastStatement, - PostCode = m.PostCode, - Reference = m.Reference, - Region = m.Region, - Town = m.Town - }) - .OrderBy(m => m.Name) - .ToList() - ); - } - - public static async Task GetOperators( - [FromHeader] Guid estateId, - IMediator mediator, - CancellationToken cancellationToken) - { - var query = new OperatorQueries.GetOperatorsQuery(estateId); - var result = await mediator.Send(query, cancellationToken); - - return ResponseFactory.FromResult(result, r => - r.Select(o => new Operator - { - EstateReportingId = o.EstateReportingId, - Name = o.Name, - OperatorId = o.OperatorId, - OperatorReportingId = o.OperatorReportingId - }) - .OrderBy(o => o.Name) - .ToList() - ); - } - - public static async Task GetResponseCodes( - [FromHeader] Guid estateId, - IMediator mediator, - CancellationToken cancellationToken) - { - var query = new ResponseCodeQueries.GetResponseCodesQuery(estateId); - var result = await mediator.Send(query, cancellationToken); - - return ResponseFactory.FromResult(result, r => - r.Select(o => new ResponseCode - { - Code = o.Code, - Description = o.Description - }) - .OrderBy(r => r.Code) - .ToList() - ); - } -}*/ \ No newline at end of file diff --git a/EstateReportingAPI/Handlers/archivecode/FactSettlementsHandlers.cs b/EstateReportingAPI/Handlers/archivecode/FactSettlementsHandlers.cs deleted file mode 100644 index 151a115..0000000 --- a/EstateReportingAPI/Handlers/archivecode/FactSettlementsHandlers.cs +++ /dev/null @@ -1,176 +0,0 @@ -using EstateReportingAPI.BusinessLogic.Queries; -using EstateReportingAPI.DataTransferObjects; -using MediatR; -using Microsoft.AspNetCore.Mvc; -using Shared.Results.Web; - -namespace EstateReportingAPI.Handlers; -/* -public static class FactSettlementsHandlers -{ - - public class GetUnsettledFeesRequest - { - public DateTime StartDate { get; set; } - public DateTime EndDate { get; set; } - public string? MerchantIds { get; set; } - public string? OperatorIds { get; set; } - public string? ProductIds { get; set; } - public GroupByOption? GroupByOption { get; set; } - - // Minimal API binder: called by RequestDelegateFactory when binding complex parameter - public static ValueTask BindAsync(HttpContext context) - { - var q = context.Request.Query; - var req = new GetUnsettledFeesRequest(){ - StartDate = ParseDate(q, "startDate", nameof(StartDate)), - EndDate = ParseDate(q, "endDate", nameof(EndDate)), - MerchantIds = GetStringValue(q, "merchantIds", nameof(MerchantIds)), - OperatorIds = GetStringValue(q, "operatorIds", nameof(OperatorIds)), - ProductIds = GetStringValue(q, "productIds", nameof(ProductIds)), - GroupByOption = ParseEnum(q, "groupByOption", nameof(GroupByOption)) - }; - - return ValueTask.FromResult(req); - } - - // Extracted helpers to reduce cyclomatic complexity in BindAsync - private static DateTime ParseDate(IQueryCollection q, params string[] keys) - { - foreach (var key in keys) - { - if (q.TryGetValue(key, out var values) && DateTime.TryParse(values.ToString(), out var dt)) - { - return dt; - } - } - - return default; - } - - private static string? GetStringValue(IQueryCollection q, params string[] keys) - { - foreach (var key in keys) - { - if (q.TryGetValue(key, out var values)) - { - var s = values.ToString(); - if (!string.IsNullOrWhiteSpace(s)) - return s; - } - } - - return null; - } - - private static TEnum? ParseEnum(IQueryCollection q, params string[] keys) where TEnum : struct, Enum - { - foreach (var key in keys) - { - if (q.TryGetValue(key, out var values) && Enum.TryParse(values.ToString(), true, out var parsed)) - { - return parsed; - } - } - - return null; - } - } - - public static async Task TodaysSettlement([FromHeader] Guid estateId, - [FromQuery] int? merchantReportingId, - [FromQuery] int? operatorReportingId, - [FromQuery] DateTime comparisonDate, - IMediator mediator, - CancellationToken cancellationToken) - { - var query = new SettlementQueries.GetTodaysSettlementQuery( - estateId, merchantReportingId.GetValueOrDefault(), operatorReportingId.GetValueOrDefault(), comparisonDate); - - var result = await mediator.Send(query, cancellationToken); - - return ResponseFactory.FromResult(result, r => new TodaysSettlement - { - ComparisonSettlementCount = r.ComparisonSettlementCount, - ComparisonSettlementValue = r.ComparisonSettlementValue, - ComparisonPendingSettlementCount = r.ComparisonPendingSettlementCount, - ComparisonPendingSettlementValue = r.ComparisonPendingSettlementValue, - TodaysSettlementCount = r.TodaysSettlementCount, - TodaysSettlementValue = r.TodaysSettlementValue, - TodaysPendingSettlementCount = r.TodaysPendingSettlementCount, - TodaysPendingSettlementValue = r.TodaysPendingSettlementValue - }); - } - - public static async Task LastSettlement([FromHeader] Guid estateId, - IMediator mediator, - CancellationToken cancellationToken) - { - var query = new SettlementQueries.GetLastSettlementQuery(estateId); - var result = await mediator.Send(query, cancellationToken); - - return ResponseFactory.FromResult(result, r => new LastSettlement - { - SalesCount = r.SalesCount, - FeesValue = r.FeesValue, - SalesValue = r.SalesValue, - SettlementDate = r.SettlementDate - }); - } - - public static async Task GetUnsettledFees([FromHeader] Guid estateId, - GetUnsettledFeesRequest request, - IMediator mediator, - CancellationToken cancellationToken) - { - var merchantIdFilter = ParseIds(request.MerchantIds); - var operatorIdFilter = ParseIds(request.OperatorIds); - var productIdFilter = ParseIds(request.ProductIds); - - var groupByOptionConverted = ConvertGroupByOption(request.GroupByOption.GetValueOrDefault()); - - var query = new SettlementQueries.GetUnsettledFeesQuery( - estateId, - request.StartDate, - request.EndDate, - merchantIdFilter, - operatorIdFilter, - productIdFilter, - groupByOptionConverted); - - var result = await mediator.Send(query, cancellationToken); - - return ResponseFactory.FromResult(result, r => - { - var response = r.Select(u => new DataTransferObjects.UnsettledFee - { - DimensionName = u.DimensionName, - FeesCount = u.FeesCount, - FeesValue = u.FeesValue - }).ToList(); - - return response; - }); - } - - // Helper methods - private static List ParseIds(string? csv) - { - if (string.IsNullOrWhiteSpace(csv)) - return []; - - return csv.Split(',') - .Select(s => int.TryParse(s, out var id) ? id : (int?)null) - .Where(id => id.HasValue) - .Select(id => id!.Value) - .ToList(); - } - - private static Models.GroupByOption ConvertGroupByOption(GroupByOption groupByOption) - => groupByOption switch - { - GroupByOption.Merchant => Models.GroupByOption.Merchant, - GroupByOption.Product => Models.GroupByOption.Product, - _ => Models.GroupByOption.Operator - }; -}*/ \ No newline at end of file diff --git a/EstateReportingAPI/Handlers/archivecode/FactTransactionsHandler.cs b/EstateReportingAPI/Handlers/archivecode/FactTransactionsHandler.cs deleted file mode 100644 index 5d529f0..0000000 --- a/EstateReportingAPI/Handlers/archivecode/FactTransactionsHandler.cs +++ /dev/null @@ -1,333 +0,0 @@ -using EstateReportingAPI.BusinessLogic.Queries; -using EstateReportingAPI.DataTransferObjects; -using EstateReportingAPI.Models; -using MediatR; -using Microsoft.AspNetCore.Mvc; -using Shared.Results.Web; -using SimpleResults; -using GroupByOption = EstateReportingAPI.DataTransferObjects.GroupByOption; -using LastSettlement = EstateReportingAPI.DataTransferObjects.LastSettlement; -using Merchant = EstateReportingAPI.DataTransferObjects.Merchant; -using MerchantKpi = EstateReportingAPI.DataTransferObjects.MerchantKpi; -using Operator = EstateReportingAPI.DataTransferObjects.Operator; -using ResponseCode = EstateReportingAPI.DataTrasferObjects.ResponseCode; -using SortDirection = EstateReportingAPI.DataTransferObjects.SortDirection; -using SortField = EstateReportingAPI.DataTransferObjects.SortField; -using TodaysSales = EstateReportingAPI.DataTransferObjects.TodaysSales; -using TodaysSettlement = EstateReportingAPI.DataTransferObjects.TodaysSettlement; -using TopBottom = EstateReportingAPI.DataTransferObjects.TopBottom; -using TransactionResult = EstateReportingAPI.DataTransferObjects.TransactionResult; -using TransactionSearchRequest = EstateReportingAPI.DataTransferObjects.TransactionSearchRequest; - -/*namespace EstateReportingAPI.Handlers -{ - public static class FactTransactionsHandler { - public static async Task TodaysSales([FromHeader] Guid estateId, - [FromQuery] int? merchantReportingId, - [FromQuery] int? operatorReportingId, - [FromQuery] DateTime comparisonDate, - IMediator mediator, - CancellationToken cancellationToken) { - var query = new TransactionQueries.TodaysSalesQuery(estateId, merchantReportingId.GetValueOrDefault(), operatorReportingId.GetValueOrDefault(), comparisonDate); - var result = await mediator.Send(query, cancellationToken); - - return ResponseFactory.FromResult(result, r => new TodaysSales { - ComparisonSalesCount = r.ComparisonSalesCount, - ComparisonSalesValue = r.ComparisonSalesValue, - TodaysSalesCount = r.TodaysSalesCount, - TodaysSalesValue = r.TodaysSalesValue, - ComparisonAverageSalesValue = r.ComparisonAverageSalesValue, - TodaysAverageSalesValue = r.TodaysAverageSalesValue, - }); - } - - public static async Task TodaysSalesCountByHour([FromHeader] Guid estateId, - [FromQuery] int? merchantReportingId, - [FromQuery] int? operatorReportingId, - [FromQuery] DateTime comparisonDate, - IMediator mediator, - CancellationToken cancellationToken) { - var query = new TransactionQueries.TodaysSalesCountByHour(estateId, merchantReportingId.GetValueOrDefault(), operatorReportingId.GetValueOrDefault(), comparisonDate); - var result = await mediator.Send(query, cancellationToken); - - return ResponseFactory.FromResult(result, r => { - var response = r.Select(t => new TodaysSalesCountByHour { ComparisonSalesCount = t.ComparisonSalesCount, Hour = t.Hour, TodaysSalesCount = t.TodaysSalesCount }).ToList(); - - return response; - }); - } - - public static async Task TodaysSalesValueByHour([FromHeader] Guid estateId, - [FromQuery] int? merchantReportingId, - [FromQuery] int? operatorReportingId, - [FromQuery] DateTime comparisonDate, - IMediator mediator, - CancellationToken cancellationToken) { - var query = new TransactionQueries.TodaysSalesValueByHour(estateId, merchantReportingId.GetValueOrDefault(), operatorReportingId.GetValueOrDefault(), comparisonDate); - var result = await mediator.Send(query, cancellationToken); - - return ResponseFactory.FromResult(result, r => { - var response = r.Select(t => new TodaysSalesValueByHour { ComparisonSalesValue = t.ComparisonSalesValue, Hour = t.Hour, TodaysSalesValue = t.TodaysSalesValue }).ToList(); - - return response; - }); - } - - public static async Task GetMerchantsByLastSale([FromHeader] Guid estateId, - [FromQuery] DateTime startDate, - [FromQuery] DateTime endDate, - IMediator mediator, - CancellationToken cancellationToken) { - var query = new MerchantQueries.GetByLastSaleQuery(estateId, startDate, endDate); - var result = await mediator.Send(query, cancellationToken); - - return ResponseFactory.FromResult(result, r => { - var response = r.Select(m => new DataTrasferObjects.Merchant { - MerchantReportingId = m.MerchantReportingId, - MerchantId = m.MerchantId, - EstateReportingId = m.EstateReportingId, - Name = m.Name, - LastSaleDateTime = m.LastSaleDateTime, - CreatedDateTime = m.CreatedDateTime, - LastSale = m.LastSale, - LastStatement = m.LastStatement, - PostCode = m.PostCode, - Reference = m.Reference, - Region = m.Region, - Town = m.Town, - }).OrderBy(x => x.Name).ToList(); - - return response; - }); - } - - public static async Task GetMerchantsTransactionKpis([FromHeader] Guid estateId, - IMediator mediator, - CancellationToken cancellationToken) { - var query = new MerchantQueries.GetTransactionKpisQuery(estateId); - var result = await mediator.Send(query, cancellationToken); - - return ResponseFactory.FromResult(result, r => new MerchantKpi { MerchantsWithNoSaleInLast7Days = r.MerchantsWithNoSaleInLast7Days, MerchantsWithNoSaleToday = r.MerchantsWithNoSaleToday, MerchantsWithSaleInLastHour = r.MerchantsWithSaleInLastHour }); - } - - public static async Task TodaysFailedSales([FromHeader] Guid estateId, - [FromQuery] DateTime comparisonDate, - [FromQuery] string responseCode, - IMediator mediator, - CancellationToken cancellationToken) { - var query = new TransactionQueries.TodaysFailedSales(estateId, comparisonDate, responseCode); - var result = await mediator.Send(query, cancellationToken); - - return ResponseFactory.FromResult(result, r => new TodaysSales { - ComparisonSalesCount = r.ComparisonSalesCount, - ComparisonSalesValue = r.ComparisonSalesValue, - TodaysSalesCount = r.TodaysSalesCount, - TodaysSalesValue = r.TodaysSalesValue, - ComparisonAverageSalesValue = r.ComparisonAverageSalesValue, - TodaysAverageSalesValue = r.TodaysAverageSalesValue, - }); - } - - public static async Task GetTopBottomProductsByValue([FromHeader] Guid estateId, - [FromQuery] TopBottom topOrBottom, - [FromQuery] int count, - IMediator mediator, - CancellationToken cancellationToken) { - var modelTopBottom = Enum.Parse(topOrBottom.ToString()); - - IRequest>> query = modelTopBottom switch { - Models.TopBottom.Bottom => new ProductQueries.GetBottomProductsBySalesValueQuery(estateId, count), - _ => new ProductQueries.GetTopProductsBySalesValueQuery(estateId, count) - }; - - var result = await mediator.Send(query, cancellationToken); - - return ResponseFactory.FromResult(result, r => { - var response = r.Select(t => new TopBottomProductData { ProductName = t.DimensionName, SalesValue = t.SalesValue }).ToList(); - - return response; - }); - } - - public static async Task GetTopBottomMerchantsByValue([FromHeader] Guid estateId, - [FromQuery] TopBottom topOrBottom, - [FromQuery] int count, - IMediator mediator, - CancellationToken cancellationToken) { - var modelTopBottom = Enum.Parse(topOrBottom.ToString()); - - IRequest>> query = modelTopBottom switch { - Models.TopBottom.Bottom => new MerchantQueries.GetBottomMerchantsBySalesValueQuery(estateId, count), - _ => new MerchantQueries.GetTopMerchantsBySalesValueQuery(estateId, count) - }; - - var result = await mediator.Send(query, cancellationToken); - - return ResponseFactory.FromResult(result, r => { - var response = r.Select(t => new TopBottomMerchantData { MerchantName = t.DimensionName, SalesValue = t.SalesValue }).ToList(); - - return response; - }); - } - - public static async Task GetTopBottomOperatorsByValue([FromHeader] Guid estateId, - [FromQuery] TopBottom topOrBottom, - [FromQuery] int count, - IMediator mediator, - CancellationToken cancellationToken) { - var modelTopBottom = Enum.Parse(topOrBottom.ToString()); - - IRequest>> query = modelTopBottom switch { - Models.TopBottom.Bottom => new OperatorQueries.GetBottomOperatorsBySalesValueQuery(estateId, count), - _ => new OperatorQueries.GetTopOperatorsBySalesValueQuery(estateId, count) - }; - - var result = await mediator.Send(query, cancellationToken); - - return ResponseFactory.FromResult(result, r => { - var response = r.Select(t => new TopBottomOperatorData { OperatorName = t.DimensionName, SalesValue = t.SalesValue }).ToList(); - - return response; - }); - } - - public static async Task GetMerchantPerformance([FromHeader] Guid estateId, - [FromQuery] DateTime comparisonDate, - [FromQuery] string? merchantReportingIds, - IMediator mediator, - CancellationToken cancellationToken) { - var merchantIdFilter = ParseCsvIds(merchantReportingIds); - - var query = new MerchantQueries.GetMerchantPerformanceQuery(estateId, comparisonDate, merchantIdFilter); - var result = await mediator.Send(query, cancellationToken); - - return ResponseFactory.FromResult(result, r => new TodaysSales { - ComparisonSalesCount = r.ComparisonSalesCount, - ComparisonSalesValue = r.ComparisonSalesValue, - TodaysSalesCount = r.TodaysSalesCount, - TodaysSalesValue = r.TodaysSalesValue, - ComparisonAverageSalesValue = r.ComparisonAverageSalesValue, - TodaysAverageSalesValue = r.TodaysAverageSalesValue, - }); - } - - public static async Task GetProductPerformance([FromHeader] Guid estateId, - [FromQuery] DateTime comparisonDate, - [FromQuery] string? productReportingIds, - IMediator mediator, - CancellationToken cancellationToken) { - var productIdFilter = ParseCsvIds(productReportingIds); - - var query = new ProductQueries.GetProductPerformanceQuery(estateId, comparisonDate, productIdFilter); - var result = await mediator.Send(query, cancellationToken); - - return ResponseFactory.FromResult(result, r => new TodaysSales { - ComparisonSalesCount = r.ComparisonSalesCount, - ComparisonSalesValue = r.ComparisonSalesValue, - TodaysSalesCount = r.TodaysSalesCount, - TodaysSalesValue = r.TodaysSalesValue, - ComparisonAverageSalesValue = r.ComparisonAverageSalesValue, - TodaysAverageSalesValue = r.TodaysAverageSalesValue, - }); - } - - public static async Task GetOperatorPerformance([FromHeader] Guid estateId, - [FromQuery] DateTime comparisonDate, - [FromQuery] string? operatorReportingIds, - IMediator mediator, - CancellationToken cancellationToken) { - var operatorIdFilter = ParseCsvIds(operatorReportingIds); - - var query = new OperatorQueries.GetOperatorPerformanceQuery(estateId, comparisonDate, operatorIdFilter); - var result = await mediator.Send(query, cancellationToken); - - return ResponseFactory.FromResult(result, r => new TodaysSales { - ComparisonSalesCount = r.ComparisonSalesCount, - ComparisonSalesValue = r.ComparisonSalesValue, - TodaysSalesCount = r.TodaysSalesCount, - TodaysSalesValue = r.TodaysSalesValue, - ComparisonAverageSalesValue = r.ComparisonAverageSalesValue, - TodaysAverageSalesValue = r.TodaysAverageSalesValue, - }); - } - - public static async Task TransactionSearch([FromHeader] Guid estateId, - [FromBody] TransactionSearchRequest request, - [FromQuery] int? page, - [FromQuery] int? pageSize, - [FromQuery] SortField? sortField, - [FromQuery] SortDirection? sortDirection, - IMediator mediator, - CancellationToken cancellationToken) { - var paging = CreatePagingRequest(page, pageSize); - var sorting = CreateSortingRequest(sortField, sortDirection); - - var searchModel = new Models.TransactionSearchRequest { - AuthCode = request.AuthCode, - Merchants = request.Merchants, - Operators = request.Operators, - QueryDate = request.QueryDate, - ResponseCode = request.ResponseCode, - TransactionNumber = request.TransactionNumber, - ValueRange = request.ValueRange == null ? null : new Models.ValueRange { StartValue = request.ValueRange.StartValue, EndValue = request.ValueRange.EndValue } - }; - - var query = new TransactionQueries.TransactionSearchQuery(estateId, searchModel, paging, sorting); - var result = await mediator.Send(query, cancellationToken); - - return ResponseFactory.FromResult(result, r => { - var response = r.Select(t => new TransactionResult { - MerchantReportingId = t.MerchantReportingId, - ResponseCode = t.ResponseCode, - Product = t.Product, - TransactionReportingId = t.TransactionReportingId, - TransactionSource = t.TransactionSource, - IsAuthorised = t.IsAuthorised, - MerchantName = t.MerchantName, - OperatorName = t.OperatorName, - OperatorReportingId = t.OperatorReportingId, - ProductReportingId = t.ProductReportingId, - ResponseMessage = t.ResponseMessage, - TransactionDateTime = t.TransactionDateTime, - TransactionId = t.TransactionId, - TransactionAmount = t.TransactionAmount - }).ToList(); - - return response; - }); - } - - private static PagingRequest CreatePagingRequest(int? page, int? pageSize) => new PagingRequest(page, pageSize); - - private static Models.SortingRequest CreateSortingRequest(SortField? sortField, SortDirection? sortDirection) - { - Models.SortField modelSortField = Models.SortField.TransactionAmount; - Models.SortDirection modelSortDirection = Models.SortDirection.Ascending; - - if (sortField != null) - { - modelSortField = Enum.Parse(sortField.ToString(), true); - } - if (sortDirection != null) - { - modelSortDirection = Enum.Parse(sortDirection.ToString(), true); - } - - return new Models.SortingRequest(modelSortField, modelSortDirection); - } - - private static List ParseCsvIds(string? csv) - { - if (string.IsNullOrWhiteSpace(csv)) - return new List(); - - return csv.Split(',', StringSplitOptions.RemoveEmptyEntries) - .Select(s => s.Trim()) - .Where(s => int.TryParse(s, out _)) - .Select(int.Parse) - .ToList(); - } - } - -} -*/ \ No newline at end of file diff --git a/EstateReportingAPI/Startup.cs b/EstateReportingAPI/Startup.cs index ac70f2a..16f383e 100644 --- a/EstateReportingAPI/Startup.cs +++ b/EstateReportingAPI/Startup.cs @@ -66,12 +66,7 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerF endpoints.MapContractEndpoints(); endpoints.MapTransactionEndpoints(); endpoints.MapSettlementEndpoints(); - - // Old Endpoints - //endpoints.MapFactSettlementsEndpoints(); - //endpoints.MapFactTransactionEndpoints(); - - //endpoints.MapControllers(); + endpoints.MapHealthChecks("health", new HealthCheckOptions() { Predicate = _ => true,