add search
This commit is contained in:
@@ -17,10 +17,10 @@ public interface IFinancialStatmentRepository : IRepository<long, FinancialStatm
|
||||
FinancialStatmentViewModel GetDetailsByContractingPartyId(long contractingPartyId);
|
||||
List<FinancialStatmentViewModel> Search(FinancialStatmentSearchModel searchModel);
|
||||
Task<ClientFinancialStatementViewModel> GetClientFinancialStatement(long accountId,
|
||||
ClientFinancialStatementSearchModel searchModel);
|
||||
FinancialStatementSearchModel searchModel);
|
||||
|
||||
Task<OperationResult<ClientFinancialStatementViewModel>> GetDetailsByPublicId(string publicId);
|
||||
Task<GetFinancialStatementBalanceAmount> GetBalanceAmount(long id);
|
||||
Task<double> GetClientDebtAmount(long accountId);
|
||||
Task<FinancialStatmentDetailsByContractingPartyViewModel> GetDetailsByContractingParty(long contractingPartyId);
|
||||
Task<FinancialStatmentDetailsByContractingPartyViewModel> GetDetailsByContractingParty(long contractingPartyId,FinancialStatementSearchModel searchModel);
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
namespace CompanyManagment.App.Contracts.FinancialStatment;
|
||||
|
||||
public class ClientFinancialStatementSearchModel
|
||||
public class FinancialStatementSearchModel
|
||||
{
|
||||
/// <summary>
|
||||
/// از تاریخ
|
||||
@@ -29,7 +29,7 @@ public interface IFinancialStatmentApplication
|
||||
/// <param name="searchModel"></param>
|
||||
/// <param name="accountId"></param>
|
||||
/// <returns>مدل صورت حساب مالی کلاینت</returns>
|
||||
Task<ClientFinancialStatementViewModel> GetClientFinancialStatement(ClientFinancialStatementSearchModel searchModel,
|
||||
Task<ClientFinancialStatementViewModel> GetClientFinancialStatement(FinancialStatementSearchModel searchModel,
|
||||
long accountId);
|
||||
|
||||
|
||||
@@ -53,13 +53,15 @@ public interface IFinancialStatmentApplication
|
||||
/// <param name="accountId"></param>
|
||||
/// <returns></returns>
|
||||
Task<double> GetClientDebtAmount(long accountId);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// جزئیات بر اساس
|
||||
/// </summary>
|
||||
/// <param name="contractingPartyId"></param>
|
||||
/// <param name="searchModel"></param>
|
||||
/// <returns></returns>
|
||||
Task<FinancialStatmentDetailsByContractingPartyViewModel> GetDetailsByContractingParty(long contractingPartyId);
|
||||
Task<FinancialStatmentDetailsByContractingPartyViewModel> GetDetailsByContractingParty(long contractingPartyId,
|
||||
FinancialStatementSearchModel searchModel);
|
||||
}
|
||||
|
||||
public class FinancialStatmentDetailsByContractingPartyViewModel
|
||||
|
||||
@@ -176,7 +176,7 @@ public class FinancialStatmentApplication : IFinancialStatmentApplication
|
||||
}
|
||||
|
||||
public async Task<ClientFinancialStatementViewModel> GetClientFinancialStatement(
|
||||
ClientFinancialStatementSearchModel searchModel, long accountId)
|
||||
FinancialStatementSearchModel searchModel, long accountId)
|
||||
{
|
||||
return await _financialStatmentRepository.GetClientFinancialStatement(accountId, searchModel);
|
||||
}
|
||||
@@ -197,8 +197,9 @@ public class FinancialStatmentApplication : IFinancialStatmentApplication
|
||||
return _financialStatmentRepository.GetClientDebtAmount(accountId);
|
||||
}
|
||||
|
||||
public async Task<FinancialStatmentDetailsByContractingPartyViewModel> GetDetailsByContractingParty(long contractingPartyId)
|
||||
public async Task<FinancialStatmentDetailsByContractingPartyViewModel> GetDetailsByContractingParty(
|
||||
long contractingPartyId, FinancialStatementSearchModel searchModel)
|
||||
{
|
||||
return await _financialStatmentRepository.GetDetailsByContractingParty(contractingPartyId);
|
||||
return await _financialStatmentRepository.GetDetailsByContractingParty(contractingPartyId,searchModel);
|
||||
}
|
||||
}
|
||||
@@ -1243,7 +1243,7 @@ public class InstitutionContractApplication : IInstitutionContractApplication
|
||||
|
||||
_institutionContractRepository.Create(createContract);
|
||||
_institutionContractRepository.SaveChanges();
|
||||
|
||||
|
||||
|
||||
|
||||
return opration.Succcedded(createContract.id);
|
||||
|
||||
@@ -69,7 +69,7 @@ public class FinancialStatmentRepository : RepositoryBase<long, FinancialStatmen
|
||||
}
|
||||
|
||||
public async Task<ClientFinancialStatementViewModel> GetClientFinancialStatement(long accountId,
|
||||
ClientFinancialStatementSearchModel searchModel)
|
||||
FinancialStatementSearchModel searchModel)
|
||||
{
|
||||
bool searched = false;
|
||||
|
||||
@@ -248,7 +248,7 @@ public class FinancialStatmentRepository : RepositoryBase<long, FinancialStatmen
|
||||
|
||||
}
|
||||
|
||||
public async Task<FinancialStatmentDetailsByContractingPartyViewModel> GetDetailsByContractingParty(long contractingPartyId)
|
||||
public async Task<FinancialStatmentDetailsByContractingPartyViewModel> GetDetailsByContractingParty(long contractingPartyId,FinancialStatementSearchModel searchModel)
|
||||
{
|
||||
|
||||
|
||||
@@ -260,7 +260,53 @@ public class FinancialStatmentRepository : RepositoryBase<long, FinancialStatmen
|
||||
{
|
||||
throw new NotFoundException("وضعیت مالی مورد نظر یافت نشد");
|
||||
}
|
||||
bool searched = false;
|
||||
#region Search
|
||||
|
||||
|
||||
if (searchModel.FromAmount > 0 || searchModel.ToAmount > 0)
|
||||
{
|
||||
searched = true;
|
||||
if (searchModel.FromAmount > 0 && searchModel.ToAmount > 0)
|
||||
{
|
||||
financialStatement.FinancialTransactionList = financialStatement.FinancialTransactionList.Where(x => (x.Deptor >= searchModel.FromAmount && x.Deptor <= searchModel.FromAmount) || (x.Creditor >= searchModel.FromAmount && x.Creditor <= searchModel.FromAmount)).ToList();
|
||||
}
|
||||
else if (searchModel.FromAmount > 0)
|
||||
{
|
||||
financialStatement.FinancialTransactionList = financialStatement.FinancialTransactionList.Where(x => x.Deptor >= searchModel.FromAmount || x.Creditor >= searchModel.FromAmount).ToList();
|
||||
}
|
||||
else if (searchModel.ToAmount > 0)
|
||||
{
|
||||
financialStatement.FinancialTransactionList = financialStatement.FinancialTransactionList.Where(x => x.Deptor <= searchModel.ToAmount || x.Creditor <= searchModel.ToAmount).ToList();
|
||||
}
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(searchModel.FromDate) && !string.IsNullOrWhiteSpace(searchModel.ToDate))
|
||||
{
|
||||
searched = true;
|
||||
|
||||
if (searchModel.FromDate.TryToGeorgianDateTime(out var fromDate) == false)
|
||||
throw new BadRequestException("تاریخ وارد شده نامعتبر است");
|
||||
|
||||
if (searchModel.FromDate.TryToGeorgianDateTime(out var toDate) == false)
|
||||
throw new BadRequestException("تاریخ وارد شده نامعتبر است");
|
||||
|
||||
financialStatement.FinancialTransactionList = financialStatement.FinancialTransactionList.Where(x => x.TdateGr >= fromDate && x.TdateGr <= toDate).ToList();
|
||||
}
|
||||
|
||||
if (searchModel.Type != null)
|
||||
{
|
||||
searched = true;
|
||||
|
||||
var type = searchModel.Type switch
|
||||
{
|
||||
FinancialTransactionType.Credit => "credit",
|
||||
FinancialTransactionType.Debt => "debt"
|
||||
};
|
||||
|
||||
financialStatement.FinancialTransactionList = financialStatement.FinancialTransactionList.Where(x => x.TypeOfTransaction == type).ToList();
|
||||
}
|
||||
#endregion
|
||||
double balance = 0;
|
||||
var res = new FinancialStatmentDetailsByContractingPartyViewModel()
|
||||
{
|
||||
Id = financialStatement.id,
|
||||
@@ -268,17 +314,33 @@ public class FinancialStatmentRepository : RepositoryBase<long, FinancialStatmen
|
||||
TotalCredit = financialStatement.FinancialTransactionList.Sum(x => x.Creditor),
|
||||
TotalDebt = financialStatement.FinancialTransactionList.Sum(x => x.Deptor),
|
||||
ContractingPartyName = financialStatement.ContractingPartyName,
|
||||
List = financialStatement.FinancialTransactionList.Select(t => new FinancialTransactionDetailViewModel()
|
||||
List = financialStatement.FinancialTransactionList.Select(t =>
|
||||
{
|
||||
DateTimeGr = t.TdateGr,
|
||||
DateFa = t.TdateGr.ToFarsi(),
|
||||
TimeFa = $"{t.TdateGr:HH:mm}",
|
||||
Description = t.DescriptionOption + " " + t.Description,
|
||||
Debtor = t.Deptor,
|
||||
Creditor = t.Creditor,
|
||||
Balance = t.Balance,
|
||||
Type = t.TypeOfTransaction == "debt" ? FinancialTransactionType.Debt : FinancialTransactionType.Credit,
|
||||
TypeStr = t.TypeOfTransaction == "debt" ? "ایجاد درآمد" : "دریافت درآمد"
|
||||
if (!searched)
|
||||
{
|
||||
if (t.TypeOfTransaction == "debt")
|
||||
{
|
||||
balance += t.Deptor;
|
||||
}
|
||||
else
|
||||
{
|
||||
balance -= t.Creditor;
|
||||
}
|
||||
}
|
||||
return new FinancialTransactionDetailViewModel()
|
||||
{
|
||||
DateTimeGr = t.TdateGr,
|
||||
DateFa = t.TdateGr.ToFarsi(),
|
||||
TimeFa = $"{t.TdateGr:HH:mm}",
|
||||
Description = t.DescriptionOption + " " + t.Description,
|
||||
Debtor = t.Deptor,
|
||||
Creditor = t.Creditor,
|
||||
Balance = balance,
|
||||
Type = t.TypeOfTransaction == "debt"
|
||||
? FinancialTransactionType.Debt
|
||||
: FinancialTransactionType.Credit,
|
||||
TypeStr = t.TypeOfTransaction == "debt" ? "ایجاد درآمد" : "دریافت درآمد"
|
||||
};
|
||||
}).OrderByDescending(t => t.DateTimeGr).ToList(),
|
||||
};
|
||||
return res;
|
||||
|
||||
@@ -23,12 +23,13 @@ public class FinancialStatementController : AdminBaseController
|
||||
/// گرفتن جزئیات وضعیت مالی با آیدی طرف حساب
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="searchModel"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("contracting-party/{id}")]
|
||||
public async Task<ActionResult<FinancialStatmentDetailsByContractingPartyViewModel>>
|
||||
GetDetailsByContractingParty(long id)
|
||||
public async Task<ActionResult<FinancialStatmentDetailsByContractingPartyViewModel>> GetDetailsByContractingParty(
|
||||
long id, FinancialStatementSearchModel searchModel)
|
||||
{
|
||||
var data = await _financialStatementApplication.GetDetailsByContractingParty(id);
|
||||
var data = await _financialStatementApplication.GetDetailsByContractingParty(id, searchModel);
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ public class FinancialController : ClientBaseController
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public async Task<ActionResult<ClientFinancialStatementViewModel>> GetList(ClientFinancialStatementSearchModel searchModel)
|
||||
public async Task<ActionResult<ClientFinancialStatementViewModel>> GetList(FinancialStatementSearchModel searchModel)
|
||||
{
|
||||
var accountId = _authHelper.CurrentAccountId();
|
||||
var result =await _financialStatementApplication.GetClientFinancialStatement(searchModel,accountId);
|
||||
|
||||
Reference in New Issue
Block a user