add new metod "CreateFromBankGateway"

This commit is contained in:
SamSys
2025-07-23 03:43:29 +04:00
parent 0981dc20ec
commit a61c62a2c3
3 changed files with 72 additions and 7 deletions

View File

@@ -10,6 +10,12 @@ namespace CompanyManagment.App.Contracts.FinancialStatment;
public interface IFinancialStatmentApplication
{
/// <summary>
/// ایجاد سند مالی از طریق درگاه بانکی
/// </summary>
/// <param name="command"></param>
/// <returns></returns>
OperationResult CreateFromBankGateway(CreateFinancialStatment command);
OperationResult Create(CreateFinancialStatment command);
List<FinancialStatmentViewModel> Search(FinancialStatmentSearchModel searchModel);

View File

@@ -1,9 +1,12 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using _0_Framework.Application;
using Company.Domain.ContarctingPartyAgg;
using Company.Domain.FinancialStatmentAgg;
using CompanyManagment.App.Contracts.FinancialStatment;
using CompanyManagment.App.Contracts.FinancilTransaction;
using Microsoft.AspNetCore.Components.Forms;
using Microsoft.AspNetCore.Mvc;
namespace CompanyManagment.Application;
@@ -12,11 +15,70 @@ public class FinancialStatmentApplication : IFinancialStatmentApplication
{
private readonly IFinancialStatmentRepository _financialStatmentRepository;
private readonly IFinancialTransactionApplication _financialTransactionApplication;
private readonly IPersonalContractingPartyRepository _contractingPartyRepository;
public FinancialStatmentApplication(IFinancialStatmentRepository financialStatmentRepository, IFinancialTransactionApplication financialTransactionApplication)
public FinancialStatmentApplication(IFinancialStatmentRepository financialStatmentRepository, IFinancialTransactionApplication financialTransactionApplication, IPersonalContractingPartyRepository contractingPartyRepository)
{
_financialStatmentRepository = financialStatmentRepository;
_financialTransactionApplication = financialTransactionApplication;
_contractingPartyRepository = contractingPartyRepository;
}
public OperationResult CreateFromBankGateway(CreateFinancialStatment command)
{
var op = new OperationResult();
if (command.Creditor == 0)
return op.Failed("فیلد بدهکار خالیاست");
if (_financialStatmentRepository.Exists(x => x.ContractingPartyId == command.ContractingPartyId))
{
var financialStatment =
_financialStatmentRepository.GetDetailsByContractingPartyId(command.ContractingPartyId);
var transaction = new CreateFinancialTransaction()
{
FinancialStatementId = financialStatment.Id,
TdateGr = DateTime.Now,
TdateFa = DateTime.Now.ToFarsi(),
Description = command.Description,
Deptor = 0,
Creditor = command.Creditor,
TypeOfTransaction = command.TypeOfTransaction,
DescriptionOption = command.DescriptionOption
};
var createTransaction = _financialTransactionApplication.Create(transaction);
if (createTransaction.IsSuccedded)
return op.Succcedded();
return op.Failed("خطا در انجام عملیات");
}
else
{
var contractingPartyName = _contractingPartyRepository.GetFullName(command.ContractingPartyId);
var statement = new FinancialStatment(command.ContractingPartyId, contractingPartyName);
_financialStatmentRepository.Create(statement);
_financialStatmentRepository.SaveChanges();
var transaction = new CreateFinancialTransaction()
{
FinancialStatementId = statement.id,
TdateGr = DateTime.Now,
TdateFa = DateTime.Now.ToFarsi(),
Description = command.Description,
Deptor = 0,
Creditor = command.Creditor,
Balance = 0,
TypeOfTransaction = command.TypeOfTransaction,
DescriptionOption = command.DescriptionOption
};
var createTransaction = _financialTransactionApplication.Create(transaction);
if (createTransaction.IsSuccedded)
return op.Succcedded();
return op.Failed("خطا در انجام عملیات");
}
}
public OperationResult Create(CreateFinancialStatment command)

View File

@@ -85,19 +85,16 @@ public class GeneralController : GeneralBaseController
{
var command = new CreateFinancialStatment()
{
ContractingPartyId = transaction.ContractingPartyId,
TdateFa = DateTime.Now.ToFarsi(),
Deptor = 0,
Creditor = transaction.Amount,
DeptorString = "0",
CreditorString = transaction.Amount.ToMoney(),
TypeOfTransaction = "credit",
DescriptionOption = "بابت قرارداد مابین (روابط کار)",
Description = "درگاه بانکی ",
Description = "درگاه بانکی",
};
var statementResult = _financialStatmentApplication.Create(command);
var statementResult = _financialStatmentApplication.CreateFromBankGateway(command);
if (!statementResult.IsSuccedded)
{
return await HandleFailedTransaction(transaction, paymentTransactionId);