Files
Backend-Api/CompanyManagment.EFCore/Repository/PaymentInstrumentRepository.cs

234 lines
7.4 KiB
C#

using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using _0_Framework.Application;
using _0_Framework.InfraStructure;
using Company.Domain.PaymentInstrumentAgg;
using CompanyManagment.App.Contracts.PaymentInstrument;
using Microsoft.EntityFrameworkCore;
namespace CompanyManagment.EFCore.Repository;
public class PaymentInstrumentRepository : RepositoryBase<long, PaymentInstrument>, IPaymentInstrumentRepository
{
private readonly CompanyContext _companyContext;
public PaymentInstrumentRepository(CompanyContext context) : base(context)
{
_companyContext = context;
}
public async Task<GetPaymentInstrumentListViewModel> GetList(PaymentInstrumentSearchModel searchModel)
{
var query = _companyContext.PaymentInstruments
.Include(x => x.PaymentInstrumentGroup)
.AsNoTracking();
#region Search
if (!string.IsNullOrWhiteSpace(searchModel.AccountHolderName))
{
query = query.Where(x => x.AccountHolderName.Contains(searchModel.AccountHolderName));
}
if (!string.IsNullOrWhiteSpace(searchModel.AccountNumber))
{
query = query.Where(x => x.AccountNumber.Contains(searchModel.AccountNumber));
}
if (!string.IsNullOrWhiteSpace(searchModel.PosTerminalId))
{
query = query.Where(x => x.PosTerminalId.Contains(searchModel.PosTerminalId));
}
if (!string.IsNullOrWhiteSpace(searchModel.CardNumber))
{
query = query.Where(x => x.CardNumber.Contains(searchModel.CardNumber));
}
if (!string.IsNullOrWhiteSpace(searchModel.IBan))
{
query = query.Where(x => x.IBan.Contains(searchModel.IBan));
}
#endregion
var count = query.Count();
var list = new GetPaymentInstrumentListViewModel()
{
Count = count,
GropedViewModels = await query.GroupBy(x => x.PaymentInstrumentGroupId)
.OrderBy(x=>x.Key)
.Select(x => new PaymentInstrumentGroupedViewModel()
{
Name = x.First().PaymentInstrumentGroup.Name,
Items = x.Select(i => new PaymentInstrumentItemsViewModel()
{
Id = i.id,
Description = i.Description,
IBan = i.IBan,
PosTerminalId = i.PosTerminalId,
CardNumber = i.CardNumber,
AccountNumber = i.AccountNumber,
AccountHolderName = i.AccountHolderName,
Type = i.Type
}).ToList()
}).Skip(searchModel.PageIndex).Take(30).ToListAsync()
};
return list;
}
public Task<List<PosTerminalSelectListViewModel>> GetPosTerminalSelectList(string search)
{
var queryable = _companyContext.PaymentInstruments.Select(x=>new PosTerminalSelectListViewModel
{
Id = x.id,
Text = x.PosTerminalId
});
if (!string.IsNullOrWhiteSpace(search))
{
queryable = queryable.Where(x => x.Text.Contains(search));
}
return queryable.Take(50).ToListAsync();
}
public Task<List<IbanSelectListViewModel>> GetIbanSelectList(string search)
{
var queryable = _companyContext.PaymentInstruments.Select(x => new IbanSelectListViewModel
{
Id = x.id,
Text = x.IBan
});
if (!string.IsNullOrWhiteSpace(search))
{
queryable = queryable.Where(x => x.Text.Contains(search));
}
return queryable.Take(50).ToListAsync();
}
public Task<List<AccountNumberSelectListViewModel>> GetAccountNumberSelectList(string search)
{
var queryable = _companyContext.PaymentInstruments.Select(x => new AccountNumberSelectListViewModel
{
Id = x.id,
Text = x.AccountNumber
});
if (!string.IsNullOrWhiteSpace(search))
{
queryable = queryable.Where(x => x.Text.Contains(search));
}
return queryable.Take(50).ToListAsync();
}
public Task<List<CardNumberSelectListViewModel>> GetCardNumberSelectList(string search)
{
var queryable = _companyContext.PaymentInstruments.Select(x => new CardNumberSelectListViewModel
{
Id = x.id,
Text = x.CardNumber
});
if (!string.IsNullOrWhiteSpace(search))
{
queryable = queryable.Where(x => x.Text.Contains(search));
}
return queryable.Take(50).ToListAsync();
}
public async Task<List<string>> PosTerminalIdSelectList(string search, string selected)
{
var query = _companyContext.PaymentInstruments.Where(x=>x.PosTerminalId != null).Select(x => x.PosTerminalId);
if (!string.IsNullOrWhiteSpace(search))
{
query = query.Where(x => x.Contains(search));
}
var result = await query.Take(50).ToListAsync();
if (!string.IsNullOrWhiteSpace(selected))
{
result.Add(selected);
}
return result.Distinct().ToList();
}
public async Task<List<string>> IbanSelectList(string search, string selected)
{
var query = _companyContext.PaymentInstruments.Where(x=>x.IBan != null).Select(x => x.IBan);
if (!string.IsNullOrWhiteSpace(search))
{
query = query.Where(x => x.Contains(search));
}
var result = await query.Take(50).ToListAsync();
if (!string.IsNullOrWhiteSpace(selected))
{
result.Add(selected);
}
return result.Distinct().ToList();
}
public async Task<List<string>> AccountNumberSelectList(string search, string selected)
{
var query = _companyContext.PaymentInstruments.Where(x=>x.AccountNumber != null).Select(x => x.AccountNumber);
if (!string.IsNullOrWhiteSpace(search))
{
query = query.Where(x => x.Contains(search));
}
var result = await query.Take(50).ToListAsync();
if (!string.IsNullOrWhiteSpace(selected))
{
result.Add(selected);
}
return result.Distinct().ToList();
}
public async Task<List<string>> AccountHolderNameSelectList(string search, string selected)
{
var accountHolderQuery = _companyContext.PaymentInstruments.Where(x => x.AccountHolderName != null).Select(x => x.AccountHolderName);
if (!string.IsNullOrWhiteSpace(search))
{
accountHolderQuery = accountHolderQuery.Where(x => x.Contains(search));
}
var result = await accountHolderQuery.Take(50).ToListAsync();
if (!string.IsNullOrWhiteSpace(selected))
{
result.Add(selected);
}
return result.Distinct().ToList();
}
public async Task<List<string>> CardNumberSelectList(string search, string selected)
{
var query = _companyContext.PaymentInstruments.Where(x=>x.CardNumber != null).Select(x => x.CardNumber);
if (!string.IsNullOrWhiteSpace(search))
{
query = query.Where(x => x.Contains(search));
}
var result = await query.Take(50).ToListAsync();
if (!string.IsNullOrWhiteSpace(selected))
{
result.Add(selected);
}
return result.Distinct().ToList();
}
}