add search

This commit is contained in:
MahanCh
2025-08-11 15:13:31 +03:30
parent 5ff08ebb2f
commit 4aa710b7d6
8 changed files with 92 additions and 26 deletions

View File

@@ -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);
}

View File

@@ -1,6 +1,6 @@
namespace CompanyManagment.App.Contracts.FinancialStatment;
public class ClientFinancialStatementSearchModel
public class FinancialStatementSearchModel
{
/// <summary>
/// از تاریخ

View File

@@ -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

View File

@@ -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);
}
}

View File

@@ -1243,7 +1243,7 @@ public class InstitutionContractApplication : IInstitutionContractApplication
_institutionContractRepository.Create(createContract);
_institutionContractRepository.SaveChanges();
return opration.Succcedded(createContract.id);

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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);