diff --git a/Company.Domain/InstitutionContractSendFlagAgg/IInstitutionContractSendFlagRepository.cs b/Company.Domain/InstitutionContractSendFlagAgg/IInstitutionContractSendFlagRepository.cs
new file mode 100644
index 00000000..7119a252
--- /dev/null
+++ b/Company.Domain/InstitutionContractSendFlagAgg/IInstitutionContractSendFlagRepository.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Threading.Tasks;
+
+namespace Company.Domain.InstitutionContractSendFlagAgg;
+
+///
+/// Interface برای Repository مربوط به فلگ ارسال قرارداد
+///
+public interface IInstitutionContractSendFlagRepository
+{
+ ///
+ /// ایجاد یک رکورد جدید برای فلگ ارسال قرارداد
+ ///
+ Task Create(InstitutionContractSendFlag flag);
+
+ ///
+ /// بازیابی فلگ بر اساس شناسه قرارداد
+ ///
+ Task GetByContractId(long contractId);
+
+ ///
+ /// بهروزرسانی فلگ ارسال
+ ///
+ Task Update(InstitutionContractSendFlag flag);
+
+ ///
+ /// بررسی اینکه آیا قرارداد ارسال شده است
+ ///
+ Task IsContractSent(long contractId);
+
+
+}
+
diff --git a/Company.Domain/InstitutionContractSendFlagAgg/InstitutionContractSendFlag.cs b/Company.Domain/InstitutionContractSendFlagAgg/InstitutionContractSendFlag.cs
new file mode 100644
index 00000000..20d951a0
--- /dev/null
+++ b/Company.Domain/InstitutionContractSendFlagAgg/InstitutionContractSendFlag.cs
@@ -0,0 +1,82 @@
+using System;
+using MongoDB.Bson;
+using MongoDB.Bson.Serialization.Attributes;
+
+namespace Company.Domain.InstitutionContractSendFlagAgg;
+
+///
+/// نمایندگی فلگ ارسال قرارداد در MongoDB
+/// این موجودیت برای ردیابی اینکه آیا قرارداد ارسال شده است استفاده میشود
+///
+public class InstitutionContractSendFlag
+{
+ public InstitutionContractSendFlag(long institutionContractId,bool isSent)
+ {
+ Id = Guid.NewGuid();
+ InstitutionContractId = institutionContractId;
+ IsSent = isSent;
+ CreatedDate = DateTime.Now;
+ }
+
+ ///
+ /// شناسه یکتای MongoDB
+ ///
+ [BsonId]
+ [BsonRepresentation(BsonType.String)]
+ public Guid Id { get; set; }
+
+ ///
+ /// شناسه قرارداد در SQL
+ ///
+ public long InstitutionContractId { get; set; }
+
+ ///
+ /// آیا قرارداد ارسال شده است
+ ///
+ public bool IsSent { get; set; }
+
+ ///
+ /// تاریخ و زمان ارسال
+ ///
+ public DateTime? SentDate { get; set; }
+
+ ///
+ /// تاریخ و زمان ایجاد رکورد
+ ///
+ public DateTime CreatedDate { get; set; }
+
+ ///
+ /// تاریخ و زمان آخرین بهروزرسانی
+ ///
+ public DateTime? LastModifiedDate { get; set; }
+
+
+ ///
+ /// علامتگذاری قرارداد به عنوان ارسالشده
+ ///
+ public void MarkAsSent(string reason = null)
+ {
+ IsSent = true;
+ SentDate = DateTime.Now;
+ LastModifiedDate = DateTime.Now;
+ }
+
+ ///
+ /// بازگردانی علامت ارسال
+ ///
+ public void MarkAsNotSent()
+ {
+ IsSent = false;
+ SentDate = null;
+ LastModifiedDate = DateTime.Now;
+ }
+
+ ///
+ /// بهروزرسانی علامت آخری اصلاح
+ ///
+ public void UpdateLastModified()
+ {
+ LastModifiedDate = DateTime.Now;
+ }
+}
+
diff --git a/CompanyManagement.Infrastructure.Mongo/InstitutionContractSendFlagRepo/InstitutionContractSendFlagRepository.cs b/CompanyManagement.Infrastructure.Mongo/InstitutionContractSendFlagRepo/InstitutionContractSendFlagRepository.cs
new file mode 100644
index 00000000..54f30be0
--- /dev/null
+++ b/CompanyManagement.Infrastructure.Mongo/InstitutionContractSendFlagRepo/InstitutionContractSendFlagRepository.cs
@@ -0,0 +1,57 @@
+using System;
+using System.Threading.Tasks;
+using Company.Domain.InstitutionContractSendFlagAgg;
+using MongoDB.Driver;
+
+namespace CompanyManagement.Infrastructure.Mongo.InstitutionContractSendFlagRepo;
+
+///
+/// Repository برای مدیریت فلگ ارسال قرارداد در MongoDB
+///
+public class InstitutionContractSendFlagRepository : IInstitutionContractSendFlagRepository
+{
+ private readonly IMongoCollection _collection;
+
+ public InstitutionContractSendFlagRepository(IMongoDatabase database)
+ {
+ _collection = database.GetCollection("InstitutionContractSendFlag");
+ }
+
+ public async Task Create(InstitutionContractSendFlag flag)
+ {
+ await _collection.InsertOneAsync(flag);
+ }
+
+ public async Task GetByContractId(long contractId)
+ {
+ var filter = Builders.Filter
+ .Eq(x => x.InstitutionContractId, contractId);
+
+ return await _collection.Find(filter).FirstOrDefaultAsync();
+ }
+
+
+ public async Task Update(InstitutionContractSendFlag flag)
+ {
+ var filter = Builders.Filter
+ .Eq(x => x.InstitutionContractId, flag.InstitutionContractId);
+
+ await _collection.ReplaceOneAsync(filter, flag);
+ }
+
+ public async Task IsContractSent(long contractId)
+ {
+ var flag = await GetByContractId(contractId);
+ return flag != null && flag.IsSent;
+ }
+
+ public async Task Remove(long contractId)
+ {
+ var filter = Builders.Filter
+ .Eq(x => x.InstitutionContractId, contractId);
+
+ await _collection.DeleteOneAsync(filter);
+ }
+
+}
+
diff --git a/PersonalContractingParty.Config/PersonalBootstrapper.cs b/PersonalContractingParty.Config/PersonalBootstrapper.cs
index 4765fafb..aab12f1f 100644
--- a/PersonalContractingParty.Config/PersonalBootstrapper.cs
+++ b/PersonalContractingParty.Config/PersonalBootstrapper.cs
@@ -61,6 +61,7 @@ using Company.Domain.HolidayItemAgg;
using Company.Domain.InstitutionContractAgg;
using Company.Domain.InstitutionContractContactInfoAgg;
using Company.Domain.InstitutionContractExtensionTempAgg;
+using Company.Domain.InstitutionContractSendFlagAgg;
using Company.Domain.InstitutionPlanAgg;
using Company.Domain.InsuranceAgg;
using Company.Domain.InsuranceEmployeeInfoAgg;
@@ -123,6 +124,7 @@ using Company.Domain.ZoneAgg;
using CompanyManagement.Infrastructure.Excel.SalaryAid;
using CompanyManagement.Infrastructure.Mongo.EmployeeFaceEmbeddingRepo;
using CompanyManagement.Infrastructure.Mongo.InstitutionContractInsertTempRepo;
+using CompanyManagement.Infrastructure.Mongo.InstitutionContractSendFlagRepo;
using CompanyManagment.App.Contracts.AdminMonthlyOverview;
using CompanyManagment.App.Contracts.AndroidApkVersion;
using CompanyManagment.App.Contracts.AuthorizedPerson;
@@ -658,6 +660,9 @@ public class PersonalBootstrapper
services.AddTransient();
services.AddTransient(); // MongoDB Implementation
+ // InstitutionContractSendFlag - MongoDB
+ services.AddTransient();
+
services.AddDbContext(x => x.UseSqlServer(connectionString));
}
}
\ No newline at end of file