diff --git a/0_Framework/Application/Tools.cs b/0_Framework/Application/Tools.cs
index 76c9bdda..d959c33e 100644
--- a/0_Framework/Application/Tools.cs
+++ b/0_Framework/Application/Tools.cs
@@ -41,6 +41,23 @@ public static class Tools
return Regex.IsMatch(mobileNo, "^((09))(\\d{9})$");
}
+ ///
+ /// تاریخ شروع و تعداد ماه را میگیرد و تاریخ پایان قراردا را بر میگرداند
+ ///
+ ///
+ ///
+ ///
+ public static (DateTime endDateGr, string endDateFa) FindEndOfContract(string startDate, string monthPlus)
+ {
+
+ int startYear = Convert.ToInt32(startDate.Substring(0, 4));
+ int startMonth = Convert.ToInt32(startDate.Substring(5, 2));
+ int startDay = Convert.ToInt32(startDate.Substring(8, 2));
+ var start = new PersianDateTime(startYear, startMonth, startDay);
+ var end = (start.AddMonths(Convert.ToInt32(monthPlus))).AddDays(-1);
+ return ($"{end}".ToGeorgianDateTime(), $"{end}");
+
+ }
///
/// دریافت روزهای کارکرد پرسنل در لیست بیمه ماه مشخص شده
diff --git a/Company.Domain/ContactUsAgg/ContactUs.cs b/Company.Domain/ContactUsAgg/ContactUs.cs
new file mode 100644
index 00000000..43f9825f
--- /dev/null
+++ b/Company.Domain/ContactUsAgg/ContactUs.cs
@@ -0,0 +1,26 @@
+using _0_Framework.Domain;
+
+namespace Company.Domain.ContactUsAgg;
+
+public class ContactUs:EntityBase
+{
+ public ContactUs(string firstName, string lastName, string email, string phoneNumber, string title, string message)
+ {
+ FirstName = firstName.Trim();
+ LastName = lastName.Trim();
+ Email = email;
+ PhoneNumber = phoneNumber;
+ Title = title;
+ Message = message;
+ FullName = FirstName + " " + LastName;
+ }
+
+ public string FirstName { get; private set; }
+ public string LastName { get; private set; }
+ public string Email { get; private set; }
+ public string PhoneNumber { get; private set; }
+ public string Title { get; private set; }
+ public string Message { get; private set; }
+ public string FullName { get; private set; }
+
+}
\ No newline at end of file
diff --git a/Company.Domain/ContactUsAgg/IContactUsRepository.cs b/Company.Domain/ContactUsAgg/IContactUsRepository.cs
new file mode 100644
index 00000000..8dbe78bd
--- /dev/null
+++ b/Company.Domain/ContactUsAgg/IContactUsRepository.cs
@@ -0,0 +1,8 @@
+using _0_Framework.Domain;
+
+namespace Company.Domain.ContactUsAgg;
+
+public interface IContactUsRepository : IRepository
+{
+
+}
\ No newline at end of file
diff --git a/Company.Domain/ContarctingPartyAgg/PersonalContractingParty.cs b/Company.Domain/ContarctingPartyAgg/PersonalContractingParty.cs
index 7097b061..a3fa2c40 100644
--- a/Company.Domain/ContarctingPartyAgg/PersonalContractingParty.cs
+++ b/Company.Domain/ContarctingPartyAgg/PersonalContractingParty.cs
@@ -213,4 +213,14 @@ public class PersonalContractingParty : EntityBase
this.Gender = gender;
this.IsAuthenticated = true;
}
+
+ public void RegisterComplete(string fatherName, string idNumberSeri, string idNumberSerial, DateTime dateOfBirth, Gender gender)
+ {
+ this.FatherName = fatherName;
+ this.IdNumberSeri = idNumberSeri;
+ this.IdNumberSerial = idNumberSerial;
+ this.DateOfBirth = dateOfBirth;
+ this.Gender = gender;
+ this.IsAuthenticated = true;
+ }
}
\ No newline at end of file
diff --git a/Company.Domain/TemporaryClientRegistrationAgg/IInstitutionContractTempRepository.cs b/Company.Domain/TemporaryClientRegistrationAgg/IInstitutionContractTempRepository.cs
index 7d9fe9a7..60212417 100644
--- a/Company.Domain/TemporaryClientRegistrationAgg/IInstitutionContractTempRepository.cs
+++ b/Company.Domain/TemporaryClientRegistrationAgg/IInstitutionContractTempRepository.cs
@@ -1,4 +1,5 @@
-using System.Threading.Tasks;
+using System.Collections.Generic;
+using System.Threading.Tasks;
using _0_Framework_b.Domain;
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
@@ -15,4 +16,11 @@ public interface IInstitutionContractTempRepository : IRepository
///
Task GetInstitutionContractTemp(long id,long contractingPartyTempId);
+
+ ///
+ /// دریافت لیست طرف حساب هایی که ثبت نام آنها تکمیل شده
+ /// جهت نمایش در کارپوشه
+ ///
+ ///
+ Task> GetAllCompletedRegistration();
}
\ No newline at end of file
diff --git a/Company.Domain/TemporaryClientRegistrationAgg/IWorkshopTempRepository.cs b/Company.Domain/TemporaryClientRegistrationAgg/IWorkshopTempRepository.cs
index 5ba19824..f9b99c56 100644
--- a/Company.Domain/TemporaryClientRegistrationAgg/IWorkshopTempRepository.cs
+++ b/Company.Domain/TemporaryClientRegistrationAgg/IWorkshopTempRepository.cs
@@ -14,5 +14,7 @@ public interface IWorkshopTempRepository : IRepository
///
Task> GetWorkshopTemp(long contractingPartyTemp);
+ System.Threading.Tasks.Task RemoveWorkshopTemps(List workshopTempIds);
+
}
\ No newline at end of file
diff --git a/Company.Domain/TemporaryClientRegistrationAgg/InstitutionContractTemp.cs b/Company.Domain/TemporaryClientRegistrationAgg/InstitutionContractTemp.cs
index 62974a44..198c3737 100644
--- a/Company.Domain/TemporaryClientRegistrationAgg/InstitutionContractTemp.cs
+++ b/Company.Domain/TemporaryClientRegistrationAgg/InstitutionContractTemp.cs
@@ -34,12 +34,14 @@ public class InstitutionContractTemp : EntityBase
/// بصورت یکجا
/// -
/// بصئورت ماهیانه
+ /// OneTime
///
public string PaymentModel { get; private set; }
///
/// مدت قرارداد
/// چند ماهه؟
+ /// "12"
///
public string PeriodModel { get; private set; }
@@ -129,6 +131,9 @@ public class InstitutionContractTemp : EntityBase
VerifyCodeEndTime = verifyCodeEndTime;
}
-
+ public void ChangeRegistrationStatus(string registrationStatus)
+ {
+ RegistrationStatus = registrationStatus;
+ }
}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/ContactUs/IContactUsApplication.cs b/CompanyManagment.App.Contracts/ContactUs/IContactUsApplication.cs
new file mode 100644
index 00000000..a286955d
--- /dev/null
+++ b/CompanyManagment.App.Contracts/ContactUs/IContactUsApplication.cs
@@ -0,0 +1,18 @@
+using _0_Framework.Application;
+
+namespace CompanyManagment.App.Contracts.ContactUs;
+
+public interface IContactUsApplication
+{
+ OperationResult Create(CreateContactUs command);
+}
+
+public class CreateContactUs
+{
+ public string FirstName { get; set; }
+ public string LastName { get; set; }
+ public string Email { get; set; }
+ public string PhoneNumber { get; set; }
+ public string Title { get; set; }
+ public string Message { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/TemporaryClientRegistration/ITemporaryClientRegistrationApplication.cs b/CompanyManagment.App.Contracts/TemporaryClientRegistration/ITemporaryClientRegistrationApplication.cs
index 17ed2570..6de66312 100644
--- a/CompanyManagment.App.Contracts/TemporaryClientRegistration/ITemporaryClientRegistrationApplication.cs
+++ b/CompanyManagment.App.Contracts/TemporaryClientRegistration/ITemporaryClientRegistrationApplication.cs
@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
using System.Threading.Tasks;
using _0_Framework.Application;
using CompanyManagment.App.Contracts.InstitutionPlan;
@@ -38,7 +39,7 @@ public interface ITemporaryClientRegistrationApplication
///
///
///
- Task CreateOrUpdateWorkshopTemp(List command);
+ Task CreateOrUpdateWorkshopTemp(List command, long contractingPartyTempId);
///
/// دریافت جمع کل خدمات برای یک کارگاه
@@ -55,14 +56,14 @@ public interface ITemporaryClientRegistrationApplication
///
///
Task GetTotalPaymentAndWorkshopList(long contractingPartyTempId,
- string periodModel = "12", string paymentModel = "OneTime");
+ string periodModel = "12", string paymentModel = "OneTime", string contractStartType = "currentMonth");
///
/// ایجاد یا ویرایش قرارداد موقت
///
///
///
- Task CreateOrUpdateInstitutionContractTemp(long contractingPartyTempId, string periodModel, string paymentModel, double totalPayment, double valueAddedTax);
+ Task CreateOrUpdateInstitutionContractTemp(long contractingPartyTempId, string periodModel, string paymentModel, double totalPayment, double valueAddedTax, DateTime contractStart);
///
/// دریافت کد برای کلاینت
@@ -92,4 +93,11 @@ public interface ITemporaryClientRegistrationApplication
///
///
Task PayOffCompleted(long contractingPartyTempId);
+
+ ///
+ /// دریافت لیست طرف حساب هایی که ثبت نام آنها تکمیل شده
+ /// جهت نمایش در کارپوشه
+ ///
+ ///
+ Task> RegistrationWorkflowMainList();
}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/TemporaryClientRegistration/MonthlyInstallment.cs b/CompanyManagment.App.Contracts/TemporaryClientRegistration/MonthlyInstallment.cs
new file mode 100644
index 00000000..efa53d67
--- /dev/null
+++ b/CompanyManagment.App.Contracts/TemporaryClientRegistration/MonthlyInstallment.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CompanyManagment.App.Contracts.TemporaryClientRegistration;
+
+public class MonthlyInstallment
+{
+ ///
+ /// مبلغ قسط ماهانه
+ ///
+ public string InstallmentAmountStr { get; set; }
+
+ ///
+ /// تاریخ قسط ماهانه
+ ///
+ public string InstalmentDate { get; set; }
+
+ ///
+ /// شمارنده قسط
+ ///
+ public string InstallmentCounter{ get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/TemporaryClientRegistration/RegistrationWorkflowMainList.cs b/CompanyManagment.App.Contracts/TemporaryClientRegistration/RegistrationWorkflowMainList.cs
new file mode 100644
index 00000000..773a3130
--- /dev/null
+++ b/CompanyManagment.App.Contracts/TemporaryClientRegistration/RegistrationWorkflowMainList.cs
@@ -0,0 +1,21 @@
+namespace CompanyManagment.App.Contracts.TemporaryClientRegistration;
+
+public class RegistrationWorkflowMainList
+{
+ ///
+ /// آی دی طرف حساب ثبت شده موقت
+ ///
+ public long ContractingPartyTempId { get; set; }
+
+
+ ///
+ /// نام کامل طرف حساب
+ ///
+ public string ContractingPartyFullName { get; set; }
+
+ ///
+ /// شماره همراه
+ ///
+ public string Phone { get; set; }
+
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/TemporaryClientRegistration/ReviewAndPaymentViewModel.cs b/CompanyManagment.App.Contracts/TemporaryClientRegistration/ReviewAndPaymentViewModel.cs
index bc2478b3..10912190 100644
--- a/CompanyManagment.App.Contracts/TemporaryClientRegistration/ReviewAndPaymentViewModel.cs
+++ b/CompanyManagment.App.Contracts/TemporaryClientRegistration/ReviewAndPaymentViewModel.cs
@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
namespace CompanyManagment.App.Contracts.TemporaryClientRegistration;
@@ -23,28 +24,54 @@ public class ReviewAndPaymentViewModel
/// مبلغ پرداخت بدون مالیات
/// Double
///
- public double WithoutTaxPaymentDouble { get; set; }
+ public double OneTimeWithoutTaxPaymentDouble { get; set; }
///
/// مبلغ پرداخت بدون مالیات
/// string
///
- public string WithoutTaxPaymentStr { get; set; }
+ public string OneTimeWithoutTaxPaymentStr { get; set; }
///
/// مبلغ پرداخت کامل
/// Double
///
- public double TotalPaymentDouble { get; set; }
+ public double OneTimeTotalPaymentDouble { get; set; }
///
/// مبلغ پرداخت کامل
/// string
///
- public string TotalPaymentStr { get; set; }
+ public string OneTimeTotalPaymentStr { get; set; }
+
+ ///
+ /// مبلغ پرداخت بدون مالیات
+ /// Double
+ ///
+ public double MonthlyWithoutTaxPaymentDouble { get; set; }
+
+ ///
+ /// مبلغ پرداخت بدون مالیات
+ /// string
+ ///
+ public string MonthlyWithoutTaxPaymentStr { get; set; }
+
+
+ ///
+ /// مبلغ پرداخت کامل
+ /// Double
+ ///
+ public double MonthlyTotalPaymentDouble { get; set; }
+
+ ///
+ /// مبلغ پرداخت کامل
+ /// string
+ ///
+ public string MonthlyTotalPaymentStr { get; set; }
+
///
/// مالیات بر ارزش افزوده
/// Double
@@ -83,4 +110,52 @@ public class ReviewAndPaymentViewModel
/// آی دی طرف حساب
///
public long ContractingPartTempId { get; set; }
+
+ ///
+ /// لیست اقساط ماهیانه
+ ///
+ public List MonthlyInstallments { get; set; }
+
+
+ ///
+ /// تاریخ شروع قرارداد در اول ماه جاری
+ /// -
+ /// شمسی
+ ///
+ public string ContractStartCurrentMonthFa { get; set; }
+
+ ///
+ /// تاریخ شروع قرارداد در اول ماه جاری
+ /// -
+ /// میلادی
+ ///
+ public DateTime ContractStartCurrentMonthGr { get; set; }
+
+ ///
+ /// تاریخ شروع قرارداد در اول ماه بعد
+ /// -
+ /// شمسی
+ ///
+ public string ContractStartNextMonthFa{ get; set; }
+
+ ///
+ /// تاریخ شروع قرارداد در اول ماه بعد
+ /// -
+ /// میلادی
+ ///
+ public DateTime ContractStartNextMonthGr { get; set; }
+
+ ///
+ /// تاریخ پایان قرارداد
+ /// -
+ /// میلادی
+ ///
+ public DateTime ContractEndGr { get; set; }
+
+ ///
+ /// تاریخ پایان قرارداد
+ /// -
+ /// شمسی
+ ///
+ public string ContractEndFa { get; set; }
}
\ No newline at end of file
diff --git a/CompanyManagment.Application/ContactUsApplication.cs b/CompanyManagment.Application/ContactUsApplication.cs
new file mode 100644
index 00000000..d1912132
--- /dev/null
+++ b/CompanyManagment.Application/ContactUsApplication.cs
@@ -0,0 +1,70 @@
+using System.Text.RegularExpressions;
+using _0_Framework.Application;
+using Company.Domain.ContactUsAgg;
+using CompanyManagment.App.Contracts.ContactUs;
+
+namespace CompanyManagment.Application;
+
+public class ContactUsApplication : IContactUsApplication
+{
+ private readonly IContactUsRepository _contactUsRepository;
+
+ public ContactUsApplication(IContactUsRepository contactUsRepository)
+ {
+ _contactUsRepository = contactUsRepository;
+ }
+
+ public OperationResult Create(CreateContactUs command)
+ {
+ var op = new OperationResult();
+ if (string.IsNullOrWhiteSpace(command.FirstName))
+ {
+ return op.Failed("لطفا نام خود را وارد کنید");
+ }
+
+ if (string.IsNullOrWhiteSpace(command.LastName))
+ {
+ return op.Failed("لطفا نام خانوادگی خود را وارد کنید");
+ }
+
+ if (string.IsNullOrWhiteSpace(command.Email))
+ {
+ return op.Failed("لطفا ایمیل خود را وارد کنید");
+ }
+
+ if (string.IsNullOrWhiteSpace(command.PhoneNumber))
+ {
+ return op.Failed("لطفا شماره تماس خود را وارد کنید");
+ }
+
+ if (!Regex.IsMatch(command.PhoneNumber, @"^(\+98|0)?9\d{9}$"))
+ {
+ return op.Failed("شماره تماس وارد شده نامعتبر است");
+ }
+
+ if (!Regex.IsMatch(command.Email, @"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$"))
+ {
+ return op.Failed("ایمیل وارد شده نامعتبر است");
+ }
+
+ if (string.IsNullOrWhiteSpace(command.Title))
+ {
+ return op.Failed("لطفا عنوان پیغام خود را وارد کنید");
+ }
+
+ if (string.IsNullOrWhiteSpace(command.Message))
+ {
+ return op.Failed("لطفا پیغام خود را وارد کنید");
+ }
+
+ var entity = new ContactUs(command.FirstName, command.LastName, command.Email, command.PhoneNumber,
+ command.Title, command.Message);
+
+ _contactUsRepository.Create(entity);
+
+ _contactUsRepository.SaveChanges();
+
+ return op.Succcedded();
+
+ }
+}
\ No newline at end of file
diff --git a/CompanyManagment.Application/TemporaryClientRegistrationApplication.cs b/CompanyManagment.Application/TemporaryClientRegistrationApplication.cs
index 941e283f..a74e1df6 100644
--- a/CompanyManagment.Application/TemporaryClientRegistrationApplication.cs
+++ b/CompanyManagment.Application/TemporaryClientRegistrationApplication.cs
@@ -13,6 +13,7 @@ using CompanyManagment.App.Contracts.TemporaryClientRegistration;
using IPE.SmsIrClient.Models.Results;
using Microsoft.EntityFrameworkCore;
using PersianTools.Core;
+using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database;
namespace CompanyManagment.Application;
@@ -67,7 +68,7 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
return op.Failed("شماره همراه نا معتبر است");
-
+
#endregion
@@ -141,6 +142,8 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
result.FName = createTemp.FName;
result.LName = createTemp.LName;
result.DateOfBirthFa = dateOfBirth;
+ result.FatherName = createTemp.FatherName;
+ result.IdNumberSerial = createTemp.IdNumberSerial;
result.IdNumber = idNumber;
return op.Succcedded(result);
@@ -188,7 +191,7 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
///
///
///
- public async Task CreateOrUpdateWorkshopTemp(List command)
+ public async Task CreateOrUpdateWorkshopTemp(List command, long contractingPartyTempId)
{
var op = new OperationResult();
var updateWorkshopList = command.Where(x => x.Id > 0).ToList();
@@ -196,10 +199,17 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
if (updateWorkshopList.Count == 0 && createNewWorkshopList.Count == 0)
return op.Failed("هیچ مجموعه ای ایجاد نشده است");
+ var oldWorkshops = await _workshopTempRepository.GetWorkshopTemp(contractingPartyTempId);
#region Update
if (updateWorkshopList.Count > 0)
{
+ var updateListIds = updateWorkshopList.Select(x => x.Id).ToList();
+ var oldWorkshopsIds = oldWorkshops.Select(x => x.Id).ToList();
+ var exceptWorkshops = oldWorkshopsIds.Except(updateListIds).ToList();
+ if (exceptWorkshops.Any())
+ await _workshopTempRepository.RemoveWorkshopTemps(exceptWorkshops);
+
foreach (var workshop in updateWorkshopList)
{
@@ -212,6 +222,7 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
workshop.RollCall == false && workshop.Insurance == false)
op.Failed($"برای مجموعه {workshop.WorkshopName} هیچ سرویسی انتخاب نشده است");
var existWorkshops = _workshopTempRepository.Get(workshop.Id);
+
if (existWorkshops != null)
{
if (workshop.ContractAndCheckout)
@@ -256,6 +267,8 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
if (workshop.CustomizeCheckout)
await _workshopServicesTempRepository.CreateAsync(
new WorkshopServicesTemp("CustomizeCheckout", workshop.CountPerson, workshop.Id));
+
+ await _workshopServicesTempRepository.SaveChangesAsync();
}
}
@@ -324,6 +337,8 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
if (workshop.CustomizeCheckout)
await _workshopServicesTempRepository.CreateAsync(
new WorkshopServicesTemp("CustomizeCheckout", workshop.CountPerson, createNewWorkshopTemp.id));
+
+ await _workshopServicesTempRepository.SaveChangesAsync();
}
}
@@ -352,8 +367,9 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
///
///
///
- public async Task GetTotalPaymentAndWorkshopList(long contractingPartyTempId, string periodModel = "12", string paymentModel = "OneTime")
+ public async Task GetTotalPaymentAndWorkshopList(long contractingPartyTempId, string periodModel = "12", string paymentModel = "OneTime", string contractStartType = "currentMonth")
{
+
//دریافت کارگاه ها
var workshops = await _workshopTempRepository.GetWorkshopTemp(contractingPartyTempId);
@@ -380,9 +396,10 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
_ => 12,
};
//رند کردن مبالغ کارگاه ها
- var roundAmount = (int)(totalPayment1MonthDouble / 1000000) * 1000000;
+ var roundAmount = (((Convert.ToInt64(totalPayment1MonthDouble))) / 1000000) * 1000000;
+ double roundAmount2 = roundAmount;
//بدست آوردن جمع کل مبالغ کارگاه بر اساس مدت قراداد
- result.SumOfWorkshopsPaymentDouble = roundAmount * months;
+ result.SumOfWorkshopsPaymentDouble = months * roundAmount2;
result.SumOfWorkshopsPaymentPaymentStr = result.SumOfWorkshopsPaymentDouble.ToMoney();
@@ -394,31 +411,112 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
//مالیات
result.ValueAddedTaxDouble = tenPercent;
result.ValueAddedTaxSt = tenPercent.ToMoney();
- if (paymentModel == "OneTime")//تخفیف 10 درصدی درصورت پرداخت یکجا
+ //پرداخت یکجا
+ #region OneTimePaymentResult
+
+ double discountOneTimePeyment = result.SumOfWorkshopsPaymentDouble - tenPercent;
+
+
+ //مبلغ بدون مالیات و با تخفیف
+ result.OneTimeWithoutTaxPaymentDouble = discountOneTimePeyment;
+ result.OneTimeWithoutTaxPaymentStr = discountOneTimePeyment.ToMoney();
+
+ //مبلغ با مالیات
+ result.OneTimeTotalPaymentDouble = discountOneTimePeyment + tenPercent;
+ result.OneTimeTotalPaymentStr = result.OneTimeTotalPaymentDouble.ToMoney();
+
+ #endregion
+
+ //پرداخت ماهیانه
+ #region MonthlyPaymentResult
+
+ //مبلغ بدون مالیات
+ result.MonthlyWithoutTaxPaymentDouble = result.SumOfWorkshopsPaymentDouble;
+ result.MonthlyWithoutTaxPaymentStr = result.SumOfWorkshopsPaymentDouble.ToMoney();
+
+ // مبلغ با مالیات
+ result.MonthlyTotalPaymentDouble = result.SumOfWorkshopsPaymentDouble + tenPercent;
+ result.MonthlyTotalPaymentStr = result.MonthlyTotalPaymentDouble.ToMoney();
+ var installmentList = new List();
+
+ var startDate = (DateTime.Now).ToFarsi();
+ result.ContractStartCurrentMonthFa = $"{startDate.Substring(0, 8)}01";
+ result.ContractStartCurrentMonthGr = result.ContractStartCurrentMonthFa.ToGeorgianDateTime();
+ startDate = result.ContractStartCurrentMonthFa;
+
+ result.ContractStartNextMonthGr = ((startDate.FindeEndOfMonth()).ToGeorgianDateTime()).AddDays(1);
+ result.ContractStartNextMonthFa = result.ContractStartNextMonthGr.ToFarsi();
+
+ if (contractStartType == "nextMonth")
+ startDate = result.ContractStartNextMonthFa;
+
+
+
+ var findeEnd = Tools.FindEndOfContract(startDate, periodModel);
+ var contractEndDate = findeEnd.endDateGr;
+ result.ContractEndGr = contractEndDate;
+ result.ContractEndFa = contractEndDate.ToFarsi();
+
+ if (periodModel == "1")
{
- double discountOneTimePeyment = result.SumOfWorkshopsPaymentDouble - tenPercent;
-
+ installmentList.Add(new MonthlyInstallment()
+ {
+ InstallmentAmountStr = result.MonthlyTotalPaymentStr,
+ InstallmentCounter = "سررسید پرداخت اول",
+ InstalmentDate = (DateTime.Now).ToFarsi()
- //مبلغ بدون مالیات و با تخفیف
- result.WithoutTaxPaymentDouble = discountOneTimePeyment;
- result.WithoutTaxPaymentStr = discountOneTimePeyment.ToMoney();
-
- //مبلغ با مالیات
- result.TotalPaymentDouble = discountOneTimePeyment + tenPercent;
- result.TotalPaymentStr = result.TotalPaymentDouble.ToMoney();
+ });
+ result.MonthlyInstallments = installmentList;
}
else
{
- //مبلغ بدون مالیات
- result.WithoutTaxPaymentDouble = result.SumOfWorkshopsPaymentDouble;
- result.WithoutTaxPaymentStr = result.SumOfWorkshopsPaymentDouble.ToMoney();
+ int instalmentCount = Convert.ToInt32(periodModel);
+ var instalmentAmount = result.MonthlyTotalPaymentDouble / instalmentCount;
+ var findEndOfMonth = startDate.FindeEndOfMonth();
+ for (int i = 1; i <= instalmentCount; i++)
+ {
+ if (i == 1)
+ {
+ startDate = (DateTime.Now).ToFarsi();
+
+ }
+ else if (i > 1)
+ {
+ var currentMonthStart = ((findEndOfMonth.ToGeorgianDateTime()).AddDays(1)).ToFarsi();
+ startDate = currentMonthStart.FindeEndOfMonth();
+ findEndOfMonth = startDate;
+ }
+
+ installmentList.Add(new MonthlyInstallment()
+ {
+ InstallmentAmountStr = instalmentAmount.ToMoney(),
+ InstallmentCounter = i switch
+ {
+ 1 => "سررسید پرداخت اول",
+ 2 => "سررسید پرداخت دوم",
+ 3 => "سررسید پرداخت سوم",
+ 4 => "سررسید پرداخت چهارم",
+ 5 => "سررسید پرداخت پنجم",
+ 6 => "سررسید پرداخت ششم",
+ 7 => "سررسید پرداخت هفتم",
+ 8 => "سررسید پرداخت هشتم",
+ 9 => "سررسید پرداخت نهم",
+ 10 => "سررسید پرداخت دهم",
+ 11 => "سررسید پرداخت یازدهم",
+ 12 => "سررسید پرداخت دوازدهم",
+ _ => "سررسید پرداخت دوازدهم",
+ },
+ InstalmentDate = startDate
+
+ });
+ }
- // مبلغ با مالیات
- result.TotalPaymentDouble = result.SumOfWorkshopsPaymentDouble + tenPercent;
- result.TotalPaymentStr = result.TotalPaymentDouble.ToMoney();
}
+ #endregion
+
+ result.MonthlyInstallments = installmentList;
result.ContractingPartTempId = contractingPartyTempId;
return result;
@@ -430,42 +528,57 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
///
///
///
- public async Task CreateOrUpdateInstitutionContractTemp(long contractingPartyTempId, string periodModel, string paymentModel, double totalPayment, double valueAddedTax)
+ public async Task CreateOrUpdateInstitutionContractTemp(long contractingPartyTempId, string periodModel, string paymentModel, double totalPayment, double valueAddedTax, DateTime contractStart)
{
var op = new OperationResult();
+
+
+
var institutionContractTemp = await
_institutionContractTempRepository.GetInstitutionContractTemp(0, contractingPartyTempId);
-
+ var contractStartDate = contractStart;
+ string contractStartFa = contractStart.ToFarsi();
+ var findeEnd = Tools.FindEndOfContract(contractStartFa, periodModel);
+ var contractEndDate = findeEnd.endDateGr;
if (institutionContractTemp == null)
{
var periodModelInt = Convert.ToInt32(periodModel);
- var contractstart = DateTime.Now;
- var contractEnd = DateTime.Now.AddMonths(periodModelInt);
- var create = new InstitutionContractTemp(contractingPartyTempId,paymentModel,periodModel,totalPayment,contractstart,contractEnd,"official", valueAddedTax,"", "BeforeSendVerifyCode", 0,null,null);
+
+ var create = new InstitutionContractTemp(contractingPartyTempId, paymentModel, periodModel, totalPayment, contractStartDate, contractEndDate, "official", valueAddedTax, "", "BeforeSendVerifyCode", 0, null, null);
_institutionContractTempRepository.Create(create);
_institutionContractTempRepository.SaveChanges();
+
+ //temporary
+ var res = await PayOffCompleted(contractingPartyTempId);
+ if (!res.IsSuccedded)
+ return op.Failed(res.Message);
return op.Succcedded();
}
else
{
if (institutionContractTemp.VerifyCodeEndTime != null)
{
- var spaning = (institutionContractTemp.VerifyCodeEndTime.Value - DateTime.Now);
+ var spaning = (DateTime.Now - institutionContractTemp.VerifyCodeEndTime.Value);
if (institutionContractTemp.RegistrationStatus == "VerifyCodeSent" && spaning > new TimeSpan(0, 0, 0) && spaning < new TimeSpan(0, 1, 0))
return op.Failed("شما به تازگی پیامک دریافت نموده اید دو دقیقه صبر کنید و دوباره تلاش کنید");
}
-
+
if (institutionContractTemp.RegistrationStatus == "Completed")
return op.Failed("شما قبلا ثبت نام خود را تکمیل نموده اید");
-
+
var periodModelInt = Convert.ToInt32(periodModel);
var contractstart = DateTime.Now;
var contractEnd = DateTime.Now.AddMonths(periodModelInt);
var update = _institutionContractTempRepository.Get(institutionContractTemp.Id);
- update.Edit(contractingPartyTempId, paymentModel, periodModel, totalPayment, contractstart, contractEnd, "official", valueAddedTax, "", "BeforeSendVerifyCode", 0, null, null);
+ update.Edit(contractingPartyTempId, paymentModel, periodModel, totalPayment, contractStartDate, contractEndDate, "official", valueAddedTax, "", "BeforeSendVerifyCode", 0, null, null);
_institutionContractTempRepository.SaveChanges();
+
+ //temporary
+ var res = await PayOffCompleted(contractingPartyTempId);
+ if (!res.IsSuccedded)
+ return op.Failed(res.Message);
return op.Succcedded();
}
@@ -483,14 +596,16 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
{
var op = new OperationResult();
- var institutionContractTemp = await
- _institutionContractTempRepository.GetInstitutionContractTemp(0, contractingPartyTempId);
+
+
+ var institutionContractTemp = await
+ _institutionContractTempRepository.GetInstitutionContractTemp(0, contractingPartyTempId);
if (institutionContractTemp == null)
- return op.Failed("خظا");
+ return op.Failed("خطا");
var update = _institutionContractTempRepository.Get(institutionContractTemp.Id);
-
+
if (institutionContractTemp.RegistrationStatus == "BeforeSendVerifyCode")
@@ -516,26 +631,29 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
return op.Succcedded(1, "کد برای شما پیامک شد");
}
-
+
}
if (institutionContractTemp.RegistrationStatus == "VerifyCodeSent")
{
- var spaning = (institutionContractTemp.VerifyCodeEndTime.Value - DateTime.Now);
- if ((spaning > new TimeSpan(0, 0, 0) && spaning < new TimeSpan(0, 1, 0)))
+
+ if (DateTime.Now < institutionContractTemp.VerifyCodeEndTime.Value)
+ return op.Failed("کد دریافت شده را وارد کنید");
+ var spaning = (DateTime.Now - institutionContractTemp.VerifyCodeEndTime.Value);
+ if ((spaning > new TimeSpan(0, 0, 0) && spaning < new TimeSpan(0, 1, 0)))
return op.Failed("شما به تازگی پیامک دریافت نموده اید دو دقیقه صبر کنید و دوباره تلاش کنید");
- if ((spaning > new TimeSpan(0, 0, 0) && spaning > new TimeSpan(0, 1, 0)))
+ if ((spaning > new TimeSpan(0, 1, 0)))
{
//ساخت کد شش رقمی
Random generator = new Random();
String code = generator.Next(1, 1000000).ToString("D6");
//ارسال اس ام اس
var getContractingPaty = _contractingPartyTempRepository.GetByContractingPartyTempId(contractingPartyTempId);
- var sendResult =await _smsService.SendVerifyCodeToClient(getContractingPaty.Phone, code);
+ var sendResult = await _smsService.SendVerifyCodeToClient(getContractingPaty.Phone, code);
- if(!sendResult.IsSuccedded)
+ if (!sendResult.IsSuccedded)
return op.Failed($"{sendResult.Message}");
@@ -544,16 +662,16 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
//ذخیره تاریخ ارسال و مهلت پایان
//ذخیره آیدی پیامک
//تغییر وضعیت به ارسال شده
-
+
if (update != null)
{
- update.Update(code, "VerifyCodeSent",sendResult.MessageId, DateTime.Now, DateTime.Now.AddMinutes(2));
+ update.Update(code, "VerifyCodeSent", sendResult.MessageId, DateTime.Now, DateTime.Now.AddMinutes(2));
_institutionContractTempRepository.SaveChanges();
return op.Succcedded(1, "کد برای شما پیامک شد");
}
-
-
+
+
}
}
@@ -580,25 +698,25 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
_institutionContractTempRepository.GetInstitutionContractTemp(0, contractingPartyTempId);
if (institutionContractTemp == null)
return op.Failed("خظا");
- if(institutionContractTemp.RegistrationStatus != "VerifyCodeSent")
+ if (institutionContractTemp.RegistrationStatus != "VerifyCodeSent")
return op.Failed("خطا");
- if(institutionContractTemp.VerifyCodeEndTime < DateTime.Now)
+ if (institutionContractTemp.VerifyCodeEndTime < DateTime.Now)
return op.Failed("کد شما منقضی شده است");
- if(institutionContractTemp.SendVerifyCodeTime < DateTime.Now && institutionContractTemp.VerifyCodeEndTime >= DateTime.Now)
+ if (institutionContractTemp.SendVerifyCodeTime < DateTime.Now && institutionContractTemp.VerifyCodeEndTime >= DateTime.Now)
{
if (institutionContractTemp.VerifyCode == verifyCode)
{
-
+
return op.Succcedded();
}
else
{
return op.Failed("کد وارد شده صحیح نیست");
}
-
+
}
@@ -615,7 +733,38 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
public async Task PayOffCompleted(long contractingPartyTempId)
{
var op = new OperationResult();
+
+ var temp = _contractingPartyTempRepository.GetByContractingPartyTempId(contractingPartyTempId);
+ if (_personalContractingPartyRepository.Exists(x =>
+ x.Nationalcode == temp.NationalCode))
+ return op.Failed("امکان ثبت رکورد تکراری وجود ندارد");
+
+ var lastArchiveCode = _personalContractingPartyRepository.GetLastArchiveCode();
+ var personalContractingParty = new PersonalContractingParty(temp.FName, temp.LName,
+ temp.NationalCode, temp.IdNumber, "*", "*",
+ "حقیقی",
+ temp.Phone, null, temp.Address, 1, "-", lastArchiveCode,
+ temp.State, temp.City, null, null);
+ _personalContractingPartyRepository.Create(personalContractingParty);
+ _personalContractingPartyRepository.SaveChanges();
+
+ personalContractingParty.RegisterComplete(temp.FatherName, temp.IdNumberSeri, temp.IdNumberSerial, temp.DateOfBirth, temp.Gender);
+ _personalContractingPartyRepository.SaveChanges();
+ var institutionContractTemp = await
+ _institutionContractTempRepository.GetInstitutionContractTemp(0, contractingPartyTempId);
+ var update = _institutionContractTempRepository.Get(institutionContractTemp.Id);
+ update.ChangeRegistrationStatus("Completed");
+ _institutionContractTempRepository.SaveChanges();
+
+
return op.Succcedded();
}
+
+ public async Task> RegistrationWorkflowMainList()
+ {
+
+ return await _institutionContractTempRepository.GetAllCompletedRegistration();
+ }
+
}
\ No newline at end of file
diff --git a/CompanyManagment.EFCore/CompanyContext.cs b/CompanyManagment.EFCore/CompanyContext.cs
index a0733ef4..5252f4a9 100644
--- a/CompanyManagment.EFCore/CompanyContext.cs
+++ b/CompanyManagment.EFCore/CompanyContext.cs
@@ -9,6 +9,7 @@ using Company.Domain.CheckoutAgg;
using Company.Domain.ClassifiedSalaryAgg;
using Company.Domain.ClientEmployeeWorkshopAgg;
using Company.Domain.Contact2Agg;
+using Company.Domain.ContactUsAgg;
using Company.Domain.ContarctingPartyAgg;
using Company.Domain.ContractAgg;
using Company.Domain.ContractingPartyAccountAgg;
@@ -176,6 +177,8 @@ public class CompanyContext : DbContext
public DbSet EmployeeClientTemps { get; set; }
public DbSet LeftWorkTemps { get; set; }
+ public DbSet ContactUs { get; set; }
+
public DbSet EmployeeAuthorizeTemps { get; set; }
public DbSet AdminMonthlyOverviews { get; set; }
diff --git a/CompanyManagment.EFCore/Mapping/ContactUsMapping.cs b/CompanyManagment.EFCore/Mapping/ContactUsMapping.cs
new file mode 100644
index 00000000..cc3b5ddf
--- /dev/null
+++ b/CompanyManagment.EFCore/Mapping/ContactUsMapping.cs
@@ -0,0 +1,20 @@
+using Company.Domain.ContactUsAgg;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+
+namespace CompanyManagment.EFCore.Mapping;
+
+public class ContactUsMapping:IEntityTypeConfiguration
+{
+ public void Configure(EntityTypeBuilder builder)
+ {
+ builder.HasKey(x => x.id);
+ builder.Property(x => x.FullName).HasMaxLength(200);
+ builder.Property(x => x.Title).HasMaxLength(200);
+ builder.Property(x => x.Email).HasMaxLength(200);
+ builder.Property(x => x.FirstName).HasMaxLength(100);
+ builder.Property(x => x.LastName).HasMaxLength(100);
+ builder.Property(x => x.Message).HasMaxLength(500);
+ builder.Property(x => x.PhoneNumber).HasMaxLength(20);
+ }
+}
\ No newline at end of file
diff --git a/CompanyManagment.EFCore/Mapping/PersonalContractingpartyMapping.cs b/CompanyManagment.EFCore/Mapping/PersonalContractingpartyMapping.cs
index 60d0179a..9274487d 100644
--- a/CompanyManagment.EFCore/Mapping/PersonalContractingpartyMapping.cs
+++ b/CompanyManagment.EFCore/Mapping/PersonalContractingpartyMapping.cs
@@ -39,7 +39,7 @@ public class PersonalContractingpartyMapping : IEntityTypeConfiguration x.IdNumberSerial).HasMaxLength(15);
builder.Property(x => x.FatherName).HasMaxLength(20);
builder.Property(x => x.DateOfBirth).IsRequired(false);
- builder.Property(x => x.Gender).HasConversion(
+ builder.Property(x => x.Gender).HasConversion(
v => v.ToString(),
v => string.IsNullOrWhiteSpace(v) ? Gender.None : (Gender)Enum.Parse(typeof(Gender), v)).HasMaxLength(6);
diff --git a/CompanyManagment.EFCore/Migrations/20250423184716_add contact us .Designer.cs b/CompanyManagment.EFCore/Migrations/20250423184716_add contact us .Designer.cs
new file mode 100644
index 00000000..0e4931ae
--- /dev/null
+++ b/CompanyManagment.EFCore/Migrations/20250423184716_add contact us .Designer.cs
@@ -0,0 +1,9450 @@
+//
+using System;
+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("20250423184716_add contact us ")]
+ partial class addcontactus
+ {
+ ///
+ 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.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.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("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("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.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("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("EconomicCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)");
+
+ b.Property("Year")
+ .HasMaxLength(4)
+ .HasColumnType("int");
+
+ b.HasKey("id");
+
+ b.ToTable("CrossJobGuilds", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.CrossJobItemsAgg.CrossJobItems", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("CrossJobId")
+ .HasColumnType("bigint");
+
+ b.Property("JobId")
+ .HasColumnType("bigint");
+
+ b.HasKey("id");
+
+ b.HasIndex("CrossJobId");
+
+ b.HasIndex("JobId");
+
+ b.ToTable("CrossJobItems", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.CustomizeCheckoutAgg.CustomizeCheckout", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("BaseYearsPay")
+ .HasColumnType("float");
+
+ b.Property("BonusesPay")
+ .HasColumnType("float");
+
+ b.Property("ContractEnd")
+ .HasColumnType("datetime2");
+
+ b.Property("ContractId")
+ .HasColumnType("bigint");
+
+ b.Property("ContractNo")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)");
+
+ b.Property("ContractStart")
+ .HasColumnType("datetime2");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("DailyWage")
+ .HasColumnType("float");
+
+ b.Property("DateOfBirth")
+ .HasColumnType("datetime2");
+
+ b.Property