diff --git a/0_Framework/Application/Sms/SmsService.cs b/0_Framework/Application/Sms/SmsService.cs
index 68207ff0..0de394f7 100644
--- a/0_Framework/Application/Sms/SmsService.cs
+++ b/0_Framework/Application/Sms/SmsService.cs
@@ -204,8 +204,7 @@ public class SmsService : ISmsService
int pageSize = 100; // max: 100
SmsIr smsIr = new SmsIr("Og5M562igmzJRhQPnq0GdtieYdLgtfikjzxOmeQBPxJjZtyge5Klc046Lfw1mxSa");
var response = await smsIr.GetArchivedReportAsync(pageNumber, pageSize, unixTimestamp, unixTimestamp2);
-
-
+
MessageReportResult[] messages = response.Data;
foreach (var message in messages)
{
diff --git a/0_Framework/Application/Tools.cs b/0_Framework/Application/Tools.cs
index 98f58bb9..23afe3cb 100644
--- a/0_Framework/Application/Tools.cs
+++ b/0_Framework/Application/Tools.cs
@@ -1512,6 +1512,14 @@ public static class Tools
#region Mahan
+ public static bool IsvalidIban(this string iban)
+ {
+ return Regex.IsMatch(iban, @"^IR[0-9]{24}$");
+ }
+ public static bool IsValidCardNumber(this string cardNumber)
+ {
+ return Regex.IsMatch(cardNumber, @"^[0-9]{16}$");
+ }
///
/// این متد حروف عربی را به فارسی در میاورد. مثال: علي را به علی تبدیل میکند
///
diff --git a/0_Framework/Application/UID/IUidService.cs b/0_Framework/Application/UID/IUidService.cs
index c2c26bd5..a3350dfa 100644
--- a/0_Framework/Application/UID/IUidService.cs
+++ b/0_Framework/Application/UID/IUidService.cs
@@ -110,6 +110,53 @@ public interface IUidService
{
Task GetPersonalInfo(string nationalCode , string birthDate);
Task IsMachPhoneWithNationalCode(string nationalCode , string phoneNumber);
+ Task IbanInquiry (string iban);
+ Task AccountToIban(string accountNumber, UidBanks bank);
+ Task CardToIban(string cardNumber);
+}
+
+public class CardToNumberResponse:UidBaseResponse
+{
+ public string Iban { get; set; }
+ public string CardNumber { get; set; }
+}
+
+public class AccountToIbanResponse:UidBaseResponse
+{
+ public string Iban { get; set; }
+}
+
+public class IbanInquiryResponse:UidBaseResponse
+{
+ public IbanInquiryAccountBasicInformation AccountBasicInformation { get; set; }
+ [JsonProperty("owners")]
+ public List Owners { get; set; }
+}
+
+public class IbanInquiryAccountBasicInformation
+{
+ public string Iban { get; set; }
+ public string AccountNumber { get; set; }
+ public IbanInquiryBankInformation BankInformation { get; set; }
+ public string AccountStatus { get; set; }
+
+}
+
+public class IbanInquiryBankInformation
+{
+ public string BankName { get; set; }
+}
+
+public class IbanInquiryOwner
+{
+ [JsonProperty("firstName")]
+ public string FirstName { get; set; }
+ [JsonProperty("lastName")]
+ public string LastName { get; set; }
+ [JsonProperty("nationalIdentifier")]
+ public string NationalIdentifier { get; set; }
+ [JsonProperty("customerType")]
+ public string CustomerType { get; set; }
}
public class MatchMobileWithNationalCodeResponse
@@ -118,4 +165,7 @@ public class MatchMobileWithNationalCodeResponse
public ResponseContext ResponseContext { get; set; }
}
-
+public class UidBaseResponse
+{
+ public ResponseContext ResponseContext { get; set; }
+}
diff --git a/0_Framework/Application/UID/UidBanks.cs b/0_Framework/Application/UID/UidBanks.cs
new file mode 100644
index 00000000..16e0c3d4
--- /dev/null
+++ b/0_Framework/Application/UID/UidBanks.cs
@@ -0,0 +1,117 @@
+using System.ComponentModel;
+
+namespace _0_Framework.Application.UID;
+
+public enum UidBanks
+{
+ [Description("بانک دی")]
+ BANK_DEY = 66,
+
+ [Description("بانک سپه")]
+ BANK_SEPAH = 15,
+
+ [Description("بانک شهر")]
+ BANK_SHAHR = 61,
+
+ [Description("بانک ملت")]
+ BANK_MELAT = 12,
+
+ [Description("بانک ملی")]
+ BANK_MELLI = 17,
+
+ [Description("بانک رفاه کارگران")]
+ BANK_REFAH = 13,
+
+ [Description("بانک سینا")]
+ BANK_SINA = 59,
+
+ [Description("بانک مسکن")]
+ BANK_MASKAN = 14,
+
+ [Description("بانک آینده")]
+ BANK_AYANDEH = 62,
+
+ [Description("بانک انصار")]
+ BANK_ANSAR = 63,
+
+ [Description("بانک تجارت")]
+ BANK_TEJARAT = 18,
+
+ [Description("بانک رسالت")]
+ BANK_RESALAT = 70,
+
+ [Description("بانک سامان")]
+ BANK_SAMAN = 56,
+
+ [Description("بانک مرکزی")]
+ BANK_MARKAZI = 10,
+
+ [Description("بانک سرمایه")]
+ BANK_SARMAYEH = 58,
+
+ [Description("بانک صادرات")]
+ BANK_SADERAT = 19,
+
+ [Description("بانک قوامین")]
+ BANK_GHAVAMIN = 52,
+
+ [Description("بانک پارسیان")]
+ BANK_PARSIAN = 54,
+
+ [Description("بانک کشاورزی")]
+ BANK_KESHAVARZI = 16,
+
+ [Description("بانک گردشگری")]
+ BANK_GARDESHGARI = 64,
+
+ [Description("پست بانک")]
+ BANK_POST_BANK = 21,
+
+ [Description("بانک پاسارگاد")]
+ BANK_PASARGAD = 57,
+
+ [Description("بانک کارآفرین")]
+ BANK_KARAFARIN = 53,
+
+ [Description("بانک خاورمیانه")]
+ BANK_KHAVARMIANEH = 78,
+
+ [Description("بانک ایران زمین")]
+ BANK_IRAN_ZAMIN = 69,
+
+ [Description("بانک مهر اقتصاد")]
+ BANK_MEHR_EQTESAD = 79,
+
+ [Description("بانک صنعت و معدن")]
+ BANK_SANAT_MADAN = 11,
+
+ [Description("بانک اقتصاد نوین")]
+ BANK_EGHTESAD_NOVIN = 55,
+
+ [Description("بانک توسعه تعاون")]
+ BANK_TOSSE_TAAVON = 22,
+
+ [Description("بانک توسعه صادرات")]
+ BANK_TOSSE_SADERAT = 20,
+
+ [Description("بانک ایران و ونزوئلا")]
+ BANK_IRAN_VENEZUELA = 95,
+
+ [Description("بانک حکمت ایرانیان")]
+ BANK_HEKMAT_IRANIAN = 65,
+
+ [Description("بانک قرض الحسنه مهر")]
+ BANK_GHARZOLHASANEH_MEHR = 60,
+
+ [Description("موسسه مالی و اعتباری ملل")]
+ BANK_MOASSASE_MELLAL = 75,
+
+ [Description("موسسه مالی و اعتباری نور")]
+ BANK_MOASSASE_NOOR = 80,
+
+ [Description("موسسه مالی و اعتباری کوثر")]
+ BANK_MOASSASE_KOSAR = 73,
+
+ [Description("موسسه مالی و اعتباری توسعه")]
+ BANK_MOASSASE_TOSSE = 51
+}
\ No newline at end of file
diff --git a/0_Framework/Application/UID/UidBanksExtension.cs b/0_Framework/Application/UID/UidBanksExtension.cs
new file mode 100644
index 00000000..98a46f16
--- /dev/null
+++ b/0_Framework/Application/UID/UidBanksExtension.cs
@@ -0,0 +1,27 @@
+using System;
+using System.ComponentModel;
+using System.Reflection;
+
+namespace _0_Framework.Application.UID
+{
+ public static class UidBanksExtension
+ {
+ ///
+ /// دریافت نام فارسی بانک
+ ///
+ /// بانک
+ /// نام فارسی بانک
+ public static string GetPersianName(this UidBanks bank)
+ {
+ var fieldInfo = bank.GetType().GetField(bank.ToString());
+
+ if (fieldInfo == null)
+ return string.Empty;
+
+ var attribute = (DescriptionAttribute)Attribute.GetCustomAttribute(
+ fieldInfo, typeof(DescriptionAttribute));
+
+ return attribute?.Description ?? bank.ToString();
+ }
+ }
+}
diff --git a/Company.Domain/AuthorizedBankDetailsAgg/AuthorizedBankDetails.cs b/Company.Domain/AuthorizedBankDetailsAgg/AuthorizedBankDetails.cs
new file mode 100644
index 00000000..198c1a44
--- /dev/null
+++ b/Company.Domain/AuthorizedBankDetailsAgg/AuthorizedBankDetails.cs
@@ -0,0 +1,46 @@
+using System.Collections.Generic;
+using _0_Framework_b.Domain;
+
+namespace Company.Domain.AuthorizedBankDetailsAgg
+{
+ public class AuthorizedBankDetails : EntityBase
+ {
+ private AuthorizedBankDetails()
+ {
+ OwnersList = new List();
+ }
+
+ public AuthorizedBankDetails(string cardNumber, string accountNumber, string ban, string bankName, List ownersList)
+ {
+ CardNumber = cardNumber;
+ AccountNumber = accountNumber;
+ IBan = ban;
+ BankName = bankName;
+ OwnersList = ownersList ?? new List();
+ }
+
+ public string CardNumber { get; private set; }
+ public string AccountNumber { get; private set; }
+ public string IBan { get; private set; }
+ public string BankName { get; private set; }
+ public List OwnersList { get; private set; }
+ }
+
+ public class AuthorizedBankDetailsOwner // Value Object - not inheriting from EntityBase
+ {
+ private AuthorizedBankDetailsOwner() { }
+
+ public AuthorizedBankDetailsOwner(string fName, string lName, string nationalIdentifier, string customerType)
+ {
+ FName = fName;
+ LName = lName;
+ NationalIdentifier = nationalIdentifier;
+ CustomerType = customerType;
+ }
+
+ public string FName { get; private set; }
+ public string LName { get; private set; }
+ public string NationalIdentifier { get; private set; }
+ public string CustomerType { get; private set; }
+ }
+}
\ No newline at end of file
diff --git a/Company.Domain/AuthorizedBankDetailsAgg/IAuthorizedBankDetailsRepository.cs b/Company.Domain/AuthorizedBankDetailsAgg/IAuthorizedBankDetailsRepository.cs
new file mode 100644
index 00000000..7b514ff5
--- /dev/null
+++ b/Company.Domain/AuthorizedBankDetailsAgg/IAuthorizedBankDetailsRepository.cs
@@ -0,0 +1,13 @@
+using _0_Framework_b.Domain;
+using System.Collections.Generic;
+using Company.Application.Contracts.AuthorizedBankDetails;
+
+namespace Company.Domain.AuthorizedBankDetailsAgg
+{
+ public interface IAuthorizedBankDetailsRepository : IRepository
+ {
+ EditAuthorizedBankDetails GetDetails(long id);
+ List Search(AuthorizedBankDetailsSearchModel searchModel);
+ AuthorizedBankDetailsViewModel GetByIban(string iban);
+ }
+}
diff --git a/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs b/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs
index e4970d7b..926656a4 100644
--- a/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs
+++ b/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs
@@ -74,4 +74,5 @@ public interface IInstitutionContractRepository : IRepository> GetInstitutionContractSelectList(string search, string selected);
}
\ No newline at end of file
diff --git a/Company.Domain/InstitutionContractAgg/InstitutionContract.cs b/Company.Domain/InstitutionContractAgg/InstitutionContract.cs
index f0770dab..80821379 100644
--- a/Company.Domain/InstitutionContractAgg/InstitutionContract.cs
+++ b/Company.Domain/InstitutionContractAgg/InstitutionContract.cs
@@ -6,6 +6,7 @@ using System.Security.Cryptography;
using _0_Framework.Domain;
using Company.Domain.InstitutionContractContactInfoAgg;
using CompanyManagment.App.Contracts.InstitutionContract;
+using OfficeOpenXml.Table.PivotTable;
namespace Company.Domain.InstitutionContractAgg;
@@ -253,12 +254,11 @@ public class InstitutionContract : EntityBase
public class InstitutionContractAmendment : EntityBase
{
private InstitutionContractAmendment(){}
- public InstitutionContractAmendment(long institutionContractId, InstitutionContract institutionContract,
+ public InstitutionContractAmendment(long institutionContractId,
List installments, double amount, bool hasInstallment,
InstitutionContractAmendmentChange amendmentChange, long lawId)
{
InstitutionContractId = institutionContractId;
- InstitutionContract = institutionContract;
Installments = installments is { Count: > 0} ? installments : [];
Amount = amount;
HasInstallment = hasInstallment;
diff --git a/Company.Domain/WorkshopAgg/IWorkshopRepository.cs b/Company.Domain/WorkshopAgg/IWorkshopRepository.cs
index 01d6adea..6d5f56ea 100644
--- a/Company.Domain/WorkshopAgg/IWorkshopRepository.cs
+++ b/Company.Domain/WorkshopAgg/IWorkshopRepository.cs
@@ -70,6 +70,7 @@ public interface IWorkshopRepository : IRepository
Task> GetWorkshopsForLeftWorkTemp(long accountId);
Task GetWorkshopsForLeftWorkTempCount(long accountId);
Task> GetSelectList(string search, long id);
+ int GetLastArchiveCode();
#endregion
diff --git a/Company.Domain/empolyerAgg/Employer.cs b/Company.Domain/empolyerAgg/Employer.cs
index 09837e79..0722e73f 100644
--- a/Company.Domain/empolyerAgg/Employer.cs
+++ b/Company.Domain/empolyerAgg/Employer.cs
@@ -1,5 +1,7 @@
using System;
using System.Collections.Generic;
+using System.Security.AccessControl;
+using _0_Framework.Application;
using _0_Framework.Domain;
using Company.Domain.ContarctingPartyAgg;
using Company.Domain.ContractAgg;
@@ -66,6 +68,11 @@ public class Employer : EntityBase
public string SanaPassword { get; private set; }
public string EmployerNo { get; set; }
+ public bool IsAuth { get; set; }
+ public string IdNumberSerial { get; set; }
+
+ public string IdNumberSeri { get; set; }
+
public PersonalContractingParty ContractingParty { get; set; }
//public List Workshops { get; private set; }
@@ -227,4 +234,35 @@ public class Employer : EntityBase
this.IsActive = false;
this.Address = "false";
}
+
+ public void Authentication(string fName, string lName, string fatherName,string idNumber,
+ string idNumberSeri, string idNumberSerial, string dateOfBirth, Gender gender,string phone)
+ {
+ this.FName = fName;
+ this.LName = lName;
+ this.FatherName = fatherName;
+ this.IdNumberSeri = idNumberSeri;
+ this.IdNumberSerial = idNumberSerial;
+ this.DateOfBirth = !string.IsNullOrWhiteSpace(dateOfBirth) ? dateOfBirth.ToGeorgianDateTime() : new();
+ this.IdNumber = idNumber;
+ this.Gender = gender == _0_Framework.Application.Gender.Male? "مرد" : "زن";
+ this.IsAuth = true;
+ Phone = phone;
+ }
+
+
+ public void LegalAuthentication(string fName, string lName, string fatherName,string idNumber, string idNumberSeri,
+ string idNumberSerial, string dateOfBirth, Gender gender,string phone)
+ {
+ FName = fName;
+ EmployerLName = lName;
+ this.FatherName = fatherName;
+ this.IdNumberSeri = idNumberSeri;
+ this.IdNumberSerial = idNumberSerial;
+ this.DateOfBirth = !string.IsNullOrWhiteSpace(dateOfBirth) ? dateOfBirth.ToGeorgianDateTime() : new();
+ this.IdNumber = idNumber;
+ this.Gender =gender == _0_Framework.Application.Gender.Male? "مرد" : "زن";
+ this.IsAuth = true;
+ Phone = phone;
+ }
}
\ No newline at end of file
diff --git a/Company.Domain/empolyerAgg/IEmployerRepository.cs b/Company.Domain/empolyerAgg/IEmployerRepository.cs
index e3f1c7a1..94489f36 100644
--- a/Company.Domain/empolyerAgg/IEmployerRepository.cs
+++ b/Company.Domain/empolyerAgg/IEmployerRepository.cs
@@ -1,9 +1,11 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using _0_Framework.Application;
+using _0_Framework.Application.Enums;
using _0_Framework.Domain;
using CompanyManagment.App.Contracts.Checkout;
using CompanyManagment.App.Contracts.Employer;
+using Microsoft.AspNetCore.Mvc;
namespace Company.Domain.empolyerAgg;
@@ -34,7 +36,7 @@ public interface IEmployerRepository : IRepository
List GetEmployersHasWorkshop();
- Task> GetSelectList(string search,long id);
+ Task> GetSelectList(string search, long id, LegalType? legalType);
#endregion
@@ -68,5 +70,5 @@ public interface IEmployerRepository : IRepository
#endregion
-
+ Task> GetWorkflowRegistrationForEdit(long employerId, long institutionWorkshopDetailsId);
}
\ No newline at end of file
diff --git a/CompanyManagement.Infrastructure.Excel/RollCall/CaseHistoryRollCallExcelViewModel.cs b/CompanyManagement.Infrastructure.Excel/RollCall/CaseHistoryRollCallExcelViewModel.cs
index 68144324..ca7dcfac 100644
--- a/CompanyManagement.Infrastructure.Excel/RollCall/CaseHistoryRollCallExcelViewModel.cs
+++ b/CompanyManagement.Infrastructure.Excel/RollCall/CaseHistoryRollCallExcelViewModel.cs
@@ -12,9 +12,7 @@ public class CaseHistoryRollCallExcelForEmployeeViewModel
public string EmployeeFullName { get; set; }
public string TotalWorkingHoursFa { get; set; }
public string TotalWorkingTimeSpan { get; set; }
-
-
-
+
public List RollCalls { get; set; }
}
@@ -40,7 +38,8 @@ public class RollCallItemForEmployeeExcelViewModel
public bool HasLeave { get; set; }
public string TotalWorkingHours { get; set; }
-
+ public string EnterTimeDifferences { get; set; }
+ public string ExitTimeDifferences { get; set; }
}
public class RollCallTimeExcelViewModel
diff --git a/CompanyManagement.Infrastructure.Excel/RollCall/RollCallExcelGenerator.cs b/CompanyManagement.Infrastructure.Excel/RollCall/RollCallExcelGenerator.cs
index 4d10e241..b7455351 100644
--- a/CompanyManagement.Infrastructure.Excel/RollCall/RollCallExcelGenerator.cs
+++ b/CompanyManagement.Infrastructure.Excel/RollCall/RollCallExcelGenerator.cs
@@ -113,11 +113,12 @@ public class RollCallExcelGenerator : ExcelGenerator
worksheet.Cells[i + row + 1, 1].Value = i + 1;
worksheet.Cells[i + row + 1, 2].Value = rollCall.DayOfWeekFa;
worksheet.Cells[i + row + 1, 3].Value = rollCall.DateFa;
- worksheet.Cells[i + row + 1, 4].Value = "-";
+ worksheet.Cells[i + row + 1, 4].Value = rollCall.EnterTimeDifferences;
worksheet.Cells[i + row + 1, 5].Value = rollCall.StartsItems;
worksheet.Cells[i + row + 1, 6].Value = rollCall.EndsItems;
- worksheet.Cells[i + row + 1, 7].Value = "-";
- worksheet.Cells[i + row + 1, 8].Value = rollCall.TotalWorkingHours == string.Empty ? "ندارد" : rollCall.TotalWorkingHours;
+ worksheet.Cells[i + row + 1, 7].Value = rollCall.ExitTimeDifferences;
+ worksheet.Cells[i + row + 1, 8].Value = rollCall.TotalWorkingHours == string.Empty
+ ? "ندارد" : rollCall.TotalWorkingHours;
// Style data cells
for (int j = 1; j <= 8; j++)
@@ -307,6 +308,49 @@ public class RollCallExcelGenerator : ExcelGenerator
return package.GetAsByteArray();
}
+ private string CalculateExitMinuteDifference(TimeSpan early, TimeSpan late)
+ {
+ if (early == TimeSpan.Zero && late == TimeSpan.Zero)
+ {
+ return "-";
+ }
+ else if (late != TimeSpan.Zero)
+ {
+ var minutes = late.TotalMinutes > 999 ? "999" : late.TotalMinutes.ToString();
+ return $"{minutes}+";
+ }
+ else if (early != TimeSpan.Zero)
+ {
+ var minutes = early.TotalMinutes > 999 ? "999" : early.TotalMinutes.ToString();
+ return $"{minutes}-";
+ }
+ else
+ {
+ return $"";
+ }
+ }
+
+ private string CalculateEntryMinuteDifference(TimeSpan early, TimeSpan late)
+ {
+ if (early == TimeSpan.Zero && late == TimeSpan.Zero)
+ {
+ return "-";
+ }
+ else if (late != TimeSpan.Zero)
+ {
+ var minutes = late.TotalMinutes > 999 ? "999" : late.TotalMinutes.ToString();
+ return $"{minutes}-";
+ }
+ else if (early != TimeSpan.Zero)
+ {
+ var minutes = early.TotalMinutes > 999 ? "999" : early.TotalMinutes.ToString();
+ return $"{minutes}+";
+ }
+ else
+ {
+ return $"";
+ }
+ }
}
diff --git a/CompanyManagment.App.Contracts/AuthorizedBankDetails/AuthorizedBankDetailsSearchModel.cs b/CompanyManagment.App.Contracts/AuthorizedBankDetails/AuthorizedBankDetailsSearchModel.cs
new file mode 100644
index 00000000..3f47b0be
--- /dev/null
+++ b/CompanyManagment.App.Contracts/AuthorizedBankDetails/AuthorizedBankDetailsSearchModel.cs
@@ -0,0 +1,12 @@
+namespace Company.Application.Contracts.AuthorizedBankDetails
+{
+ public class AuthorizedBankDetailsSearchModel
+ {
+ public string CardNumber { get; set; }
+ public string AccountNumber { get; set; }
+ public string IBan { get; set; }
+ public string BankName { get; set; }
+ public string NationalIdentifier { get; set; }
+ }
+}
+
diff --git a/CompanyManagment.App.Contracts/AuthorizedBankDetails/AuthorizedBankDetailsViewModel.cs b/CompanyManagment.App.Contracts/AuthorizedBankDetails/AuthorizedBankDetailsViewModel.cs
new file mode 100644
index 00000000..3987e925
--- /dev/null
+++ b/CompanyManagment.App.Contracts/AuthorizedBankDetails/AuthorizedBankDetailsViewModel.cs
@@ -0,0 +1,18 @@
+using System;
+using System;
+
+using System.Collections.Generic;
+namespace Company.Application.Contracts.AuthorizedBankDetails;
+
+public class AuthorizedBankDetailsViewModel
+{
+ public string NationalIdentifier { get; set; }
+
+ public long Id { get; set; }
+ public string CustomerType { get; set; }
+ public string CardNumber { get; set; }
+ public string AccountNumber { get; set; }
+ public string IBan { get; set; }
+ public string BankName { get; set; }
+ public List Owners { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/AuthorizedBankDetails/CreateAuthorizedBankDetails.cs b/CompanyManagment.App.Contracts/AuthorizedBankDetails/CreateAuthorizedBankDetails.cs
new file mode 100644
index 00000000..5e299e34
--- /dev/null
+++ b/CompanyManagment.App.Contracts/AuthorizedBankDetails/CreateAuthorizedBankDetails.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+
+namespace Company.Application.Contracts.AuthorizedBankDetails
+{
+ public class CreateAuthorizedBankDetails
+ {
+ public string CardNumber { get; set; }
+
+ public string AccountNumber { get; set; }
+
+ public string IBan { get; set; }
+
+ public string BankName { get; set; }
+
+ public List OwnersList { get; set; }
+ }
+
+ public class CreateAuthorizedBankDetailsOwner
+ {
+ public string FName { get; set; }
+
+ public string LName { get; set; }
+
+ public string NationalIdentifier { get; set; }
+
+ public string CustomerType { get; set; }
+ }
+}
diff --git a/CompanyManagment.App.Contracts/AuthorizedBankDetails/EditAuthorizedBankDetails.cs b/CompanyManagment.App.Contracts/AuthorizedBankDetails/EditAuthorizedBankDetails.cs
new file mode 100644
index 00000000..ea28e332
--- /dev/null
+++ b/CompanyManagment.App.Contracts/AuthorizedBankDetails/EditAuthorizedBankDetails.cs
@@ -0,0 +1,28 @@
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+
+namespace Company.Application.Contracts.AuthorizedBankDetails
+{
+ public class EditAuthorizedBankDetails
+ {
+ public long Id { get; set; }
+
+ public string CardNumber { get; set; }
+
+ public string AccountNumber { get; set; }
+
+ public string IBan { get; set; }
+
+ public string BankName { get; set; }
+
+ public List OwnersList { get; set; }
+ }
+
+ public class AuthorizedBankDetailsOwnerViewModel
+ {
+ public string FName { get; set; }
+ public string LName { get; set; }
+ public string NationalIdentifier { get; set; }
+ public string CustomerType { get; set; }
+ }
+}
diff --git a/CompanyManagment.App.Contracts/AuthorizedBankDetails/IAuthorizedBankDetailsApplication.cs b/CompanyManagment.App.Contracts/AuthorizedBankDetails/IAuthorizedBankDetailsApplication.cs
new file mode 100644
index 00000000..90368d4a
--- /dev/null
+++ b/CompanyManagment.App.Contracts/AuthorizedBankDetails/IAuthorizedBankDetailsApplication.cs
@@ -0,0 +1,14 @@
+using System.Collections.Generic;
+using _0_Framework.Application;
+using Company.Application.Contracts.AuthorizedBankDetails;
+
+namespace Company.Application.Contracts.AuthorizedBankDetails
+{
+ public interface IAuthorizedBankDetailsApplication
+ {
+ OperationResult Create(CreateAuthorizedBankDetails command);
+ EditAuthorizedBankDetails GetDetails(long id);
+ List Search(AuthorizedBankDetailsSearchModel searchModel);
+ AuthorizedBankDetailsViewModel GetByIban(string iban);
+ }
+}
diff --git a/CompanyManagment.App.Contracts/ContractingPartyBankAccounts/IContractingPartyBankAccountsApplication.cs b/CompanyManagment.App.Contracts/ContractingPartyBankAccounts/IContractingPartyBankAccountsApplication.cs
index 379f07df..992e9808 100644
--- a/CompanyManagment.App.Contracts/ContractingPartyBankAccounts/IContractingPartyBankAccountsApplication.cs
+++ b/CompanyManagment.App.Contracts/ContractingPartyBankAccounts/IContractingPartyBankAccountsApplication.cs
@@ -1,8 +1,10 @@
using System.Collections.Generic;
using System.Security.AccessControl;
+using System.Security.Cryptography;
using System.Threading.Tasks;
using System.Transactions;
using _0_Framework.Application;
+using _0_Framework.Application.UID;
using CompanyManagment.App.Contracts.OriginalTitle;
namespace CompanyManagment.App.Contracts.ContractingPartyBankAccounts;
@@ -74,5 +76,27 @@ public interface IContractingPartyBankAccountsApplication
/// نام سلکت شده
///
Task> ContractingPartyNamesSelectList(string search, string selected);
+
+ ///
+ /// احراز هویت اطلاعات بانکی طرف حساب
+ ///
+ ///
+ ///
+ Task InquiryContractingPartyBankDetails(InquiryContractingPartyBankDetailsRequest command);
+
+}
+public class InquiryContractingPartyBankDetailsRequest
+{
+ public string CardNumber { get; set; }
+ public string AccountNumber { get; set; }
+ public string IBan { get; set; }
+ public UidBanks? UidBank { get; set; }
+}
+public class ContractingPartyBankInquiryResponse
+{
+ public string FullName { get; set; }
+ public string Iban { get; set; }
+ public string AccountNumber { get; set; }
+ public string CardNumber { get; set; }
}
diff --git a/CompanyManagment.App.Contracts/Employer/IEmployerApplication.cs b/CompanyManagment.App.Contracts/Employer/IEmployerApplication.cs
index 5c148784..0324f953 100644
--- a/CompanyManagment.App.Contracts/Employer/IEmployerApplication.cs
+++ b/CompanyManagment.App.Contracts/Employer/IEmployerApplication.cs
@@ -6,6 +6,7 @@ using _0_Framework.Application;
using _0_Framework.Application.Enums;
using CompanyManagment.App.Contracts.Checkout;
using CompanyManagment.App.Contracts.Employee;
+using Microsoft.AspNetCore.Mvc;
namespace CompanyManagment.App.Contracts.Employer;
@@ -46,8 +47,9 @@ public interface IEmployerApplication
///
///
///
+ ///
///
- Task> GetSelectList(string search, long id);
+ Task> GetSelectList(string search, long id, LegalType? legalType = null);
#endregion
#region NewByHeydari
@@ -145,6 +147,7 @@ public interface IEmployerApplication
Task DeleteWorkflowRegistration(long employerId, long institutionWorkshopDetailsId);
Task> AuthenticateEmployer(string nationalCode, string dateOfBirth, string mobile);
+ Task> GetWorkflowRegistrationForEdit(long employerId, long institutionWorkshopDetailsId);
}
public class AuthenticateUserViewModel
@@ -207,6 +210,11 @@ public class AuthenticateUserViewModel
///
public class CreateEmployerWorkflowRegistration
{
+ ///
+ /// درزمانی که یوزر کارفرمایی رو انتخاب کرد که از قبل ثبت شده است
+ /// این فیلد باید مقدار داشته باشد
+ ///
+ public long EmployerId { get; set; }
///
/// اطلاعات کارفرمای حقیقی
///
@@ -323,7 +331,9 @@ public class CreateLegalEmployerWorkflowRegistration
/// اطلاعات سیستم دولتی
///
public GovernmentSystemInfo GovernmentSystemInfo { get; set; }
-
+
+ public string IdNumberSeri { get; set; }
+ public string IdNumberSerial { get; set; }
}
///
@@ -395,6 +405,9 @@ public class CreateRealEmployerWorkflowRegistration
/// شماره تلفن
///
public string Telephone { get; set; }
+
+ public string IdNumberSeri { get; set; }
+ public string IdNumberSerial { get; set; }
}
///
diff --git a/CompanyManagment.App.Contracts/InstitutionContract/IInstitutionContractApplication.cs b/CompanyManagment.App.Contracts/InstitutionContract/IInstitutionContractApplication.cs
index 6435c525..1d361563 100644
--- a/CompanyManagment.App.Contracts/InstitutionContract/IInstitutionContractApplication.cs
+++ b/CompanyManagment.App.Contracts/InstitutionContract/IInstitutionContractApplication.cs
@@ -26,21 +26,21 @@ public interface IInstitutionContractApplication
/// اطلاعات قرارداد جدید
/// نتیجه عملیات
OperationResult Create(CreateInstitutionContract command);
-
+
///
/// تمدید قرارداد موجود
///
/// اطلاعات قرارداد برای تمدید
/// نتیجه عملیات
OperationResult Extension(CreateInstitutionContract command);
-
+
///
/// ویرایش قرارداد موجود
///
/// اطلاعات جدید قرارداد
/// نتیجه عملیات
OperationResult Edit(EditInstitutionContract command);
-
+
///
/// دریافت جزئیات قرارداد برای ویرایش
///
@@ -54,7 +54,7 @@ public interface IInstitutionContractApplication
/// مدل جستجو
/// لیست قراردادها
List Search(InstitutionContractSearchModel searchModel);
-
+
///
/// جستجوی جدید در قراردادها
///
@@ -76,7 +76,7 @@ public interface IInstitutionContractApplication
/// لیست شناسه قراردادها
/// لیست قراردادها برای چاپ
List PrintAll(List id);
-
+
///
/// چاپ یک قرارداد
///
@@ -144,7 +144,7 @@ public interface IInstitutionContractApplication
/// شناسه قرارداد
/// نتیجه عملیات
OperationResult UnSign(long id);
-
+
///
/// ایجاد حساب کاربری برای طرف قرارداد
///
@@ -189,24 +189,25 @@ public interface IInstitutionContractApplication
///
///
Task EditAsync(EditInstitutionContractRequest command);
-
-
+
+
///
/// دریافت لیست طرف حساب هایی که ثبت نام آنها تکمیل شده
/// جهت نمایش در کارپوشه
///
///
Task> RegistrationWorkflowMainList();
-
///
/// دریافت آیتم های کارپوشه ثبت نام
///
///
///
Task> RegistrationWorkflowItems(long institutionContractId);
+
+
#endregion
-
+
Task GetVerificationDetails(Guid id);
Task> SendVerifyOtp(Guid id);
Task VerifyOtp(Guid publicId, string code);
@@ -226,6 +227,7 @@ public interface IInstitutionContractApplication
InstitutionContractExtensionPaymentRequest request);
Task ExtensionComplete(InstitutionContractExtensionCompleteRequest request);
+ Task> GetInstitutionContractSelectList(string search,string selected);
#endregion
@@ -237,6 +239,8 @@ public interface IInstitutionContractApplication
Task GetAmendmentPaymentDetails(InsitutionContractAmendmentPaymentRequest request);
#endregion
+
+ Task ResendVerifyLink(long institutionContractId);
}
public class InsertAmendmentTempWorkshopResponse
@@ -256,6 +260,8 @@ public class InstitutionContractAmendmentWorkshopsResponse
}
+public class InstitutionContractSelectListViewModel : SelectListViewModel;
+
public class InstitutionContractExtensionInquiryResponse
{
public long Id { get; set; }
@@ -271,4 +277,27 @@ public class InstitutionContractExtensionInquiryResponse
public string State { get; set; }
public long RepresentativeId { get; set; }
public string NationalCode { get; set; }
+}
+
+
+
+public class InstitutionContractExtensionPaymentMonthly:InstitutionContractExtensionPaymentOneTime
+{
+ public List Installments { get; set; }
+}
+
+public class InstitutionContractExtensionPaymentOneTime
+{
+ ///
+ /// مجموع مبالغ
+ ///
+ public string TotalAmount { get; set; }
+ ///
+ /// ارزش افزوده
+ ///
+ public string Tax { get; set; }
+ ///
+ /// مبلغ قابل پرداخت
+ ///
+ public string PaymentAmount { get; set; }
}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/InstitutionContract/InstitutionContractWorkshopDetailViewModel.cs b/CompanyManagment.App.Contracts/InstitutionContract/InstitutionContractWorkshopDetailViewModel.cs
index 4916ac39..067a8221 100644
--- a/CompanyManagment.App.Contracts/InstitutionContract/InstitutionContractWorkshopDetailViewModel.cs
+++ b/CompanyManagment.App.Contracts/InstitutionContract/InstitutionContractWorkshopDetailViewModel.cs
@@ -3,4 +3,6 @@ namespace CompanyManagment.App.Contracts.InstitutionContract;
public class InstitutionContractWorkshopDetailViewModel
{
public WorkshopServicesViewModel ServicesViewModel { get; set; }
+ public string WorkshopName { get; set; }
+ public int ArchiveCode { get; set; }
}
\ No newline at end of file
diff --git a/CompanyManagment.Application/AuthorizedBankDetailsApplication.cs b/CompanyManagment.Application/AuthorizedBankDetailsApplication.cs
new file mode 100644
index 00000000..b3a88421
--- /dev/null
+++ b/CompanyManagment.Application/AuthorizedBankDetailsApplication.cs
@@ -0,0 +1,70 @@
+using System;
+using System.Collections.Generic;
+using _0_Framework.Application;
+using Company.Application.Contracts.AuthorizedBankDetails;
+using Company.Domain.AuthorizedBankDetailsAgg;
+
+namespace CompanyManagment.Application
+{
+ public class AuthorizedBankDetailsApplication : IAuthorizedBankDetailsApplication
+ {
+ private readonly IAuthorizedBankDetailsRepository _authorizedBankDetailsRepository;
+
+ public AuthorizedBankDetailsApplication(IAuthorizedBankDetailsRepository authorizedBankDetailsRepository)
+ {
+ _authorizedBankDetailsRepository = authorizedBankDetailsRepository;
+ }
+
+ public OperationResult Create(CreateAuthorizedBankDetails command)
+ {
+ var operation = new OperationResult();
+
+ if (_authorizedBankDetailsRepository.Exists(x => x.CardNumber == command.CardNumber &&
+ x.AccountNumber == command.AccountNumber &&
+ x.IBan == command.IBan))
+ return operation.Failed(ApplicationMessages.DuplicatedRecord);
+
+ var ownersList = new List();
+ if (command.OwnersList != null && command.OwnersList.Count > 0)
+ {
+ foreach (var owner in command.OwnersList)
+ {
+ var bankDetailsOwner = new AuthorizedBankDetailsOwner(
+ owner.FName,
+ owner.LName,
+ owner.NationalIdentifier,
+ owner.CustomerType
+ );
+ ownersList.Add(bankDetailsOwner);
+ }
+ }
+
+ var authorizedBankDetails = new AuthorizedBankDetails(
+ command.CardNumber,
+ command.AccountNumber,
+ command.IBan,
+ command.BankName,
+ ownersList
+ );
+
+ _authorizedBankDetailsRepository.Create(authorizedBankDetails);
+ _authorizedBankDetailsRepository.SaveChanges();
+ return operation.Succcedded();
+ }
+
+ public EditAuthorizedBankDetails GetDetails(long id)
+ {
+ return _authorizedBankDetailsRepository.GetDetails(id);
+ }
+
+ public List Search(AuthorizedBankDetailsSearchModel searchModel)
+ {
+ return _authorizedBankDetailsRepository.Search(searchModel);
+ }
+
+ public AuthorizedBankDetailsViewModel GetByIban(string iban)
+ {
+ return _authorizedBankDetailsRepository.GetByIban(iban);
+ }
+ }
+}
diff --git a/CompanyManagment.Application/ContractingPartyBankAccountsApplication.cs b/CompanyManagment.Application/ContractingPartyBankAccountsApplication.cs
index e9a81eba..c06e5729 100644
--- a/CompanyManagment.Application/ContractingPartyBankAccountsApplication.cs
+++ b/CompanyManagment.Application/ContractingPartyBankAccountsApplication.cs
@@ -1,6 +1,10 @@
using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
using System.Threading.Tasks;
using _0_Framework.Application;
+using _0_Framework.Application.UID;
+using _0_Framework.Exceptions;
using Company.Domain.ContarctingPartyAgg;
using Company.Domain.ContractingPartyBankAccountsAgg;
using CompanyManagment.App.Contracts.ContractingPartyBankAccounts;
@@ -12,13 +16,15 @@ public class ContractingPartyBankAccountsApplication : IContractingPartyBankAcco
{
private readonly IContractingPartyBankAccountsRepository _contractingPartyBankAccountsRepository;
private readonly IPersonalContractingPartyRepository _personalContractingPartyRepository;
+ private readonly IUidService _uidService;
public ContractingPartyBankAccountsApplication(
IContractingPartyBankAccountsRepository contractingPartyBankAccountsRepository,
- IPersonalContractingPartyRepository personalContractingPartyRepository)
+ IPersonalContractingPartyRepository personalContractingPartyRepository, IUidService uidService)
{
_contractingPartyBankAccountsRepository = contractingPartyBankAccountsRepository;
_personalContractingPartyRepository = personalContractingPartyRepository;
+ _uidService = uidService;
}
public async Task Create(CreateContractingPartyBankAccounts command)
@@ -69,18 +75,19 @@ public class ContractingPartyBankAccountsApplication : IContractingPartyBankAcco
if (string.IsNullOrWhiteSpace(command.IBan))
return operationResult.Failed("شماره شبا خود را وارد کنید");
}
- else if(string.IsNullOrWhiteSpace(command.CardNumber) &&
+ else if (string.IsNullOrWhiteSpace(command.CardNumber) &&
string.IsNullOrWhiteSpace(command.AccountNumber) &&
string.IsNullOrWhiteSpace(command.IBan))
{
- return operationResult.Failed(" حداقل یکی از اطلاعات بانکی را وارد کنید: شماره کارت، شماره حساب یا شماره شبا");
+ return operationResult.Failed(
+ " حداقل یکی از اطلاعات بانکی را وارد کنید: شماره کارت، شماره حساب یا شماره شبا");
}
if (string.IsNullOrWhiteSpace(command.AccountHolderName))
{
return operationResult.Failed("نام صاحب حساب را وارد کنید");
}
-
+
var entity = new ContractingPartyBankAccount(command.ContractingPartyId, command.CardNumber,
command.AccountHolderName, command.AccountNumber, command.IBan, command.IsAuth);
@@ -130,4 +137,83 @@ public class ContractingPartyBankAccountsApplication : IContractingPartyBankAcco
{
return await _contractingPartyBankAccountsRepository.ContractingPartyNamesSelectList(search, selected);
}
+
+ public async Task InquiryContractingPartyBankDetails(
+ InquiryContractingPartyBankDetailsRequest command)
+ {
+ var iBan = command.IBan;
+ var cardNumber = command.CardNumber;
+ var accountNumber = command.AccountNumber;
+ var uidBank = command.UidBank;
+ ContractingPartyBankInquiryResponse result = new ContractingPartyBankInquiryResponse();
+ if (!string.IsNullOrWhiteSpace(iBan))
+ {
+ if (!iBan.IsvalidIban())
+ {
+ throw new BadRequestException("شماره شبا وارد شده معتبر نمی باشد");
+ }
+
+ var response = await _uidService.IbanInquiry(iBan);
+ if (response.ResponseContext.Status.Code != 0)
+ {
+ throw new BadRequestException("خطای احراز هویت. کد خطا: " + response.ResponseContext.Status.Code);
+ }
+
+ var owner = response.Owners.FirstOrDefault();
+ var ownerFirstName = owner != null ? $"{owner.FirstName} {owner.LastName}" : "";
+ result.FullName = ownerFirstName;
+ result.AccountNumber = response.AccountBasicInformation.AccountNumber;
+ result.Iban = response.AccountBasicInformation.Iban;
+ }
+ else if (!string.IsNullOrWhiteSpace(cardNumber))
+ {
+ if (!cardNumber.IsValidCardNumber())
+ {
+ throw new BadRequestException("شماره کارت وارد شده معتبر نمی باشد");
+ }
+
+ var bankCardRes = await _uidService.CardToIban(cardNumber);
+ if (bankCardRes.ResponseContext.Status.Code != 0)
+ {
+ throw new BadRequestException("خطای احراز هویت. کد خطا: " + bankCardRes.ResponseContext.Status.Code);
+ }
+
+ var response = await _uidService.IbanInquiry(bankCardRes.Iban);
+ if (response.ResponseContext.Status.Code != 0)
+ {
+ throw new BadRequestException("خطای احراز هویت. کد خطا: " + response.ResponseContext.Status.Code);
+ }
+
+ var owner = response.Owners.FirstOrDefault();
+ var ownerFirstName = owner != null ? $"{owner.FirstName} {owner.LastName}" : "";
+ result.FullName = ownerFirstName;
+ result.AccountNumber = response.AccountBasicInformation.AccountNumber;
+ result.CardNumber = cardNumber;
+ result.Iban = response.AccountBasicInformation.Iban;
+ }
+ else if (!string.IsNullOrWhiteSpace(accountNumber))
+ {
+ var accountNumberRes = await _uidService.AccountToIban(accountNumber, uidBank.Value);
+ if (accountNumberRes.ResponseContext.Status.Code != 0)
+ {
+ throw new BadRequestException(
+ "خطای احراز هویت. کد خطا: " + accountNumberRes.ResponseContext.Status.Code);
+ }
+
+ var response = await _uidService.IbanInquiry(accountNumberRes.Iban);
+
+ var owner = response.Owners.FirstOrDefault();
+ var ownerFirstName = owner != null ? $"{owner.FirstName} {owner.LastName}" : "";
+ result.FullName = ownerFirstName;
+ result.AccountNumber = response.AccountBasicInformation.AccountNumber;
+ result.Iban = response.AccountBasicInformation.Iban;
+ }
+ else
+ {
+ throw new BadRequestException(
+ "حداقل یکی از اطلاعات بانکی را وارد کنید: شماره کارت، شماره حساب یا شماره شبا");
+ }
+
+ return result;
+ }
}
\ No newline at end of file
diff --git a/CompanyManagment.Application/EmployerApplication.cs b/CompanyManagment.Application/EmployerApplication.cs
index b6edf65c..8e7d6663 100644
--- a/CompanyManagment.Application/EmployerApplication.cs
+++ b/CompanyManagment.Application/EmployerApplication.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Security.AccessControl;
using System.Threading.Tasks;
+using System.Xml;
using _0_Framework.Application;
using _0_Framework.Application.Enums;
using _0_Framework.Application.UID;
@@ -13,6 +14,7 @@ using Company.Domain.WorkshopAgg;
using CompanyManagment.App.Contracts.Checkout;
using CompanyManagment.App.Contracts.Employer;
using CompanyManagment.EFCore.Repository;
+using Microsoft.AspNetCore.Mvc;
using Microsoft.Identity.Client;
namespace CompanyManagment.Application;
@@ -42,7 +44,6 @@ public class EmployerApplication : IEmployerApplication
}
-
public OperationResult Active(long id)
{
var opration = new OperationResult();
@@ -1029,7 +1030,7 @@ public class EmployerApplication : IEmployerApplication
}
#endregion
-
+
#region Api
public async Task> GetEmployerList(GetEmployerSearchModel searchModel)
@@ -1285,9 +1286,10 @@ public class EmployerApplication : IEmployerApplication
return opration.Succcedded();
}
- public async Task> GetSelectList(string search, long id)
+ public async Task> GetSelectList(string search, long id,
+ LegalType? legalType = null)
{
- return await _EmployerRepository.GetSelectList(search, id);
+ return await _EmployerRepository.GetSelectList(search, id, legalType);
}
async Task> IEmployerApplication.Remove(long id)
@@ -1312,19 +1314,36 @@ public class EmployerApplication : IEmployerApplication
{
var operation = new OperationResult();
var tranasction = await _EmployerRepository.BeginTransactionAsync();
- OperationResult createEmployerResult = command.LegalType switch
+ Employer employer;
+ if (command.EmployerId != 0)
{
- LegalType.Real => await CreateRealEmployerRegistration(command.RealEmployer, command.ContractingPartyId),
- LegalType.Legal => await CreateLegalEmployerRegistration(command.LegalEmployer, command.ContractingPartyId),
- _ => throw new ArgumentOutOfRangeException()
- };
- var employer = createEmployerResult.Data;
+ employer = _EmployerRepository.Get(command.EmployerId);
+ if (employer == null)
+ throw new NotFoundException("کارفرمای مورد نظر یافت نشد");
+ }
+ else
+ {
+ OperationResult createEmployerResult = command.LegalType switch
+ {
+ LegalType.Real =>
+ await CreateRealEmployerRegistration(command.RealEmployer, command.ContractingPartyId),
+ LegalType.Legal => await CreateLegalEmployerRegistration(command.LegalEmployer,
+ command.ContractingPartyId),
+ _ => throw new ArgumentOutOfRangeException()
+ };
+ employer = createEmployerResult.Data;
- if (!createEmployerResult.IsSuccedded)
- return operation.Failed(createEmployerResult.Message);
+ if (!createEmployerResult.IsSuccedded)
+ return operation.Failed(createEmployerResult.Message);
+ }
var workshopDetails =
- await _institutionContractRepository.GetInstitutionWorkshopInitialDetails(command.InstitutionWorkshopInitialId);
+ await _institutionContractRepository.GetInstitutionWorkshopInitialDetails(command
+ .InstitutionWorkshopInitialId);
+ if (workshopDetails.Employers.Any(x => x.EmployerId == employer.id))
+ {
+ throw new BadRequestException("این کارفرما قبلا در این کارگاه ثبت شده است");
+ }
workshopDetails.AddEmployer(employer.id);
await _institutionContractRepository.SaveChangesAsync();
@@ -1335,7 +1354,7 @@ public class EmployerApplication : IEmployerApplication
public async Task EditWorkflowRegistration(EditEmployerWorkflowRegistration command)
{
var operation = new OperationResult();
-
+
// Get the existing employer
var employer = _EmployerRepository.Get(command.EmployerId);
if (employer == null)
@@ -1364,55 +1383,55 @@ public class EmployerApplication : IEmployerApplication
public async Task DeleteWorkflowRegistration(long employerId, long institutionWorkshopDetailsId)
{
var operation = new OperationResult();
-
+
// Check if employer exists
var employer = _EmployerRepository.Get(employerId);
if (employer == null)
return operation.Failed("کارفرمای مورد نظر یافت نشد");
-
+
// Get workshop details
- var workshopDetails = await _institutionContractRepository.GetInstitutionWorkshopInitialDetails(institutionWorkshopDetailsId);
+ var workshopDetails =
+ await _institutionContractRepository
+ .GetInstitutionWorkshopInitialDetails(institutionWorkshopDetailsId);
if (workshopDetails == null)
return operation.Failed("جزئیات کارگاه موسسه یافت نشد");
-
+
// Find and remove the employer from workshop details
- var employerDetail = workshopDetails.Employers.FirstOrDefault(e => e.EmployerId == employerId);
+ var employerDetail = workshopDetails
+ .Employers.FirstOrDefault(e => e.EmployerId == employerId);
if (employerDetail == null)
return operation.Failed("کارفرما در لیست کارگاه یافت نشد");
-
+
// Remove the employer from the list
workshopDetails.Employers.Remove(employerDetail);
-
+
await _institutionContractRepository.SaveChangesAsync();
- // Delete the employer
- _EmployerRepository.Remove(employerId);
- await _EmployerRepository.SaveChangesAsync();
-
+
return operation.Succcedded();
}
-
+
public async Task> AuthenticateEmployer(string nationalCode,
string dateOfBirth,
string mobile)
{
var op = new OperationResult();
-
+
var dateOfBirthGr = dateOfBirth.ToGeorgianDateTime();
-
+
var isMachMobilAndNationalCode = await _uidService.IsMachPhoneWithNationalCode(nationalCode, mobile);
if (isMachMobilAndNationalCode == null)
return op.Failed("خطا در سرویس احراز هویت");
if (!isMachMobilAndNationalCode.IsMatched)
return op.Failed("شماره همراه وارد شده با کد ملی مطابقت ندارد");
var apiRespons = await _uidService.GetPersonalInfo(nationalCode, dateOfBirth);
-
+
if (apiRespons == null)
throw new InternalServerException("سیستم احراز هویت در دسترس نمی باشد");
-
- if (apiRespons.ResponseContext.Status.Code ==14)
+
+ if (apiRespons.ResponseContext.Status.Code == 14)
throw new InternalServerException("سیستم احراز هویت در دسترس نمی باشد");
-
+
if (apiRespons.ResponseContext.Status.Code != 0)
return op.Failed($"{apiRespons.ResponseContext.Status.Message}");
@@ -1420,6 +1439,7 @@ public class EmployerApplication : IEmployerApplication
? apiRespons.IdentificationInformation.NationalId
: apiRespons.IdentificationInformation.ShenasnamehNumber;
+
var res = new AuthenticateUserViewModel()
{
DateOfBirth = dateOfBirth,
@@ -1436,6 +1456,12 @@ public class EmployerApplication : IEmployerApplication
return op.Succcedded(res);
}
+ public Task> GetWorkflowRegistrationForEdit(long employerId,
+ long institutionWorkshopDetailsId)
+ {
+ return _EmployerRepository.GetWorkflowRegistrationForEdit(employerId, institutionWorkshopDetailsId);
+ }
+
private async Task> CreateLegalEmployerRegistration(
CreateLegalEmployerWorkflowRegistration command, long contractingPartyId)
{
@@ -1502,6 +1528,11 @@ public class EmployerApplication : IEmployerApplication
command.GovernmentSystemInfo.EServiceUsername, command.GovernmentSystemInfo.EServicePassword,
command.GovernmentSystemInfo.TaxUsername, command.GovernmentSystemInfo.TaxPassword,
command.GovernmentSystemInfo.SanaUsername, command.GovernmentSystemInfo.SanaPassword);
+ if (command.IsAuth)
+ {
+ legalEmployerData.LegalAuthentication(command.CeoFName,command.CeoLName,command.CeoFatherName,
+ command.CeoIdNumber,command.IdNumberSeri,command.IdNumberSerial,command.CeoDateOfBirth,command.Gender,command.PhoneNumber);
+ }
await _EmployerRepository.CreateAsync(legalEmployerData);
await _EmployerRepository.SaveChangesAsync();
@@ -1555,6 +1586,12 @@ public class EmployerApplication : IEmployerApplication
command.GovernmentSystemInfo.EServicePassword,
command.GovernmentSystemInfo.TaxUsername, command.GovernmentSystemInfo.TaxPassword,
command.GovernmentSystemInfo.SanaUsername, command.GovernmentSystemInfo.SanaPassword);
+ if (command.IsAuth)
+ {
+ employerData.Authentication(command.FName, command.LName, command.FatherName, command.IdNumber,
+ command.IdNumberSeri,
+ command.IdNumberSerial, command.DateOfBirth, command.Gender, command.PhoneNumber);
+ }
await _EmployerRepository.CreateAsync(employerData);
await _EmployerRepository.SaveChangesAsync();
@@ -1664,5 +1701,6 @@ public class EmployerApplication : IEmployerApplication
await _EmployerRepository.SaveChangesAsync();
return operation.Succcedded();
}
+
#endregion
}
\ No newline at end of file
diff --git a/CompanyManagment.Application/InstitutionContractApplication.cs b/CompanyManagment.Application/InstitutionContractApplication.cs
index f303ffa4..f6599b33 100644
--- a/CompanyManagment.Application/InstitutionContractApplication.cs
+++ b/CompanyManagment.Application/InstitutionContractApplication.cs
@@ -318,7 +318,7 @@ public class InstitutionContractApplication : IInstitutionContractApplication
command.DailyCompenseation, command.Obligation,
command.TotalAmount, command.ExtensionNo, command.WorkshopManualCount, command.EmployeeManualCount,
command.Description, command.OfficialCompany, command.TypeOfContract, command.HasValueAddedTax,
- command.ValueAddedTax, [],command.LawId);
+ command.ValueAddedTax, [], command.LawId);
_institutionContractRepository.Create(createContract);
_institutionContractRepository.SaveChanges();
@@ -1046,7 +1046,7 @@ public class InstitutionContractApplication : IInstitutionContractApplication
command.Workshops.Count.ToString(),
command.Workshops.Sum(x => x.PersonnelCount).ToString(), command.Description,
"NotOfficial", "JobRelation", hasValueAddedTax,
- command.TaxAmount, workshopDetails,command.LawId);
+ command.TaxAmount, workshopDetails, command.LawId);
FinancialStatment financialStatement;
@@ -1139,11 +1139,11 @@ public class InstitutionContractApplication : IInstitutionContractApplication
if (res.IsSuccedded)
CreateContractingPartyAccount(contractingParty.id, res.SendId);
- await _institutionContractRepository.SaveChangesAsync();
await _smsService.SendInstitutionVerificationLink(contractingParty.Phone, contractingPartyFullName,
entity.PublicId);
+ await _institutionContractRepository.SaveChangesAsync();
await transaction.CommitAsync();
return opration.Succcedded();
@@ -1153,7 +1153,7 @@ public class InstitutionContractApplication : IInstitutionContractApplication
{
throw new NotImplementedException();
}
-
+
public Task> RegistrationWorkflowMainList()
{
@@ -1249,8 +1249,31 @@ public class InstitutionContractApplication : IInstitutionContractApplication
if (institutionContract.VerifyCode != code)
return op.Failed("کد وارد شده صحیح نمی باشد");
+
+ var transaction = await _institutionContractRepository.BeginTransactionAsync();
institutionContract.SetPendingWorkflow();
+ var phone = institutionContract.ContactInfoList.FirstOrDefault(x =>
+ x.SendSms && x.Position == "طرف قرارداد" && x.PhoneType == "شماره همراه");
+ if (phone !=null)
+ {
+ var userPass = contractingParty.IsLegal == "حقیقی"
+ ? contractingParty.Nationalcode
+ : contractingParty.NationalId;
+ var createAcc = new RegisterAccount
+ {
+ Fullname = contractingParty.LName,
+ Username = userPass,
+ Password = userPass,
+ Mobile = phone.PhoneNumber,
+ NationalCode = userPass
+ };
+ var res = _accountApplication.RegisterClient(createAcc);
+ if (res.IsSuccedded)
+ CreateContractingPartyAccount(contractingParty.id, res.SendId);
+ }
+
+ await transaction.CommitAsync();
await _institutionContractRepository.SaveChangesAsync();
return op.Succcedded();
}
@@ -1259,6 +1282,7 @@ public class InstitutionContractApplication : IInstitutionContractApplication
{
var details = await _institutionContractRepository.GetInstitutionWorkshopInitialDetails(workshopDetailsId);
var services = details.Services;
+ var newArchiveCode = _workshopRepository.GetLastArchiveCode() + 1;
var res = new InstitutionContractWorkshopDetailViewModel()
{
@@ -1271,7 +1295,9 @@ public class InstitutionContractApplication : IInstitutionContractApplication
InsuranceInPerson = services.InsuranceInPerson,
RollCall = services.RollCall,
RollCallInPerson = services.RollCallInPerson
- }
+ },
+ WorkshopName = details.WorkshopName,
+ ArchiveCode = newArchiveCode
};
return res;
}
@@ -1287,12 +1313,14 @@ public class InstitutionContractApplication : IInstitutionContractApplication
return await _institutionContractRepository.GetExtensionWorkshops(request);
}
- public async Task GetExtensionInstitutionPlan(InstitutionContractExtensionPlanRequest request)
+ public async Task GetExtensionInstitutionPlan(
+ InstitutionContractExtensionPlanRequest request)
{
return await _institutionContractRepository.GetExtensionInstitutionPlan(request);
}
- public async Task GetExtensionPaymentMethod(InstitutionContractExtensionPaymentRequest request)
+ public async Task GetExtensionPaymentMethod(
+ InstitutionContractExtensionPaymentRequest request)
{
return await _institutionContractRepository.GetExtensionPaymentMethod(request);
}
@@ -1301,6 +1329,11 @@ public class InstitutionContractApplication : IInstitutionContractApplication
{
return await _institutionContractRepository.ExtensionComplete(request);
}
+
+ public async Task> GetInstitutionContractSelectList(string search, string selected)
+ {
+ return await _institutionContractRepository.GetInstitutionContractSelectList(search,selected);
+ }
public async Task GetAmendmentWorkshops(long institutionContractId)
{
@@ -1322,6 +1355,28 @@ public class InstitutionContractApplication : IInstitutionContractApplication
return _institutionContractRepository.GetAmendmentPaymentDetails(request);
}
+ public async Task ResendVerifyLink(long institutionContractId)
+ {
+ var institutionContract = _institutionContractRepository.Get(institutionContractId);
+
+ if (institutionContract == null)
+ {
+ throw new NotFoundException("رکورد مورد نظر یافت نشد");
+ }
+
+ if (institutionContract.VerificationStatus != InstitutionContractVerificationStatus.PendingForVerify)
+ {
+ throw new BadRequestException("این قرارداد مالی در وضعیت مناسبی برای ارسال مجدد لینک تایید نمی باشد");
+ }
+ var contractingParty = _contractingPartyRepository.Get(institutionContract.ContractingPartyId);
+ if (contractingParty == null)
+ throw new NotFoundException("طرف قرارداد یافت نشد");
+ var contractingPartyFullName = contractingParty.FName + " " + contractingParty.LName;
+ await _smsService.SendInstitutionVerificationLink(contractingParty.Phone, contractingPartyFullName,
+ institutionContract.PublicId);
+ return new OperationResult().Succcedded();
+ }
+
private async Task> CreateLegalContractingPartyEntity(
CreateInstitutionContractLegalPartyRequest request, long representativeId, string address, string city,
@@ -1362,8 +1417,8 @@ public class InstitutionContractApplication : IInstitutionContractApplication
if (request.IsAuth)
{
- legalContractingParty.LegalAuthentication(request.FName,request.LName,request.FatherName,
- request.IdNumber,null,null,request.BirthDateFa,request.Gender,request.PhoneNumber);
+ legalContractingParty.LegalAuthentication(request.FName, request.LName, request.FatherName,
+ request.IdNumber, null, null, request.BirthDateFa, request.Gender, request.PhoneNumber);
}
await _contractingPartyRepository.CreateAsync(legalContractingParty);
@@ -1408,7 +1463,7 @@ public class InstitutionContractApplication : IInstitutionContractApplication
if (request.IsAuth)
{
personalContractingParty.Authentication(request.FName, request.LName, request.FatherName,
- request.IdNumber, null,null, request.BirthDateFa, request.Gender,request.PhoneNumber);
+ request.IdNumber, null, null, request.BirthDateFa, request.Gender, request.PhoneNumber);
}
await _contractingPartyRepository.CreateAsync(personalContractingParty);
@@ -1525,4 +1580,4 @@ public class WorkshopsAndEmployeeViewModel
public int ArchiveCode { get; set; }
}
-#endregion
+#endregion
\ No newline at end of file
diff --git a/CompanyManagment.Application/WorkshopAppliction.cs b/CompanyManagment.Application/WorkshopAppliction.cs
index ee4405d7..e3d69ce8 100644
--- a/CompanyManagment.Application/WorkshopAppliction.cs
+++ b/CompanyManagment.Application/WorkshopAppliction.cs
@@ -1048,7 +1048,7 @@ public class WorkshopAppliction : IWorkshopApplication
var institutionContract =
await _institutionContractRepository.GetIncludeWorkshopDetailsAsync(contractWorkshopInitial
- .InstitutionContractId);
+ .WorkshopGroup.InstitutionContractId);
if (institutionContract == null)
{
return operation.Failed("قرارداد مالی موسسه یافت نشد");
diff --git a/CompanyManagment.EFCore/CompanyContext.cs b/CompanyManagment.EFCore/CompanyContext.cs
index ba0d7a01..bc09d18f 100644
--- a/CompanyManagment.EFCore/CompanyContext.cs
+++ b/CompanyManagment.EFCore/CompanyContext.cs
@@ -1,5 +1,6 @@
using Company.Domain.AdminMonthlyOverviewAgg;
using Company.Domain.AndroidApkVersionAgg;
+using Company.Domain.AuthorizedBankDetailsAgg;
using Company.Domain.BankAgg;
using Company.Domain.BillAgg;
using Company.Domain.Board;
@@ -201,6 +202,9 @@ public class CompanyContext : DbContext
public DbSet InstitutionContractContactInfoTemps { get; set; }
+ public DbSet AuthorizedBankDetails { get; set; }
+
+
#endregion
#region Pooya
@@ -309,7 +313,6 @@ public class CompanyContext : DbContext
public DbSet Employers { get; set; }
-
public CompanyContext(DbContextOptions options) :base(options)
{
diff --git a/CompanyManagment.EFCore/Mapping/AuthorizedBankDetailsMapping.cs b/CompanyManagment.EFCore/Mapping/AuthorizedBankDetailsMapping.cs
new file mode 100644
index 00000000..ceeba7e1
--- /dev/null
+++ b/CompanyManagment.EFCore/Mapping/AuthorizedBankDetailsMapping.cs
@@ -0,0 +1,34 @@
+using Company.Domain.AuthorizedBankDetailsAgg;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+
+namespace CompanyManagment.EFCore.Mapping
+{
+ public class AuthorizedBankDetailsMapping : IEntityTypeConfiguration
+ {
+ public void Configure(EntityTypeBuilder builder)
+ {
+ builder.ToTable("AuthorizedBankDetails");
+ builder.HasKey(x => x.id);
+
+ builder.Property(x => x.CardNumber).HasMaxLength(50);
+ builder.Property(x => x.AccountNumber).HasMaxLength(50);
+ builder.Property(x => x.IBan).HasMaxLength(50);
+ builder.Property(x => x.BankName).HasMaxLength(100);
+
+ // Configure owners as owned entities (value objects)
+ builder.OwnsMany(x => x.OwnersList, ownersBuilder =>
+ {
+ ownersBuilder.ToTable("AuthorizedBankDetailsOwners");
+ ownersBuilder.WithOwner().HasForeignKey("AuthorizedBankDetailsId");
+ ownersBuilder.Property("Id").ValueGeneratedOnAdd();
+ ownersBuilder.HasKey("Id");
+
+ ownersBuilder.Property(x => x.FName).HasMaxLength(100);
+ ownersBuilder.Property(x => x.LName).HasMaxLength(100);
+ ownersBuilder.Property(x => x.NationalIdentifier).HasMaxLength(20);
+ ownersBuilder.Property(x => x.CustomerType).HasMaxLength(50);
+ });
+ }
+ }
+}
diff --git a/CompanyManagment.EFCore/Migrations/20251014082438_add authenticate columns to employer.Designer.cs b/CompanyManagment.EFCore/Migrations/20251014082438_add authenticate columns to employer.Designer.cs
new file mode 100644
index 00000000..843e8bdf
--- /dev/null
+++ b/CompanyManagment.EFCore/Migrations/20251014082438_add authenticate columns to employer.Designer.cs
@@ -0,0 +1,10971 @@
+//
+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("20251014082438_add authenticate columns to employer")]
+ partial class addauthenticatecolumnstoemployer
+ {
+ ///
+ 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("EmployeeMandatoryHours")
+ .IsRequired()
+ .HasMaxLength(30)
+ .HasColumnType("nvarchar(30)");
+
+ 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