diff --git a/0_Framework/0_Framework.csproj b/0_Framework/0_Framework.csproj
index 1de86aff..54b62986 100644
--- a/0_Framework/0_Framework.csproj
+++ b/0_Framework/0_Framework.csproj
@@ -21,4 +21,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/0_Framework/Application/UID/UidService.cs b/0_Framework/Application/UID/UidService.cs
deleted file mode 100644
index ccf3c0ef..00000000
--- a/0_Framework/Application/UID/UidService.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-using System;
-using System.Net.Http;
-using System.Net.Http.Json;
-using System.Text;
-using System.Text.Json;
-using System.Threading.Tasks;
-using Newtonsoft.Json;
-
-namespace _0_Framework.Application.UID;
-
-public class UidService : IUidService
-{
- private readonly HttpClient _httpClient;
- private const string BaseUrl = "https://json-api.uid.ir/api/inquiry/";
-
- public UidService()
- {
- _httpClient = new HttpClient()
- {
- BaseAddress = new Uri(BaseUrl)
- };
- }
-
- public async Task GetPersonalInfo(string nationalCode, string birthDate)
- {
- var request = new PersonalInfoRequest
- {
- BirthDate = birthDate,
- NationalId = nationalCode,
- RequestContext = new UidRequestContext()
- };
- var json = JsonConvert.SerializeObject(request);
- var contentType = new StringContent(json, Encoding.UTF8, "application/json");
-
- try
- {
- var requestResult = await _httpClient.PostAsync("person/v2", contentType);
- if (!requestResult.IsSuccessStatusCode)
- return null;
- var responseResult = await requestResult.Content.ReadFromJsonAsync();
- if (responseResult.BasicInformation != null)
- {
- responseResult.BasicInformation.FirstName = responseResult.BasicInformation.FirstName?.ToPersian();
- responseResult.BasicInformation.LastName = responseResult.BasicInformation.LastName?.ToPersian();
- responseResult.BasicInformation.FatherName = responseResult.BasicInformation.FatherName?.ToPersian();
- }
-
- return responseResult;
- }
- catch
- {
-
- return new PersonalInfoResponse(new UidBasicInformation(),
- new IdentificationInformation(default, default, default, default, default), new RegistrationStatus(),
- new ResponseContext(new UidStatus(14, "")));
- }
-
- }
-
-
- public async Task IsMachPhoneWithNationalCode(string nationalCode, string phoneNumber)
- {
- var request = new PersonalInfoRequest
- {
- MobileNumber = phoneNumber,
- NationalId = nationalCode,
- RequestContext = new UidRequestContext()
- };
- var json = JsonConvert.SerializeObject(request);
- var contentType = new StringContent(json, Encoding.UTF8, "application/json");
-
- var requestResult = await _httpClient.PostAsync("mobile/owner/v2", contentType);
- if (!requestResult.IsSuccessStatusCode)
- return null;
-
- var responseResult = await requestResult.Content.ReadFromJsonAsync();
- return responseResult;
- }
-}
\ No newline at end of file
diff --git a/Company.Domain/AuthorizedPersonAgg/AuthorizedPerson.cs b/Company.Domain/AuthorizedPersonAgg/AuthorizedPerson.cs
new file mode 100644
index 00000000..93819400
--- /dev/null
+++ b/Company.Domain/AuthorizedPersonAgg/AuthorizedPerson.cs
@@ -0,0 +1,51 @@
+using System;
+using _0_Framework.Domain;
+
+namespace Company.Domain.AuthorizedPersonAgg;
+
+public class AuthorizedPerson : EntityBase
+{
+ public string NationalCode { get; private set; }
+ public string FirstName { get; private set; }
+ public string LastName { get; private set; }
+ public string FatherName { get; private set; }
+ public string BirthDate { get; private set; }
+ public string Gender { get; private set; }
+ public string DeathStatus { get; private set; }
+ public string ShenasnameSeri { get; private set; }
+ public string ShenasnameSerial { get; private set; }
+ public string ShenasnamehNumber { get; private set; }
+ public bool IsVerified { get; private set; }
+ public DateTime? VerificationDate { get; private set; }
+
+ public AuthorizedPerson(string nationalCode, string firstName, string lastName, string fatherName,
+ string birthDate, string gender, string deathStatus, string shenasnameSeri,
+ string shenasnameSerial, string shenasnamehNumber)
+ {
+ NationalCode = nationalCode;
+ FirstName = firstName;
+ LastName = lastName;
+ FatherName = fatherName;
+ BirthDate = birthDate;
+ Gender = gender;
+ DeathStatus = deathStatus;
+ ShenasnameSeri = shenasnameSeri;
+ ShenasnameSerial = shenasnameSerial;
+ ShenasnamehNumber = shenasnamehNumber;
+ IsVerified = true;
+ VerificationDate = DateTime.Now;
+ }
+
+ public void UpdatePersonalInfo(string firstName, string lastName, string fatherName,
+ string gender, string deathStatus)
+ {
+ FirstName = firstName;
+ LastName = lastName;
+ FatherName = fatherName;
+ Gender = gender;
+ DeathStatus = deathStatus;
+ VerificationDate = DateTime.Now;
+ }
+
+ protected AuthorizedPerson() { }
+}
diff --git a/Company.Domain/AuthorizedPersonAgg/IAuthorizedPersonRepository.cs b/Company.Domain/AuthorizedPersonAgg/IAuthorizedPersonRepository.cs
new file mode 100644
index 00000000..2157150a
--- /dev/null
+++ b/Company.Domain/AuthorizedPersonAgg/IAuthorizedPersonRepository.cs
@@ -0,0 +1,9 @@
+using _0_Framework.Domain;
+
+namespace Company.Domain.AuthorizedPersonAgg;
+
+public interface IAuthorizedPersonRepository : IRepository
+{
+ AuthorizedPerson GetByNationalCode(string nationalCode);
+ bool ExistsByNationalCode(string nationalCode);
+}
diff --git a/CompanyManagment.App.Contracts/AuthorizedPerson/AuthorizedPersonViewModel.cs b/CompanyManagment.App.Contracts/AuthorizedPerson/AuthorizedPersonViewModel.cs
new file mode 100644
index 00000000..762a3c4a
--- /dev/null
+++ b/CompanyManagment.App.Contracts/AuthorizedPerson/AuthorizedPersonViewModel.cs
@@ -0,0 +1,19 @@
+namespace CompanyManagment.App.Contracts.AuthorizedPerson;
+
+public class AuthorizedPersonViewModel
+{
+ public long Id { get; set; }
+ public string NationalCode { get; set; }
+ public string FirstName { get; set; }
+ public string LastName { get; set; }
+ public string FatherName { get; set; }
+ public string BirthDate { get; set; }
+ public string Gender { get; set; }
+ public string DeathStatus { get; set; }
+ public string ShenasnameSeri { get; set; }
+ public string ShenasnameSerial { get; set; }
+ public string ShenasnamehNumber { get; set; }
+ public bool IsVerified { get; set; }
+ public string VerificationDate { get; set; }
+ public string CreationDate { get; set; }
+}
diff --git a/CompanyManagment.App.Contracts/AuthorizedPerson/CreateAuthorizedPerson.cs b/CompanyManagment.App.Contracts/AuthorizedPerson/CreateAuthorizedPerson.cs
new file mode 100644
index 00000000..f00a3220
--- /dev/null
+++ b/CompanyManagment.App.Contracts/AuthorizedPerson/CreateAuthorizedPerson.cs
@@ -0,0 +1,15 @@
+namespace CompanyManagment.App.Contracts.AuthorizedPerson;
+
+public class CreateAuthorizedPerson
+{
+ public string NationalCode { get; set; }
+ public string FirstName { get; set; }
+ public string LastName { get; set; }
+ public string FatherName { get; set; }
+ public string BirthDate { get; set; }
+ public string Gender { get; set; }
+ public string DeathStatus { get; set; }
+ public string ShenasnameSeri { get; set; }
+ public string ShenasnameSerial { get; set; }
+ public string ShenasnamehNumber { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/AuthorizedPerson/IAuthorizedPersonApplication.cs b/CompanyManagment.App.Contracts/AuthorizedPerson/IAuthorizedPersonApplication.cs
new file mode 100644
index 00000000..809dca56
--- /dev/null
+++ b/CompanyManagment.App.Contracts/AuthorizedPerson/IAuthorizedPersonApplication.cs
@@ -0,0 +1,13 @@
+using System.Collections.Generic;
+using _0_Framework.Application;
+
+namespace CompanyManagment.App.Contracts.AuthorizedPerson;
+
+public interface IAuthorizedPersonApplication
+{
+ OperationResult Create(CreateAuthorizedPerson command);
+ OperationResult CreateFromUidResponse(CreateAuthorizedPerson command);
+ AuthorizedPersonViewModel GetByNationalCode(string nationalCode);
+ List Search(string nationalCode = null, string firstName = null, string lastName = null);
+ bool ExistsByNationalCode(string nationalCode);
+}
diff --git a/CompanyManagment.Application/AuthorizedPersonApplication.cs b/CompanyManagment.Application/AuthorizedPersonApplication.cs
new file mode 100644
index 00000000..075e1e38
--- /dev/null
+++ b/CompanyManagment.Application/AuthorizedPersonApplication.cs
@@ -0,0 +1,119 @@
+using System.Collections.Generic;
+using System.Linq;
+using _0_Framework.Application;
+using Company.Domain.AuthorizedPersonAgg;
+using CompanyManagment.App.Contracts.AuthorizedPerson;
+
+namespace CompanyManagment.Application;
+
+public class AuthorizedPersonApplication : IAuthorizedPersonApplication
+{
+ private readonly IAuthorizedPersonRepository _authorizedPersonRepository;
+
+ public AuthorizedPersonApplication(IAuthorizedPersonRepository authorizedPersonRepository)
+ {
+ _authorizedPersonRepository = authorizedPersonRepository;
+ }
+
+ public OperationResult Create(CreateAuthorizedPerson command)
+ {
+ var operation = new OperationResult();
+
+ if (_authorizedPersonRepository.ExistsByNationalCode(command.NationalCode))
+ return operation.Failed("شخص با این کد ملی قبلاً ثبت شده است");
+
+ var authorizedPerson = new AuthorizedPerson(
+ command.NationalCode, command.FirstName, command.LastName,
+ command.FatherName, command.BirthDate, command.Gender,
+ command.DeathStatus, command.ShenasnameSeri,
+ command.ShenasnameSerial, command.ShenasnamehNumber);
+
+ _authorizedPersonRepository.Create(authorizedPerson);
+ _authorizedPersonRepository.SaveChanges();
+
+ return operation.Succcedded();
+ }
+
+ public OperationResult CreateFromUidResponse(CreateAuthorizedPerson command)
+ {
+ var operation = new OperationResult();
+
+ var existingPerson = _authorizedPersonRepository.GetByNationalCode(command.NationalCode);
+ if (existingPerson != null)
+ {
+ existingPerson.UpdatePersonalInfo(command.FirstName, command.LastName,
+ command.FatherName, command.Gender, command.DeathStatus);
+ _authorizedPersonRepository.SaveChanges();
+ return operation.Succcedded();
+ }
+
+ var authorizedPerson = new AuthorizedPerson(
+ command.NationalCode, command.FirstName, command.LastName,
+ command.FatherName, command.BirthDate, command.Gender,
+ command.DeathStatus, command.ShenasnameSeri,
+ command.ShenasnameSerial, command.ShenasnamehNumber);
+
+ _authorizedPersonRepository.Create(authorizedPerson);
+ _authorizedPersonRepository.SaveChanges();
+
+ return operation.Succcedded();
+ }
+
+ public AuthorizedPersonViewModel GetByNationalCode(string nationalCode)
+ {
+ var authorizedPerson = _authorizedPersonRepository.GetByNationalCode(nationalCode);
+ if (authorizedPerson == null) return null;
+
+ return new AuthorizedPersonViewModel
+ {
+ Id = authorizedPerson.id,
+ NationalCode = authorizedPerson.NationalCode,
+ FirstName = authorizedPerson.FirstName,
+ LastName = authorizedPerson.LastName,
+ FatherName = authorizedPerson.FatherName,
+ BirthDate = authorizedPerson.BirthDate,
+ Gender = authorizedPerson.Gender,
+ DeathStatus = authorizedPerson.DeathStatus,
+ ShenasnameSeri = authorizedPerson.ShenasnameSeri,
+ ShenasnameSerial = authorizedPerson.ShenasnameSerial,
+ ShenasnamehNumber = authorizedPerson.ShenasnamehNumber,
+ IsVerified = authorizedPerson.IsVerified,
+ VerificationDate = authorizedPerson.VerificationDate?.ToString("yyyy/MM/dd HH:mm"),
+ CreationDate = authorizedPerson.CreationDate.ToString("yyyy/MM/dd HH:mm")
+ };
+ }
+
+ public List Search(string nationalCode = null, string firstName = null, string lastName = null)
+ {
+ var allPersons = _authorizedPersonRepository.Get();
+
+ var filteredPersons = allPersons.Where(x =>
+ (string.IsNullOrEmpty(nationalCode) || x.NationalCode.Contains(nationalCode)) &&
+ (string.IsNullOrEmpty(firstName) || x.FirstName.Contains(firstName)) &&
+ (string.IsNullOrEmpty(lastName) || x.LastName.Contains(lastName)))
+ .Select(x => new AuthorizedPersonViewModel
+ {
+ Id = x.id,
+ NationalCode = x.NationalCode,
+ FirstName = x.FirstName,
+ LastName = x.LastName,
+ FatherName = x.FatherName,
+ BirthDate = x.BirthDate,
+ Gender = x.Gender,
+ DeathStatus = x.DeathStatus,
+ ShenasnameSeri = x.ShenasnameSeri,
+ ShenasnameSerial = x.ShenasnameSerial,
+ ShenasnamehNumber = x.ShenasnamehNumber,
+ IsVerified = x.IsVerified,
+ VerificationDate = x.VerificationDate?.ToString("yyyy/MM/dd HH:mm"),
+ CreationDate = x.CreationDate.ToString("yyyy/MM/dd HH:mm")
+ }).ToList();
+
+ return filteredPersons;
+ }
+
+ public bool ExistsByNationalCode(string nationalCode)
+ {
+ return _authorizedPersonRepository.ExistsByNationalCode(nationalCode);
+ }
+}
diff --git a/CompanyManagment.EFCore/CompanyContext.cs b/CompanyManagment.EFCore/CompanyContext.cs
index 330885b7..1074341c 100644
--- a/CompanyManagment.EFCore/CompanyContext.cs
+++ b/CompanyManagment.EFCore/CompanyContext.cs
@@ -118,6 +118,7 @@ using Company.Domain.YearlysSalaryTitleAgg;
using CompanyManagment.EFCore.Mapping;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Conventions;
+using Company.Domain.AuthorizedPersonAgg;
using Evidence = Company.Domain.Evidence.Evidence;
using Zone = Company.Domain.ZoneAgg.Zone;
@@ -194,7 +195,8 @@ public class CompanyContext : DbContext
public DbSet PaymentInstruments { get; set; }
public DbSet PaymentInstrumentGroups { get; set; }
-
+ public DbSet AuthorizedPersons { get; set; }
+
#endregion
#region Pooya
diff --git a/CompanyManagment.EFCore/Mapping/AuthorizedPersonMapping.cs b/CompanyManagment.EFCore/Mapping/AuthorizedPersonMapping.cs
new file mode 100644
index 00000000..14849b45
--- /dev/null
+++ b/CompanyManagment.EFCore/Mapping/AuthorizedPersonMapping.cs
@@ -0,0 +1,60 @@
+using Company.Domain.AuthorizedPersonAgg;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+
+namespace CompanyManagment.EFCore.Mapping;
+
+public class AuthorizedPersonMapping : IEntityTypeConfiguration
+{
+ public void Configure(EntityTypeBuilder builder)
+ {
+ builder.ToTable("AuthorizedPersons");
+
+ builder.HasKey(x => x.id);
+
+ builder.Property(x => x.NationalCode)
+ .HasMaxLength(10)
+ .IsRequired();
+
+ builder.Property(x => x.FirstName)
+ .HasMaxLength(100)
+ .IsRequired();
+
+ builder.Property(x => x.LastName)
+ .HasMaxLength(100)
+ .IsRequired();
+
+ builder.Property(x => x.FatherName)
+ .HasMaxLength(100);
+
+ builder.Property(x => x.BirthDate)
+ .HasMaxLength(10);
+
+ builder.Property(x => x.Gender)
+ .HasMaxLength(50);
+
+ builder.Property(x => x.DeathStatus)
+ .HasMaxLength(50);
+
+ builder.Property(x => x.ShenasnameSeri)
+ .HasMaxLength(10);
+
+ builder.Property(x => x.ShenasnameSerial)
+ .HasMaxLength(10);
+
+ builder.Property(x => x.ShenasnamehNumber)
+ .HasMaxLength(20);
+
+ builder.Property(x => x.IsVerified)
+ .IsRequired();
+
+ builder.Property(x => x.VerificationDate);
+
+ builder.Property(x => x.CreationDate)
+ .IsRequired();
+
+ // Index for better performance on NationalCode queries
+ builder.HasIndex(x => x.NationalCode)
+ .IsUnique();
+ }
+}
diff --git a/CompanyManagment.EFCore/Migrations/20250827073456_AddAuthorizedPersonTable.Designer.cs b/CompanyManagment.EFCore/Migrations/20250827073456_AddAuthorizedPersonTable.Designer.cs
new file mode 100644
index 00000000..285ea23b
--- /dev/null
+++ b/CompanyManagment.EFCore/Migrations/20250827073456_AddAuthorizedPersonTable.Designer.cs
@@ -0,0 +1,10555 @@
+//
+using System;
+using System.Collections.Generic;
+using CompanyManagment.EFCore;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace CompanyManagment.EFCore.Migrations
+{
+ [DbContext(typeof(CompanyContext))]
+ [Migration("20250827073456_AddAuthorizedPersonTable")]
+ partial class AddAuthorizedPersonTable
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "8.0.10")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+ SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
+
+ modelBuilder.Entity("Company.Domain.AdminMonthlyOverviewAgg.AdminMonthlyOverview", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Month")
+ .HasColumnType("int");
+
+ b.Property("Status")
+ .IsRequired()
+ .HasMaxLength(155)
+ .HasColumnType("nvarchar(155)");
+
+ b.Property("WorkshopId")
+ .HasColumnType("bigint");
+
+ b.Property("Year")
+ .HasColumnType("int");
+
+ b.HasKey("id");
+
+ b.ToTable("AdminMonthlyOverviews");
+ });
+
+ modelBuilder.Entity("Company.Domain.AndroidApkVersionAgg.AndroidApkVersion", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("IsActive")
+ .IsRequired()
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)");
+
+ b.Property("Path")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)");
+
+ b.Property("Title")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("VersionCode")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)");
+
+ b.Property("VersionName")
+ .HasMaxLength(35)
+ .HasColumnType("nvarchar(35)");
+
+ b.HasKey("id");
+
+ b.ToTable("AndroidApkVersions", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.AuthorizedPersonAgg.AuthorizedPerson", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("BirthDate")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("DeathStatus")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("FatherName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)");
+
+ b.Property("FirstName")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)");
+
+ b.Property("Gender")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("IsVerified")
+ .HasColumnType("bit");
+
+ b.Property("LastName")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)");
+
+ b.Property("NationalCode")
+ .IsRequired()
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("ShenasnameSeri")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("ShenasnameSerial")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("ShenasnamehNumber")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)");
+
+ b.Property("VerificationDate")
+ .HasColumnType("datetime2");
+
+ b.HasKey("id");
+
+ b.HasIndex("NationalCode")
+ .IsUnique();
+
+ b.ToTable("AuthorizedPersons", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.BankAgg.Bank", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("BankLogoMediaId")
+ .HasColumnType("bigint");
+
+ b.Property("BankName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.HasKey("id");
+
+ b.ToTable("Banks", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.BillAgg.EntityBill", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("Appointed")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Contact")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Description")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsActiveString")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ProcessingStage")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("SubjectBill")
+ .IsRequired()
+ .HasMaxLength(500)
+ .HasColumnType("nvarchar(500)");
+
+ b.HasKey("id");
+
+ b.ToTable("TextManager_Bill", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.Board.Board", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("BoardChairman")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("BoardType_Id")
+ .HasColumnType("int");
+
+ b.Property("Branch")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("DisputeResolutionPetitionDate")
+ .HasColumnType("datetime2");
+
+ b.Property("ExpertReport")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("File_Id")
+ .HasColumnType("bigint");
+
+ b.HasKey("id");
+
+ b.HasIndex("BoardType_Id");
+
+ b.HasIndex("File_Id");
+
+ b.ToTable("Boards", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.BoardType.BoardType", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("Title")
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Id");
+
+ b.ToTable("BoardTypes", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.ChapterAgg.EntityChapter", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("Chapter")
+ .IsRequired()
+ .HasMaxLength(60)
+ .HasColumnType("nvarchar(60)");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("IsActiveString")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Subtitle_Id")
+ .HasColumnType("bigint");
+
+ b.HasKey("id");
+
+ b.HasIndex("Subtitle_Id");
+
+ b.ToTable("TextManager_Chapter", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.CheckoutAgg.Checkout", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("AbsenceDeduction")
+ .HasColumnType("float");
+
+ b.Property("AbsencePeriod")
+ .HasColumnType("float");
+
+ b.Property("AbsenceValue")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("ArchiveCode")
+ .HasMaxLength(15)
+ .HasColumnType("nvarchar(15)");
+
+ b.Property("AverageHoursPerDay")
+ .HasColumnType("float");
+
+ b.Property("BaseYearsPay")
+ .HasColumnType("float");
+
+ b.Property("BonusesPay")
+ .HasColumnType("float");
+
+ b.Property("ConsumableItems")
+ .HasColumnType("float");
+
+ b.Property("ContractEnd")
+ .HasColumnType("datetime2");
+
+ b.Property("ContractId")
+ .HasColumnType("bigint");
+
+ b.Property("ContractNo")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("ContractStart")
+ .HasColumnType("datetime2");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("CreditLeaves")
+ .HasColumnType("float");
+
+ b.Property("DateOfBirth")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("EmployeeFullName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("EmployeeId")
+ .HasColumnType("bigint");
+
+ b.Property("FamilyAllowance")
+ .HasColumnType("float");
+
+ b.Property("FathersName")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)");
+
+ b.Property("FridayPay")
+ .HasColumnType("float");
+
+ b.Property("FridayWorkValue")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("HasAmountConflict")
+ .HasColumnType("bit");
+
+ b.Property("HasRollCall")
+ .HasColumnType("bit");
+
+ b.Property("HousingAllowance")
+ .HasColumnType("float");
+
+ b.Property("InstallmentDeduction")
+ .HasColumnType("float");
+
+ b.Property("InsuranceDeduction")
+ .HasColumnType("float");
+
+ b.Property("IsActiveString")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("LeaveCheckout")
+ .HasColumnType("bit");
+
+ b.Property("LeavePay")
+ .HasColumnType("float");
+
+ b.Property("MarriedAllowance")
+ .HasColumnType("float");
+
+ b.Property("MissionPay")
+ .HasColumnType("float");
+
+ b.Property("Month")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("MonthlySalary")
+ .HasColumnType("float");
+
+ b.Property("NationalCode")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("NightworkPay")
+ .HasColumnType("float");
+
+ b.Property("OverNightWorkValue")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("OverTimeWorkValue")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("OvertimePay")
+ .HasColumnType("float");
+
+ b.Property("PersonnelCode")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("RewardPay")
+ .HasColumnType("float");
+
+ b.Property("RotatingShiftValue")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("SalaryAidDeduction")
+ .HasColumnType("float");
+
+ b.Property("ShiftPay")
+ .HasColumnType("float");
+
+ b.Property("Signature")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)");
+
+ b.Property("SumOfWorkingDays")
+ .HasMaxLength(6)
+ .HasColumnType("nvarchar(6)");
+
+ b.Property("TaxDeducation")
+ .HasColumnType("float");
+
+ b.Property("TotalClaims")
+ .HasMaxLength(25)
+ .HasColumnType("nvarchar(25)");
+
+ b.Property("TotalDayOfBunosesCompute")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("TotalDayOfLeaveCompute")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("TotalDayOfYearsCompute")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("TotalDeductions")
+ .HasMaxLength(25)
+ .HasColumnType("nvarchar(25)");
+
+ b.Property("TotalPayment")
+ .HasColumnType("float");
+
+ b.Property("WorkingHoursId")
+ .HasColumnType("bigint");
+
+ b.Property("WorkshopId")
+ .HasColumnType("bigint");
+
+ b.Property("WorkshopName")
+ .HasMaxLength(70)
+ .HasColumnType("nvarchar(70)");
+
+ b.Property("Year")
+ .HasMaxLength(4)
+ .HasColumnType("nvarchar(4)");
+
+ b.Property("YearsPay")
+ .HasColumnType("float");
+
+ b.HasKey("id");
+
+ b.HasIndex("WorkshopId");
+
+ b.ToTable("Checkouts", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.ClassifiedSalaryAgg.ClassifiedSalary", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("EndDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Group1")
+ .HasColumnType("float");
+
+ b.Property("Group10")
+ .HasColumnType("float");
+
+ b.Property("Group11")
+ .HasColumnType("float");
+
+ b.Property("Group12")
+ .HasColumnType("float");
+
+ b.Property("Group13")
+ .HasColumnType("float");
+
+ b.Property("Group14")
+ .HasColumnType("float");
+
+ b.Property("Group15")
+ .HasColumnType("float");
+
+ b.Property("Group16")
+ .HasColumnType("float");
+
+ b.Property("Group17")
+ .HasColumnType("float");
+
+ b.Property("Group18")
+ .HasColumnType("float");
+
+ b.Property("Group19")
+ .HasColumnType("float");
+
+ b.Property("Group2")
+ .HasColumnType("float");
+
+ b.Property("Group20")
+ .HasColumnType("float");
+
+ b.Property("Group3")
+ .HasColumnType("float");
+
+ b.Property("Group4")
+ .HasColumnType("float");
+
+ b.Property("Group5")
+ .HasColumnType("float");
+
+ b.Property("Group6")
+ .HasColumnType("float");
+
+ b.Property("Group7")
+ .HasColumnType("float");
+
+ b.Property("Group8")
+ .HasColumnType("float");
+
+ b.Property("Group9")
+ .HasColumnType("float");
+
+ b.Property("StartDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Year")
+ .HasColumnType("int");
+
+ b.HasKey("id");
+
+ b.ToTable("ClassifiedSalaries", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.ClientEmployeeWorkshopAgg.ClientEmployeeWorkshop", b =>
+ {
+ b.Property("WorkshopId")
+ .HasColumnType("bigint");
+
+ b.Property("EmployeeId")
+ .HasColumnType("bigint");
+
+ b.HasKey("WorkshopId", "EmployeeId");
+
+ b.HasIndex("EmployeeId");
+
+ b.ToTable("ClientWorkshopEmployee", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.Contact2Agg.EntityContact", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("IsActiveString")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("NameContact")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Signature")
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("id");
+
+ b.ToTable("TextManager_Contact", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.ContactUsAgg.ContactUs", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Email")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("FirstName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)");
+
+ b.Property("FullName")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("LastName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)");
+
+ b.Property("Message")
+ .HasMaxLength(500)
+ .HasColumnType("nvarchar(500)");
+
+ b.Property("PhoneNumber")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)");
+
+ b.Property("Title")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.HasKey("id");
+
+ b.ToTable("ContactUs");
+ });
+
+ modelBuilder.Entity("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("Address")
+ .HasMaxLength(500)
+ .HasColumnType("nvarchar(500)");
+
+ b.Property("AgentPhone")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("ArchiveCode")
+ .HasColumnType("int");
+
+ b.Property("BlockTimes")
+ .HasColumnType("int");
+
+ b.Property("City")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("DateOfBirth")
+ .HasColumnType("datetime2");
+
+ b.Property("FName")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("FatherName")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)");
+
+ b.Property("Gender")
+ .IsRequired()
+ .HasMaxLength(6)
+ .HasColumnType("nvarchar(6)");
+
+ b.Property("IdNumber")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)");
+
+ b.Property("IdNumberSeri")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)");
+
+ b.Property("IdNumberSerial")
+ .HasMaxLength(15)
+ .HasColumnType("nvarchar(15)");
+
+ b.Property("IsActiveString")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)");
+
+ b.Property("IsAuthenticated")
+ .HasColumnType("bit");
+
+ b.Property("IsBlock")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)");
+
+ b.Property("IsLegal")
+ .IsRequired()
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("LName")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("LegalPosition")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("NationalId")
+ .IsRequired()
+ .HasMaxLength(15)
+ .HasColumnType("nvarchar(15)");
+
+ b.Property("Nationalcode")
+ .IsRequired()
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("Phone")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("RegisterId")
+ .IsRequired()
+ .HasMaxLength(15)
+ .HasColumnType("nvarchar(15)");
+
+ b.Property("RepresentativeFullName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("RepresentativeId")
+ .HasColumnType("bigint");
+
+ b.Property("State")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("SureName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("Zone")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.HasKey("id");
+
+ b.HasIndex("RepresentativeId");
+
+ b.ToTable("PersonalContractingParties", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.ContractAgg.Contract", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("AgreementSalary")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("ArchiveCode")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)");
+
+ b.Property("ConsumableItems")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("ContarctStart")
+ .HasColumnType("datetime2");
+
+ b.Property("ContractEnd")
+ .HasColumnType("datetime2");
+
+ b.Property("ContractNo")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)");
+
+ b.Property("ContractPeriod")
+ .HasMaxLength(2)
+ .HasColumnType("nvarchar(2)");
+
+ b.Property("ContractType")
+ .IsRequired()
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("DayliWage")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("EmployeeId")
+ .HasColumnType("bigint");
+
+ b.Property("EmployerId")
+ .HasColumnType("bigint");
+
+ b.Property("FamilyAllowance")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)");
+
+ b.Property("GetWorkDate")
+ .HasColumnType("datetime2");
+
+ b.Property("HousingAllowance")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("IsActiveString")
+ .IsRequired()
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("JobType")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)");
+
+ b.Property("JobTypeId")
+ .HasColumnType("bigint");
+
+ b.Property("MandatoryHoursid")
+ .HasColumnType("bigint");
+
+ b.Property("PersonnelCode")
+ .HasColumnType("bigint");
+
+ b.Property("SetContractDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Signature")
+ .HasMaxLength(1)
+ .HasColumnType("nvarchar(1)");
+
+ b.Property("WorkingHoursWeekly")
+ .IsRequired()
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("WorkshopAddress1")
+ .HasMaxLength(500)
+ .HasColumnType("nvarchar(500)");
+
+ b.Property("WorkshopAddress2")
+ .HasMaxLength(500)
+ .HasColumnType("nvarchar(500)");
+
+ b.Property("WorkshopIds")
+ .HasColumnType("bigint");
+
+ b.Property("YearlySalaryId")
+ .HasColumnType("bigint");
+
+ b.HasKey("id");
+
+ b.HasIndex("EmployeeId");
+
+ b.HasIndex("EmployerId");
+
+ b.HasIndex("JobTypeId");
+
+ b.HasIndex("MandatoryHoursid");
+
+ b.HasIndex("WorkshopIds");
+
+ b.HasIndex("YearlySalaryId");
+
+ b.ToTable("Contracts", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.ContractingPartyAccountAgg.ContractingPartyAccount", b =>
+ {
+ b.Property("PersonalContractingPartyId")
+ .HasColumnType("bigint");
+
+ b.Property("AccountId")
+ .HasColumnType("bigint");
+
+ b.HasKey("PersonalContractingPartyId", "AccountId");
+
+ b.ToTable("ContractingPartyAccount", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.ContractingPartyBankAccountsAgg.ContractingPartyBankAccount", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("AccountHolderName")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("AccountNumber")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("CardNumber")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("ContractingPartyId")
+ .HasColumnType("bigint");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("IBan")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("IsAuth")
+ .HasColumnType("bit");
+
+ b.HasKey("id");
+
+ b.HasIndex("ContractingPartyId");
+
+ b.ToTable("ContractingPartyBankAccounts", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.CrossJobAgg.CrossJob", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("CrossJobGuildId")
+ .HasColumnType("bigint");
+
+ b.Property("EquivalentRialOver")
+ .HasColumnType("bigint");
+
+ b.Property("EquivalentRialUnder")
+ .HasColumnType("bigint");
+
+ b.Property("SalaryRatioOver")
+ .HasColumnType("float");
+
+ b.Property("SalaryRatioUnder")
+ .HasColumnType("float");
+
+ b.HasKey("id");
+
+ b.HasIndex("CrossJobGuildId");
+
+ b.ToTable("CrossJobs", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.CrossJobGuildAgg.CrossJobGuild", b =>
+ {
+ b.Property