diff --git a/Company.Domain/InstitutionContractSendFlagAgg/InstitutionContractSendFlag.cs b/Company.Domain/InstitutionContractSendFlagAgg/InstitutionContractSendFlag.cs
index 20d951a0..2b3a7137 100644
--- a/Company.Domain/InstitutionContractSendFlagAgg/InstitutionContractSendFlag.cs
+++ b/Company.Domain/InstitutionContractSendFlagAgg/InstitutionContractSendFlag.cs
@@ -54,7 +54,7 @@ public class InstitutionContractSendFlag
///
/// علامتگذاری قرارداد به عنوان ارسالشده
///
- public void MarkAsSent(string reason = null)
+ public void MarkAsSent()
{
IsSent = true;
SentDate = DateTime.Now;
diff --git a/CompanyManagment.App.Contracts/InstitutionContract/IInstitutionContractApplication.cs b/CompanyManagment.App.Contracts/InstitutionContract/IInstitutionContractApplication.cs
index 10266d6c..dc8edb1e 100644
--- a/CompanyManagment.App.Contracts/InstitutionContract/IInstitutionContractApplication.cs
+++ b/CompanyManagment.App.Contracts/InstitutionContract/IInstitutionContractApplication.cs
@@ -305,6 +305,14 @@ public interface IInstitutionContractApplication
Task SetDiscountForCreation(InstitutionContractSetDiscountForCreationRequest request);
Task ResetDiscountForCreation(InstitutionContractResetDiscountForExtensionRequest request);
Task CreationComplete(InstitutionContractExtensionCompleteRequest request);
+
+ ///
+ /// تعیین فلگ ارسال قرارداد در MongoDB
+ /// اگر فلگ وجود نداشتند ایجاد میکند
+ ///
+ /// درخواست تعیین فلگ
+ /// نتیجه عملیات
+ Task SetContractSendFlag(SetInstitutionContractSendFlagRequest request);
}
public class CreationSetContractingPartyResponse
diff --git a/CompanyManagment.App.Contracts/InstitutionContract/SetInstitutionContractSendFlagRequest.cs b/CompanyManagment.App.Contracts/InstitutionContract/SetInstitutionContractSendFlagRequest.cs
new file mode 100644
index 00000000..e19bacf5
--- /dev/null
+++ b/CompanyManagment.App.Contracts/InstitutionContract/SetInstitutionContractSendFlagRequest.cs
@@ -0,0 +1,19 @@
+namespace CompanyManagment.App.Contracts.InstitutionContract;
+
+///
+/// درخواست برای تعیین فلگ ارسال قرارداد
+///
+public class SetInstitutionContractSendFlagRequest
+{
+ ///
+ /// شناسه قرارداد
+ ///
+ public long InstitutionContractId { get; set; }
+
+ ///
+ /// آیا قرارداد ارسال شده است
+ ///
+ public bool IsSent { get; set; }
+
+}
+
diff --git a/CompanyManagment.Application/InstitutionContractApplication.cs b/CompanyManagment.Application/InstitutionContractApplication.cs
index 5790aaee..94da79fc 100644
--- a/CompanyManagment.Application/InstitutionContractApplication.cs
+++ b/CompanyManagment.Application/InstitutionContractApplication.cs
@@ -19,6 +19,7 @@ using Company.Domain.PaymentTransactionAgg;
using Company.Domain.RepresentativeAgg;
using Company.Domain.RollCallServiceAgg;
using Company.Domain.WorkshopAgg;
+using Company.Domain.InstitutionContractSendFlagAgg;
using CompanyManagment.App.Contracts.FinancialInvoice;
using CompanyManagment.App.Contracts.FinancialStatment;
using CompanyManagment.App.Contracts.InstitutionContract;
@@ -51,6 +52,7 @@ public class InstitutionContractApplication : IInstitutionContractApplication
private readonly IPaymentTransactionRepository _paymentTransactionRepository;
private readonly IRollCallServiceRepository _rollCallServiceRepository;
private readonly ISepehrPaymentGatewayService _sepehrPaymentGatewayService;
+ private readonly IInstitutionContractSendFlagRepository _institutionContractSendFlagRepository;
public InstitutionContractApplication(IInstitutionContractRepository institutionContractRepository,
@@ -62,7 +64,8 @@ public class InstitutionContractApplication : IInstitutionContractApplication
IAccountApplication accountApplication, ISmsService smsService,
IFinancialInvoiceRepository financialInvoiceRepository, IHttpClientFactory httpClientFactory,
IPaymentTransactionRepository paymentTransactionRepository, IRollCallServiceRepository rollCallServiceRepository,
- ISepehrPaymentGatewayService sepehrPaymentGatewayService,ILogger sepehrGatewayLogger)
+ ISepehrPaymentGatewayService sepehrPaymentGatewayService,ILogger sepehrGatewayLogger,
+ IInstitutionContractSendFlagRepository institutionContractSendFlagRepository)
{
_institutionContractRepository = institutionContractRepository;
_contractingPartyRepository = contractingPartyRepository;
@@ -80,6 +83,7 @@ public class InstitutionContractApplication : IInstitutionContractApplication
_rollCallServiceRepository = rollCallServiceRepository;
_sepehrPaymentGatewayService = sepehrPaymentGatewayService;
_paymentGateway = new SepehrPaymentGateway(httpClientFactory,sepehrGatewayLogger);
+ _institutionContractSendFlagRepository = institutionContractSendFlagRepository;
}
public OperationResult Create(CreateInstitutionContract command)
@@ -1820,7 +1824,60 @@ public class InstitutionContractApplication : IInstitutionContractApplication
installments.Add(lastInstallment);
return installments;
}
+
+
}
+ ///
+ /// تعیین فلگ ارسال قرارداد
+ /// اگر فلگ وجود نداشتند ایجاد میکند
+ ///
+ public async Task SetContractSendFlag(SetInstitutionContractSendFlagRequest request)
+ {
+ var operationResult = new OperationResult();
+
+ try
+ {
+ // بازیابی قرارداد از SQL
+ var contract = _institutionContractRepository.Get(request.InstitutionContractId);
+ if (contract == null)
+ return operationResult.Failed("قرارداد مورد نظر یافت نشد");
+
+ // بررسی اینکه آیا فلگ در MongoDB وجود دارد
+ var existingFlag = await _institutionContractSendFlagRepository
+ .GetByContractId(request.InstitutionContractId);
+
+ if (existingFlag != null)
+ {
+ // اگر فلگ وجود داشتند، آن را اپدیت کنیم
+ if (request.IsSent)
+ {
+ existingFlag.MarkAsSent();
+ }
+ else
+ {
+ existingFlag.MarkAsNotSent();
+ }
+ existingFlag.UpdateLastModified();
+ await _institutionContractSendFlagRepository.Update(existingFlag);
+ }
+ else
+ {
+ // اگر فلگ وجود ندارد، آن را ایجاد کنیم
+ var newFlag = new InstitutionContractSendFlag(
+ request.InstitutionContractId,
+ request.IsSent
+ );
+
+ await _institutionContractSendFlagRepository.Create(newFlag);
+ }
+
+ return operationResult.Succcedded();
+ }
+ catch (Exception ex)
+ {
+ return operationResult.Failed($"خطا در تعیین فلگ ارسال: {ex.Message}");
+ }
+ }
}
#region CustomViewModels