234 lines
7.4 KiB
C#
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();
|
|
}
|
|
} |