105 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using Datamodels.DatabaseModels;
 | |
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Threading.Tasks;
 | |
| using Microsoft.Extensions.Logging;
 | |
| using Repositories.Interfaces;
 | |
| using Datamodels.BusinessModels;
 | |
| using Datamodels.SearchModels;
 | |
| using Newtonsoft.Json;
 | |
| using System.Linq;
 | |
| using System.Linq.Expressions;
 | |
| using SearchApi.Exceptions;
 | |
| 
 | |
| namespace SearchApi.SearchLogic
 | |
| {
 | |
|     public class SearchLogic : ISearchLogic
 | |
|     {
 | |
|         private readonly ILogger<SearchLogic> _logger;
 | |
|         private readonly IFwMariaSearchRepo _searchRepo;
 | |
| 
 | |
|         private List<string> _tableNames;
 | |
|         private List<string> _joinConditions;
 | |
|         private List<string> _fieldNames;
 | |
|         private List<string> _whereConditions;
 | |
|         private List<string> _sortFields;
 | |
|         
 | |
|         public SearchLogic(ILogger<SearchLogic> logger, IFwMariaSearchRepo searchRepo)
 | |
|         {
 | |
|             _logger = logger;
 | |
|             _searchRepo = searchRepo;
 | |
|         }
 | |
| 
 | |
|         public async Task<DataResult<List<Address>>> GetAllAddresses()
 | |
|         {
 | |
|             var result = await _searchRepo.GetAllAddresses();
 | |
|             return result;
 | |
|         }
 | |
| 
 | |
|         public async Task<DataResult<ResultModel>> GetFilteredData(FilterModel filter, long skip = 0, long take = -1)
 | |
|         {
 | |
|             var result = new DataResult<ResultModel>();
 | |
|             result.Data = new ResultModel();
 | |
|             result.Data.SearchModel = filter;
 | |
| 
 | |
|             return result;
 | |
|         }
 | |
| 
 | |
|         // Extract Table
 | |
|         private void GetTables(FilterModel filter)
 | |
|         {
 | |
|             bool hasTableList = filter.TableDescriptions.Count > 0;
 | |
|             _tableNames = new List<string>();
 | |
|             foreach(var table in filter.TableDescriptions)
 | |
|             {
 | |
|                 if (hasTableList && string.IsNullOrEmpty(table.TableAlias))
 | |
|                 {
 | |
|                     throw new TableAliasMissingException($"No Alias defined for Table {table.TableName}");
 | |
|                 }
 | |
|                 _tableNames.Add($"{table.TableName} {(string.IsNullOrEmpty(table.TableAlias) ? string.Empty : table.TableAlias)}");
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         // Extract Fieldlist
 | |
|         private void GetFields(FilterModel filter)
 | |
|         {
 | |
|             var tables = filter.TableDescriptions;
 | |
|             foreach (var table in tables)
 | |
|             {
 | |
|                 bool hasMultipleFields = table.Fields.Count > 0;
 | |
|                 foreach (var field in table.Fields) {
 | |
|                     if (hasMultipleFields && string.IsNullOrEmpty(field.FieldAlias))
 | |
|                     {
 | |
|                         throw new FieldAliasMissingException($"No Alias defined for Field {field.FieldName} in Table {table.TableName}");
 | |
|                     }
 | |
|                     _fieldNames.Add($"{table.TableAlias}.{field.FieldName} {field.FieldAlias}");
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         // Extract Join Path if more than one table
 | |
|         private void GetTableJoinConditions(FilterModel filter)
 | |
|         {
 | |
| 
 | |
|         }
 | |
| 
 | |
|         // Extract Where Conditions
 | |
|         private void GetWhereConditions(FilterModel filter)
 | |
|         {
 | |
| 
 | |
|         }
 | |
| 
 | |
|         // Extract Sort Items
 | |
|         private void GetSortFields(FilterModel filter)
 | |
|         {
 | |
| 
 | |
|         }
 | |
| 
 | |
|         // Assemble SQL Query
 | |
|         private string AssembleSqlQuery()
 | |
|         {
 | |
|             return null;
 | |
|         }
 | |
|     }
 | |
| }
 |