diff --git a/CompanyManagment.App.Contracts/FinancialStatment/IFinancialStatmentApplication.cs b/CompanyManagment.App.Contracts/FinancialStatment/IFinancialStatmentApplication.cs index 2c50a187..8fcfc6a5 100644 --- a/CompanyManagment.App.Contracts/FinancialStatment/IFinancialStatmentApplication.cs +++ b/CompanyManagment.App.Contracts/FinancialStatment/IFinancialStatmentApplication.cs @@ -10,6 +10,12 @@ namespace CompanyManagment.App.Contracts.FinancialStatment; public interface IFinancialStatmentApplication { + /// + /// ایجاد سند مالی از طریق درگاه بانکی + /// + /// + /// + OperationResult CreateFromBankGateway(CreateFinancialStatment command); OperationResult Create(CreateFinancialStatment command); List Search(FinancialStatmentSearchModel searchModel); diff --git a/CompanyManagment.Application/FinancialStatmentApplication.cs b/CompanyManagment.Application/FinancialStatmentApplication.cs index 6bd9a1dd..74adafd7 100644 --- a/CompanyManagment.Application/FinancialStatmentApplication.cs +++ b/CompanyManagment.Application/FinancialStatmentApplication.cs @@ -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) diff --git a/ServiceHost/Controllers/GeneralController.cs b/ServiceHost/Controllers/GeneralController.cs index f75588f8..eba3bf55 100644 --- a/ServiceHost/Controllers/GeneralController.cs +++ b/ServiceHost/Controllers/GeneralController.cs @@ -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);