diff --git a/0_Framework/Application/Tools.cs b/0_Framework/Application/Tools.cs index 81a9d35a..1c5962eb 100644 --- a/0_Framework/Application/Tools.cs +++ b/0_Framework/Application/Tools.cs @@ -1386,6 +1386,11 @@ public static class Tools /// public static bool TryToGeorgianDateTime(this string persianDate, out DateTime georgianDateTime) { + if (string.IsNullOrWhiteSpace(persianDate)) + { + georgianDateTime = new DateTime(3000, 12, 20, new PersianCalendar()); + return false; + } persianDate = persianDate.ToEnglishNumber(); try { diff --git a/Company.Domain/CustomizeWorkshopEmployeeSettingsAgg/ICustomizeWorkshopEmployeeSettingsRepository.cs b/Company.Domain/CustomizeWorkshopEmployeeSettingsAgg/ICustomizeWorkshopEmployeeSettingsRepository.cs index 230c4b1f..6c981a4d 100644 --- a/Company.Domain/CustomizeWorkshopEmployeeSettingsAgg/ICustomizeWorkshopEmployeeSettingsRepository.cs +++ b/Company.Domain/CustomizeWorkshopEmployeeSettingsAgg/ICustomizeWorkshopEmployeeSettingsRepository.cs @@ -13,5 +13,6 @@ public interface ICustomizeWorkshopEmployeeSettingsRepository : IRepository GetBy(long groupId); List GetEmployeeSettingsByWorkshopId(long workshopId); List GetEmployeeSettingNotInMainGroup(long entityWorkshopId); + void RemoveByWorkshopIdAndEmployeeId(long workshopId, long employeeId); } \ No newline at end of file diff --git a/Company.Domain/EmployeeAgg/Employee.cs b/Company.Domain/EmployeeAgg/Employee.cs index cd3bfc05..c8836b47 100644 --- a/Company.Domain/EmployeeAgg/Employee.cs +++ b/Company.Domain/EmployeeAgg/Employee.cs @@ -21,11 +21,13 @@ public class Employee : EntityBase public Employee(string fName, string lName, string fatherName, DateTime dateOfBirth, DateTime dateOfIssue, string placeOfIssue, string nationalCode, string idNumber, string gender, string nationality, - string phone, string address, string state, string city, - string maritalStatus, string militaryService, string levelOfEducation, string fieldOfStudy, - string bankCardNumber, string bankBranch, string insuranceCode, string insuranceHistoryByYear, - string insuranceHistoryByMonth, string numberOfChildren,string officePhone, - string mclsUserName, string mclsPassword, string eserviceUserName, string eservicePassword, string taxOfficeUserName, string taxOfficepassword, string sanaUserName, string sanaPassword) + string phone = null, string address = null, string state = null, string city = null, + string maritalStatus = null, string militaryService = null, string levelOfEducation = null, string fieldOfStudy = null, + string bankCardNumber = null, string bankBranch = null, string insuranceCode = null, string insuranceHistoryByYear = null, + string insuranceHistoryByMonth = null, string numberOfChildren = null, string officePhone = null, + string mclsUserName = null, string mclsPassword = null, + string eserviceUserName = null, string eservicePassword = null, + string taxOfficeUserName = null, string taxOfficepassword = null, string sanaUserName = null, string sanaPassword = null) { FName = fName; LName = lName; @@ -135,7 +137,16 @@ public class Employee : EntityBase #region Pooya public List EmployeeDocuments { get; set; } public EmployeeDocumentsAdminSelection EmployeeDocumentsAdminSelection { get; set; } - public List EmployeeBankInformationList { get; set; } + public List EmployeeBankInformationList { get; set; } + #endregion + + #region Mahan + + /// + /// آیا پرسنل احراز هویت شده است + /// + public bool IsAuthorized { get; set; } + #endregion //public List Checkouts { get; set; } @@ -211,4 +222,17 @@ public class Employee : EntityBase this.IsActive = false; this.IsActiveString = "false"; } + + #region Mahan + public void EditFromEmployeeClientTemp(string maritalStatus) + { + MaritalStatus = maritalStatus; + } + + public void Authorized() + { + IsAuthorized = true; + } + + #endregion } \ No newline at end of file diff --git a/Company.Domain/EmployeeAgg/IEmployeeRepository.cs b/Company.Domain/EmployeeAgg/IEmployeeRepository.cs index eb58c559..6a49fd7e 100644 --- a/Company.Domain/EmployeeAgg/IEmployeeRepository.cs +++ b/Company.Domain/EmployeeAgg/IEmployeeRepository.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using _0_Framework.Domain; using Company.Domain.EmployeeInsuranceRecordAgg; using CompanyManagment.App.Contracts.Employee; +using CompanyManagment.App.Contracts.Employee.DTO; using CompanyManagment.App.Contracts.EmployeeInsuranceRecord; namespace Company.Domain.EmployeeAgg; @@ -47,6 +48,14 @@ public interface IEmployeeRepository : IRepository Employee GetByNationalCode(string nationalCode); List GetBy(List employeeIds); + Employee GetByNationalCodeIgnoreQueryFilter(string nationalCode); + Task> GetClientEmployeesStartWork(long workshopId); + Task> GetEmployeesForLeftWorkTemp(long workshopId); + + Employee GetIgnoreQueryFilter(long id); + + + #endregion #region Pooya @@ -54,7 +63,14 @@ public interface IEmployeeRepository : IRepository List GetWorkingEmployeesByWorkshopIdsAndNationalCodeAndDate(List workshopIds, string nationalCode, DateTime date); List GetWorkingEmployeesByWorkshopId(long workshopId); + List GetWorkedEmployeesByWorkshopIdsAndNationalCodeAndDate(List workshopIds, + string nationalCode, DateTime date); + List<(long Id, string Name)> SimpleGetRangeByIds(IEnumerable newEmployeeIds); + Task GetEmployeeEditInEmployeeDocumentWorkFlow(long employeeId, + long workshopId); + #endregion + } \ No newline at end of file diff --git a/Company.Domain/EmployeeClientTempAgg/EmployeeClientTemp.cs b/Company.Domain/EmployeeClientTempAgg/EmployeeClientTemp.cs new file mode 100644 index 00000000..d2e5c400 --- /dev/null +++ b/Company.Domain/EmployeeClientTempAgg/EmployeeClientTemp.cs @@ -0,0 +1,31 @@ +using System; +using _0_Framework.Domain; +using Company.Domain.EmployeeAgg; + +namespace Company.Domain.EmployeeClientTempAgg; + +public class EmployeeClientTemp : EntityBase +{ + public EmployeeClientTemp(long workshopId, DateTime startWorkDate, long employeeId, string maritalStatus, + string employeeFullName) + { + StartWorkDate = startWorkDate; + WorkshopId = workshopId; + EmployeeId = employeeId; + MaritalStatus = maritalStatus; + EmployeeFullName = employeeFullName; + } + + public string EmployeeFullName { get; private set; } + public long WorkshopId { get; private set; } + public long EmployeeId { get; private set; } + public DateTime StartWorkDate { get; private set; } + + public string MaritalStatus { get; private set; } + + public void Edit(string maritalStatus) + { + + MaritalStatus = maritalStatus; + } +} \ No newline at end of file diff --git a/Company.Domain/EmployeeClientTempAgg/IEmployeeClientTempRepository.cs b/Company.Domain/EmployeeClientTempAgg/IEmployeeClientTempRepository.cs new file mode 100644 index 00000000..34d4477d --- /dev/null +++ b/Company.Domain/EmployeeClientTempAgg/IEmployeeClientTempRepository.cs @@ -0,0 +1,11 @@ +using _0_Framework.Domain; +using CompanyManagment.App.Contracts.EmployeeClientTemp; + +namespace Company.Domain.EmployeeClientTempAgg; + +public interface IEmployeeClientTempRepository : IRepository +{ + EmployeeClientTemp GetByEmployeeIdAndWorkshopId(long employeeId, long commandWorkshopId); + EmployeeClientTempGetDetailsViewModel GetDetails(long employeeId, long workshopId); + void Remove(EmployeeClientTemp entity); +} \ No newline at end of file diff --git a/Company.Domain/EmployeeDocumentsAgg/EmployeeDocuments.cs b/Company.Domain/EmployeeDocumentsAgg/EmployeeDocuments.cs index 65904a35..2889caab 100644 --- a/Company.Domain/EmployeeDocumentsAgg/EmployeeDocuments.cs +++ b/Company.Domain/EmployeeDocumentsAgg/EmployeeDocuments.cs @@ -54,11 +54,12 @@ namespace Company.Domain.EmployeeDocumentsAgg var currentItems = EmployeeDocumentItemCollection.Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted) .GroupBy(x => x.DocumentLabel).Select(x => x.OrderByDescending(y => y.CreationDate).First()); - var currentItemsFiltered = currentItems.Where(x => x.DocumentStatus == DocumentStatus.Confirmed || x.DocumentStatus == DocumentStatus.SubmittedByAdmin) - .Select(x => new{x.DocumentStatus,x.DocumentLabel}).ToList(); + var currentItemsFiltered = currentItems.Where(x => x.DocumentStatus is DocumentStatus.Confirmed or DocumentStatus.SubmittedByAdmin or DocumentStatus.SubmittedByClient) + .Select(x => new { x.DocumentStatus, x.DocumentLabel }).ToList(); + // ReSharper disable once SimplifyLinqExpressionUseAll - if (!currentItemsFiltered.Any(x => x.DocumentStatus == DocumentStatus.SubmittedByAdmin)) + if (!currentItemsFiltered.Any(x => x.DocumentStatus is DocumentStatus.SubmittedByAdmin or DocumentStatus.SubmittedByClient)) IsSentToChecker = false; else diff --git a/Company.Domain/EmployeeDocumentsAgg/IEmployeeDocumentsRepository.cs b/Company.Domain/EmployeeDocumentsAgg/IEmployeeDocumentsRepository.cs index e77b749c..edd7afaa 100644 --- a/Company.Domain/EmployeeDocumentsAgg/IEmployeeDocumentsRepository.cs +++ b/Company.Domain/EmployeeDocumentsAgg/IEmployeeDocumentsRepository.cs @@ -26,9 +26,9 @@ namespace Company.Domain.EmployeeDocumentsAgg List GetWorkshopsWithDocumentsAwaitingReviewForAdminWorkFlow(List workshops); List GetByWorkshopIdWithItemsForAdminWorkFlow(long workshopId); - int GetCheckerWorkFlowCount(); - //int GetAdminWorkFlowCountForNewEmployees(List workshopIds); - int GetAdminWorkFlowCountForSubmittedAndRejectedDocuments(List workshopIds); + Task GetCheckerWorkFlowCount(); + Task GetAdminWorkFlowCountForNewEmployees(List workshopIds); + Task GetAdminWorkFlowCountForSubmittedAndRejectedDocuments(List workshopIds); List GetDocumentsAwaitingReviewByWorkshopIdForCheckerWorkFlow(long workshopId); } } diff --git a/Company.Domain/LeftWorkAgg/ILeftWorkRepository.cs b/Company.Domain/LeftWorkAgg/ILeftWorkRepository.cs index 1c2aefbd..4a32f49a 100644 --- a/Company.Domain/LeftWorkAgg/ILeftWorkRepository.cs +++ b/Company.Domain/LeftWorkAgg/ILeftWorkRepository.cs @@ -27,6 +27,8 @@ public interface ILeftWorkRepository : IRepository /// یک کلاس از جنس اطلاعات ترک کار LeftWorkViewModel GetByDateAndWorkshopIdAndEmployeeId(long workshopId, long employeeId, DateTime dateTime); List GetAllEmployeeIdsInWorkshop(long workshopId); + LeftWork GetLastLeftWorkByEmployeeIdAndWorkshopId(long workshopId, long employeeId); + #endregion List GetLeftPersonelByWorkshopId(List workshopIds); diff --git a/Company.Domain/LeftWorkTempAgg/ILeftWorkTempRepository.cs b/Company.Domain/LeftWorkTempAgg/ILeftWorkTempRepository.cs new file mode 100644 index 00000000..500ba1f2 --- /dev/null +++ b/Company.Domain/LeftWorkTempAgg/ILeftWorkTempRepository.cs @@ -0,0 +1,17 @@ +using System.Threading.Tasks; +using _0_Framework.Domain; +using CompanyManagment.App.Contracts.LeftWorkTemp; + +namespace Company.Domain.LeftWorkTempAgg; + +public interface ILeftWorkTempRepository:IRepository +{ + /// + /// گرفتن اطلاعات برای مودال جزئیات شروع به کار موقت یا ترک کار موقت + /// + /// + /// + /// + Task GetStartAndLeftWorkDetails(long employeeId, long workshopId); + void Remove(LeftWorkTemp entity); +} \ No newline at end of file diff --git a/Company.Domain/LeftWorkTempAgg/LeftWorkTemp.cs b/Company.Domain/LeftWorkTempAgg/LeftWorkTemp.cs new file mode 100644 index 00000000..91e7b3e1 --- /dev/null +++ b/Company.Domain/LeftWorkTempAgg/LeftWorkTemp.cs @@ -0,0 +1,65 @@ +using System; +using _0_Framework.Domain; +using Company.Domain.LeftWorkAgg; +using CompanyManagment.App.Contracts.LeftWorkTemp; + +namespace Company.Domain.LeftWorkTempAgg; + +public class LeftWorkTemp:EntityBase +{ + private LeftWorkTemp() + { + + } + + /// + /// برای ایجاد ترک کار موقت + /// + /// + /// + /// + /// + /// + /// + /// + public static LeftWorkTemp CreateLeftWork(long leftWorkId, DateTime startWorkDate, DateTime leftWork, DateTime lastDayStanding, long workshopId, long employeeId,long jobId) + { + var leftWorkTemp = new LeftWorkTemp + { + LeftWorkId = leftWorkId, + LeftWork = leftWork, + LastDayStanding = lastDayStanding, + WorkshopId = workshopId, + EmployeeId = employeeId, + StartWork = startWorkDate, + LeftWorkType = LeftWorkTempType.LeftWork, + JobId = jobId + }; + + return leftWorkTemp; + } + + + public static LeftWorkTemp CreateStartWork(long workshopId, long employeeId, DateTime startDate,long jobId) + { + var leftWorkTemp = new LeftWorkTemp + { + StartWork = startDate, + WorkshopId = workshopId, + EmployeeId = employeeId, + JobId = jobId, + LeftWorkType = LeftWorkTempType.StartWork + }; + return leftWorkTemp; + } + + public long LeftWorkId { get; private set; } + public DateTime StartWork { get; private set; } + public DateTime LeftWork { get; private set; } + public DateTime LastDayStanding { get; private set; } + public long WorkshopId { get; private set; } + public long EmployeeId { get; private set; } + public long JobId { get; private set; } + public LeftWorkTempType LeftWorkType { get; private set; } +} + diff --git a/Company.Domain/PersonnelCodeAgg/IPersonnelCodeRepository.cs b/Company.Domain/PersonnelCodeAgg/IPersonnelCodeRepository.cs index 2123c95b..442e6f9c 100644 --- a/Company.Domain/PersonnelCodeAgg/IPersonnelCodeRepository.cs +++ b/Company.Domain/PersonnelCodeAgg/IPersonnelCodeRepository.cs @@ -18,4 +18,11 @@ public interface IPersonnelCodeRepository : IRepository List GetAllServiceByAccountId(long accountId); + bool IsExistActiveServiceByWorkshopId(long workshopId); } \ No newline at end of file diff --git a/Company.Domain/WorkshopAgg/IWorkshopRepository.cs b/Company.Domain/WorkshopAgg/IWorkshopRepository.cs index 1a9cc9c4..732d453c 100644 --- a/Company.Domain/WorkshopAgg/IWorkshopRepository.cs +++ b/Company.Domain/WorkshopAgg/IWorkshopRepository.cs @@ -1,9 +1,11 @@ using System.Collections.Generic; +using System.Threading.Tasks; using _0_Framework.Application; using _0_Framework.Domain; using CompanyManagment.App.Contracts.Contract; using CompanyManagment.App.Contracts.PersonalContractingParty; using CompanyManagment.App.Contracts.Workshop; +using CompanyManagment.App.Contracts.Workshop.DTOs; namespace Company.Domain.WorkshopAgg; @@ -59,18 +61,23 @@ public interface IWorkshopRepository : IRepository List PrintWorkshopList(WorkshopSearchModel searchModel); #endregion + #region Mahan PersonalContractingPartyViewModel GetPersonalContractingPartyByWorkshopId(long workshopId); List GetWorkshopsByClientAccountId(long clientAccountId); + Task> GetWorkshopsForEmployeeStartWork(long accountId); + Task GetWorkshopsForEmployeeStartWorkCount(long accountId); + Task> GetWorkshopsForLeftWorkTemp(long accountId); + Task GetWorkshopsForLeftWorkTempCount(long accountId); - #endregion + #endregion - #region Insurance - /// - /// لیست انتخاب کارگاه در مودال ایجاد بیمه - /// - /// - List GetWorkshopSelectListInsuransce(); + #region Insurance + /// + /// لیست انتخاب کارگاه در مودال ایجاد بیمه + /// + /// + List GetWorkshopSelectListInsuransce(); #endregion /// @@ -87,4 +94,13 @@ public interface IWorkshopRepository : IRepository /// /// OperationResult EditAccountLeftWorkAndWorkshopAccounts(List accountIds, long workshopId); + + + #region Pooya + + List GetPersonnelInfoRemastered(long searchModelWorkshopId); + + + #endregion + } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/Employee/CreateEmployeeByClient.cs b/CompanyManagment.App.Contracts/Employee/CreateEmployeeByClient.cs new file mode 100644 index 00000000..29f9346c --- /dev/null +++ b/CompanyManagment.App.Contracts/Employee/CreateEmployeeByClient.cs @@ -0,0 +1,42 @@ +using System.Collections.Generic; +using _0_Framework.Application; +using CompanyManagment.App.Contracts.CustomizeWorkshopSettings; +using CompanyManagment.App.Contracts.EmployeeBankInformation; +using CompanyManagment.App.Contracts.EmployeeDocuments; +using CompanyManagment.App.Contracts.RollCallEmployee; +using CompanyManagment.App.Contracts.RollCallEmployeeStatus; +using Microsoft.Extensions.Logging; + +namespace CompanyManagment.App.Contracts.Employee; + +public class CreateEmployeeByClient +{ + public string NationalCode { get; set; } + public string Nationality { get; set; } + public string Gender { get; set; } + public string FirstName { get; set; } + public string LastName { get; set; } + public string MaritalStatus { get; set; } + public long WorkshopId { get; set; } + public string StartLeftWork { get; set; } + public RollCallUploadEmployeePicture RollCallUploadEmployeePicture { get; set; } + public EditCustomizeEmployeeSettings CreateCustomizeEmployeeSettings { get; set; } + public ICollection EmployeeBankInfos { get; set; } + public bool HasBankInformation { get; set; } + public string PersonnelCode { get; set; } + public long JobId { get; set; } + public List EmployeeDocumentItems { get; set; } + public bool HasEmployeeDocument { get; set; } + public bool HasRollCallService { get; set; } +} + + + +public record RollCallUploadEmployeePicture +{ + public string Picture1 { get; set; } + public string Picture2 { get; set; } + public string EmployeeFullName { get; set; } + public string IsActiveString { get; set; } + public string HasUploadedImage { get; set; } +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/Employee/DTO/ClientLeftWorkWorkEmployeesDto.cs b/CompanyManagment.App.Contracts/Employee/DTO/ClientLeftWorkWorkEmployeesDto.cs new file mode 100644 index 00000000..224a60cd --- /dev/null +++ b/CompanyManagment.App.Contracts/Employee/DTO/ClientLeftWorkWorkEmployeesDto.cs @@ -0,0 +1,12 @@ +namespace CompanyManagment.App.Contracts.Employee; + +public class ClientLeftWorkWorkEmployeesDto +{ + public long EmployeeId { get; set; } + + public long WorkshopId { get; set; } + + public string EmployeeName { get; set; } = string.Empty; + + public string LeftWorkDateTime { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/Employee/DTO/ClientStartedWorkEmployeesDto.cs b/CompanyManagment.App.Contracts/Employee/DTO/ClientStartedWorkEmployeesDto.cs new file mode 100644 index 00000000..61f97c72 --- /dev/null +++ b/CompanyManagment.App.Contracts/Employee/DTO/ClientStartedWorkEmployeesDto.cs @@ -0,0 +1,18 @@ +namespace CompanyManagment.App.Contracts.Employee.DTO; + +/// +/// پرسنل هایی که درسمت ادمین شروع به کار کرده اند +/// +public class ClientStartedWorkEmployeesDto +{ + public long EmployeeId { get; set; } + + public long WorkshopId { get; set; } + + public string EmployeeName { get; set; } = string.Empty; + + /// + /// آیا آپلود مدارک اصلی رو انجام داده یا نه + /// + public bool HasCompleteEmployeeDocument { get; set; } +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/Employee/EditEmployeeInEmployeeDocument.cs b/CompanyManagment.App.Contracts/Employee/EditEmployeeInEmployeeDocument.cs new file mode 100644 index 00000000..6dfbda13 --- /dev/null +++ b/CompanyManagment.App.Contracts/Employee/EditEmployeeInEmployeeDocument.cs @@ -0,0 +1,17 @@ +namespace CompanyManagment.App.Contracts.Employee; + +public class EditEmployeeInEmployeeDocument +{ + public long EmployeeId { get; set; } + public long WorkshopId { get; set; } + public string FName { get; set; } = string.Empty; + public string LName { get; set; } = string.Empty; + public string NationalCode { get; set; } = string.Empty; + public string IdNumber { get; set; } = string.Empty; + public string FatherName { get; set; } = string.Empty; + public string BirthDate { get; set; } = string.Empty; + public string MaritalStatus { get; set; } = string.Empty; + public string MilitaryService { get; set; } = string.Empty; + public string Nationality { get; set; } = string.Empty; + public string Gender { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/Employee/EmployeeByNationalCodeInWorkshopViewModel.cs b/CompanyManagment.App.Contracts/Employee/EmployeeByNationalCodeInWorkshopViewModel.cs new file mode 100644 index 00000000..3e4c10e6 --- /dev/null +++ b/CompanyManagment.App.Contracts/Employee/EmployeeByNationalCodeInWorkshopViewModel.cs @@ -0,0 +1,55 @@ +using System.Collections.Generic; +using System.Security.Cryptography; +using CompanyManagment.App.Contracts.EmployeeDocuments; + +namespace CompanyManagment.App.Contracts.Employee; + +public record EmployeeByNationalCodeInWorkshopViewModel +{ + public string EmployeeFName { get; set; } + public string EmployeeLName { get; set; } + public string Nationality { get; set; } + public string Gender { get; set; } + public string MaritalStatus { get; set; } + public long EmployeeId { get; set; } + public string Picture1 { get; set; } + public string Picture2 { get; set; } + public long PersonnelCode { get; set; } + public List EmployeeBankInfos { get; set; } + public EmployeeByNationalCodeEmployeeDocumentViewModel EmployeeDocument { get; set; } + +} + +public class EmployeeByNationalCodeEmployeeDocumentViewModel +{ + //عکس پرسنل + public EmployeeDocumentItemViewModel EmployeePicture { get; set; } + + //شناسنامه + public EmployeeDocumentItemViewModel IdCardPage1 { get; set; } + public EmployeeDocumentItemViewModel IdCardPage2 { get; set; } + public EmployeeDocumentItemViewModel IdCardPage3 { get; set; } + public EmployeeDocumentItemViewModel IdCardPage4 { get; set; } + + //کارت ملی + public EmployeeDocumentItemViewModel NationalCardFront { get; set; } + + public EmployeeDocumentItemViewModel NationalCardRear { get; set; } + //مدرک تحصیلی + public EmployeeDocumentItemViewModel EducationalDegree { get; set; } + + //کارت پایان خدمت + public EmployeeDocumentItemViewModel MilitaryServiceCard { get; set; } +} + +public class EmployeeByNationalCodeEmployeeBankInfoViewModel +{ + public string BankName { get; set; } + public string BankLogoPath { get; set; } + public string CardNumber { get; set; } + public string ShebaNumber { get; set; } + public string BankAccountNumber { get; set; } + public bool IsDefault { get; set; } + public long BankId { get; set; } + public long BankLogoMediaId { get; set; } +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/Employee/GetEditEmployeeInEmployeeDocumentViewModel.cs b/CompanyManagment.App.Contracts/Employee/GetEditEmployeeInEmployeeDocumentViewModel.cs new file mode 100644 index 00000000..2017623b --- /dev/null +++ b/CompanyManagment.App.Contracts/Employee/GetEditEmployeeInEmployeeDocumentViewModel.cs @@ -0,0 +1,17 @@ +namespace CompanyManagment.App.Contracts.Employee; + +public class GetEditEmployeeInEmployeeDocumentViewModel +{ + public long EmployeeId { get; set; } + public string FName { get; set; } = string.Empty; + public string LName { get; set; } = string.Empty; + public string NationalCode { get; set; } = string.Empty; + public string IdNumber { get; set; } = string.Empty; + public string FatherName { get; set; } = string.Empty; + public string BirthDate { get; set; } = string.Empty; + public string MaritalStatus { get; set; } = string.Empty; + public string MilitaryService { get; set; } = string.Empty; + public string Nationality { get; set; } = string.Empty; + public string Gender { get; set; } = string.Empty; + public bool IsAuthorized { get; set; } +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/Employee/IEmployeeApplication.cs b/CompanyManagment.App.Contracts/Employee/IEmployeeApplication.cs index cc493a21..4ec027f8 100644 --- a/CompanyManagment.App.Contracts/Employee/IEmployeeApplication.cs +++ b/CompanyManagment.App.Contracts/Employee/IEmployeeApplication.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Threading.Tasks; using _0_Framework.Application; +using CompanyManagment.App.Contracts.Employee.DTO; using CompanyManagment.App.Contracts.EmployeeInsuranceRecord; namespace CompanyManagment.App.Contracts.Employee; @@ -44,6 +45,33 @@ public interface IEmployeeApplication List GetWorkingEmployeesByWorkshopId(long workshopId); + EmployeeViewModel GetEmployeeByNationalCodeIfHasLeftWork(string nationalCode, List workshopIds); + #endregion + + #region Mahan + OperationResult CreateEmployeeByClient(CreateEmployeeByClient command); + + /// + /// اطلاعات پرسنل با کد ملی در کارگاه. اگر در کارگاه کار نکرده باشه وجود نداشته باشه اطلاعات خالی داده میشه + /// + /// + /// + /// + /// + Task> + ValidateCreateEmployeeClientByNationalCodeAndWorkshopId(string nationalCode, + string birthDate, long workshopId); + + /// + /// پرسنل هایی که در کارگاهی از سمت ادمین شروع به کار کرده اند + /// + /// + /// + Task> GetClientEmployeesStartWork(long workshopId); + Task> GetEmployeesForLeftWorkTemp(long workshopId); + Task GetEmployeeEditInEmployeeDocumentWorkFlow(long employeeId, + long workshopId); + Task EditEmployeeInEmployeeDocumentWorkFlow(EditEmployeeInEmployeeDocument command); #endregion } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/EmployeeClientTemp/CreateEmployeeClientTemp.cs b/CompanyManagment.App.Contracts/EmployeeClientTemp/CreateEmployeeClientTemp.cs new file mode 100644 index 00000000..e2614c1e --- /dev/null +++ b/CompanyManagment.App.Contracts/EmployeeClientTemp/CreateEmployeeClientTemp.cs @@ -0,0 +1,15 @@ +using System; + +namespace CompanyManagment.App.Contracts.EmployeeClientTemp; + +public class CreateEmployeeClientTemp +{ + public string FName { get; set; } + public string LName { get; set; } + public string NationalCode { get; set; } + public string Nationality { get; set; } + public string MaritalStatus { get; set; } + public long WorkshopId { get; set; } + public long EmployeeId { get; set; } + public DateTime StartWorkTime { get; set; } +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/EmployeeClientTemp/IEmployeeClientTempApplication.cs b/CompanyManagment.App.Contracts/EmployeeClientTemp/IEmployeeClientTempApplication.cs new file mode 100644 index 00000000..cc34e161 --- /dev/null +++ b/CompanyManagment.App.Contracts/EmployeeClientTemp/IEmployeeClientTempApplication.cs @@ -0,0 +1,26 @@ +using System; +using _0_Framework_b.Application; + +namespace CompanyManagment.App.Contracts.EmployeeClientTemp; + +public interface IEmployeeClientTempApplication +{ + OperationResult Create(CreateEmployeeClientTemp command); + + EmployeeClientTempGetDetailsViewModel GetDetails(long employeeId, long workshopId); + +} + +public class EmployeeClientTempGetDetailsViewModel +{ + public long WorkshopId { get; set; } + public long EmployeeId { get; set; } + public string StartWorkDate { get; set; } + public string FName { get; set; } + public string LName { get; set; } + + public string FullName => $"{FName} {LName}"; + public string NationalCode { get; set; } + public string Nationality { get; set; } + +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/EmployeeDocuments/IEmployeeDocumentsApplication.cs b/CompanyManagment.App.Contracts/EmployeeDocuments/IEmployeeDocumentsApplication.cs index 2b14209e..29d99e89 100644 --- a/CompanyManagment.App.Contracts/EmployeeDocuments/IEmployeeDocumentsApplication.cs +++ b/CompanyManagment.App.Contracts/EmployeeDocuments/IEmployeeDocumentsApplication.cs @@ -12,7 +12,7 @@ namespace CompanyManagment.App.Contracts.EmployeeDocuments OperationResult AddEmployeeDocumentItemForAdmin(AddEmployeeDocumentItem command); - OperationResult AddRangeEmployeeDocumentItems(long workshopId, long employeeId, + OperationResult AddRangeEmployeeDocumentItemsByClient(long workshopId, long employeeId, List command); /// @@ -49,10 +49,16 @@ namespace CompanyManagment.App.Contracts.EmployeeDocuments List GetByWorkshopIdWithItemsForAdminWorkFlow(long workshopId); List GetDocumentsAwaitingReviewByWorkshopIdForCheckerWorkFlow(long workshopId); - int GetAdminWorkFlowCountForSubmittedAndRejectedDocuments(List workshopIds); - //int GetAdminWorkFlowCountForNewEmployees(List workshopIds); + Task GetAdminWorkFlowCountForSubmittedAndRejectedDocuments(List workshopIds); + Task GetAdminWorkFlowCountForNewEmployees(List workshopIds); OperationResult RemoveByAdmin(long documentItemId); - int GetCheckerWorkFlowCount(); + Task GetCheckerWorkFlowCount(); + + /// + /// برای افزودن یکباره مدارک در افزودن پرسنل توسط ادمین + /// + OperationResult AddRangeEmployeeDocumentItemsByAdmin(long workshopId, long employeeId, + List command); } } diff --git a/CompanyManagment.App.Contracts/LeftWorkTemp/CreateLeftWorkTemp.cs b/CompanyManagment.App.Contracts/LeftWorkTemp/CreateLeftWorkTemp.cs new file mode 100644 index 00000000..3e0caf08 --- /dev/null +++ b/CompanyManagment.App.Contracts/LeftWorkTemp/CreateLeftWorkTemp.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace CompanyManagment.App.Contracts.LeftWorkTemp; + +public class CreateLeftWorkTemp +{ + public List EmployeeIds { get; set; } + public long WorkshopId { get; set; } + public string LeftWorkTime { get; set; } + public string LastDayStanding { get; set; } +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/LeftWorkTemp/CreateLeftWorkTempSingleViewModel.cs b/CompanyManagment.App.Contracts/LeftWorkTemp/CreateLeftWorkTempSingleViewModel.cs new file mode 100644 index 00000000..5fb889ec --- /dev/null +++ b/CompanyManagment.App.Contracts/LeftWorkTemp/CreateLeftWorkTempSingleViewModel.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; + +namespace CompanyManagment.App.Contracts.LeftWorkTemp; + +public class CreateLeftWorkTempSingleViewModel +{ + public string EmployeeFullName { get; set; } + public List EmployeeIds { get; set; } +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/LeftWorkTemp/ILeftWorkTempApplication.cs b/CompanyManagment.App.Contracts/LeftWorkTemp/ILeftWorkTempApplication.cs new file mode 100644 index 00000000..a6e27982 --- /dev/null +++ b/CompanyManagment.App.Contracts/LeftWorkTemp/ILeftWorkTempApplication.cs @@ -0,0 +1,71 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using _0_Framework.Application; +using CompanyManagment.App.Contracts.LeftWork; + +namespace CompanyManagment.App.Contracts.LeftWorkTemp; + +public interface ILeftWorkTempApplication +{ + Task Create(CreateLeftWorkTemp command); + + /// + /// گرفتن اطلاعات برای مودال جزئیات شروع به کار موقت یا ترک کار موقت + /// + /// + /// + /// + Task GetStartAndLeftWorkDetails(long employeeId,long workshopId); + + /// + /// تایید شروع به کار موقت + /// + /// + /// + Task AcceptStartWork(AcceptStartWorkTemp command); + + /// + /// تایید ترک کار موقت + /// + /// + /// + Task AcceptLeftWork(AcceptLeftWorkTemp command); +} + +public class AcceptLeftWorkTemp +{ + public long LeftWorkTempId { get; set; } + public string LeftWorkTime { get; set; } + public string LastDayStanding { get; set; } +} + +public class AcceptStartWorkTemp +{ + public long LeftWorkTempId { get; set; } + public string StartDateTime { get; set; } + public long JobId { get; set; } +} + + + + +public class GetStartWorkTempDetails +{ + public LeftWorkTempDetailsViewModel LeftWorkTemp { get; set; } + public List PreviousLeftWorks { get; set; } + public long JobId { get; set; } + public string JobName { get; set; } + public long WorkshopId { get; set; } + public string WorkshopFullName { get; set; } + public string EmployeeFullName { get; set; } + public long EmployeeId { get; set; } + public long PersonnelCode { get; set; } +} + +public class LeftWorkTempDetailsViewModel +{ + public long Id { get; set; } + public string StartWork { get; set; } + public string LeftWork { get; set; } + public string LastDayStanding { get; set; } +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/LeftWorkTemp/LeftWorkTempType.cs b/CompanyManagment.App.Contracts/LeftWorkTemp/LeftWorkTempType.cs new file mode 100644 index 00000000..3cb198e2 --- /dev/null +++ b/CompanyManagment.App.Contracts/LeftWorkTemp/LeftWorkTempType.cs @@ -0,0 +1,14 @@ +namespace CompanyManagment.App.Contracts.LeftWorkTemp; + +public enum LeftWorkTempType +{ + /// + /// شروع به کار کرده + /// + StartWork, + + /// + /// ترک کار کرده + /// + LeftWork +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/PersonnleCode/IPersonnelCodeApplication.cs b/CompanyManagment.App.Contracts/PersonnleCode/IPersonnelCodeApplication.cs index 3fbd286b..b7c08647 100644 --- a/CompanyManagment.App.Contracts/PersonnleCode/IPersonnelCodeApplication.cs +++ b/CompanyManagment.App.Contracts/PersonnleCode/IPersonnelCodeApplication.cs @@ -16,5 +16,7 @@ public interface IPersonnelCodeApplication List Search(PersonnelCodeSearchModel searchModel); PersonnelCodeViewModel GetPersonnelCodeViewModel(PersonnelCodeSearchModel searchModel); long GetEmployeeIdByPersonelCode(long personleCode, long workshopId); + long GetLastPersonnelCodeByWorkshop(long workshopId); + } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/RollCallEmployee/RollCallEmployeeViewModel.cs b/CompanyManagment.App.Contracts/RollCallEmployee/RollCallEmployeeViewModel.cs index 5894322f..e03f42fa 100644 --- a/CompanyManagment.App.Contracts/RollCallEmployee/RollCallEmployeeViewModel.cs +++ b/CompanyManagment.App.Contracts/RollCallEmployee/RollCallEmployeeViewModel.cs @@ -34,4 +34,5 @@ public class RollCallEmployeeViewModel : EditRollCallEmployee public string EmployeeLName { get; set; } public string EmployeeFName { get; set; } public long RollCallEmployeeId { get; set; } + public bool CreatedByClient { get; set; } } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/RollCallService/IRollCallServiceApplication.cs b/CompanyManagment.App.Contracts/RollCallService/IRollCallServiceApplication.cs index 535d0912..6fbdb409 100644 --- a/CompanyManagment.App.Contracts/RollCallService/IRollCallServiceApplication.cs +++ b/CompanyManagment.App.Contracts/RollCallService/IRollCallServiceApplication.cs @@ -19,4 +19,5 @@ public interface IRollCallServiceApplication List GetActiveServiceByAccountId(long accountId); List GetAllServiceByAccountId(long accountId); + bool IsExistActiveServiceByWorkshopId(long workshopId); } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/Workshop/DTOs/WorkshopWithLeftWorkTempEmployeesDto.cs b/CompanyManagment.App.Contracts/Workshop/DTOs/WorkshopWithLeftWorkTempEmployeesDto.cs new file mode 100644 index 00000000..f57e2abc --- /dev/null +++ b/CompanyManagment.App.Contracts/Workshop/DTOs/WorkshopWithLeftWorkTempEmployeesDto.cs @@ -0,0 +1,24 @@ +namespace CompanyManagment.App.Contracts.Workshop; + +public class WorkshopWithLeftWorkTempEmployeesDto +{ + /// + /// آیدی کارگاه + /// + public long WorkshopId { get; set; } + + /// + /// نام کارگاه + /// + public string WorkshopName { get; set; } = string.Empty; + + /// + /// نام کارفرما + /// + public string EmployerName { get; set; } = string.Empty; + + /// + /// تعداد پرسنل ترک کار کرده + /// + public int LeftWorkEmployees { get; set; } +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/Workshop/DTOs/WorkshopWithStartedEmployeesDTO.cs b/CompanyManagment.App.Contracts/Workshop/DTOs/WorkshopWithStartedEmployeesDTO.cs new file mode 100644 index 00000000..60e2ae2d --- /dev/null +++ b/CompanyManagment.App.Contracts/Workshop/DTOs/WorkshopWithStartedEmployeesDTO.cs @@ -0,0 +1,27 @@ +namespace CompanyManagment.App.Contracts.Workshop.DTOs; + +/// +/// کارگاه هایی که از کلاینت، پرسنلی را شروع به کار زدند +/// +public class WorkshopWithStartedEmployeesDto +{ + /// + /// آیدی کارگاه + /// + public long WorkshopId { get; set; } + + /// + /// نام کارگاه + /// + public string WorkshopName { get; set; } = string.Empty; + + /// + /// نام کارفرما + /// + public string EmployerName { get; set; } = string.Empty; + + /// + /// تعداد پرسنل اضافه شده + /// + public int AddedEmployeesCount { get; set; } +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/Workshop/IWorkshopApplication.cs b/CompanyManagment.App.Contracts/Workshop/IWorkshopApplication.cs index 73d34584..d30257e3 100644 --- a/CompanyManagment.App.Contracts/Workshop/IWorkshopApplication.cs +++ b/CompanyManagment.App.Contracts/Workshop/IWorkshopApplication.cs @@ -1,7 +1,9 @@ using System.Collections.Generic; using System.Runtime.InteropServices; +using System.Threading.Tasks; using _0_Framework.Application; using AccountManagement.Application.Contracts.Account; +using CompanyManagment.App.Contracts.Workshop.DTOs; namespace CompanyManagment.App.Contracts.Workshop; @@ -54,6 +56,11 @@ public interface IWorkshopApplication #endregion + #region Pooya + + List GetPersonnelInfoRemastered(PersonnelInfoSearchModel searchModel); + #endregion + #region Vafa List PrintWorkshopList(WorkshopSearchModel searchModel); @@ -70,5 +77,14 @@ public interface IWorkshopApplication /// List GetWorkshopSelectListInsuransce(); - #endregion + #endregion + + #region Mahan + Task> GetWorkshopsForEmployeeStartWork(long accountId); + Task GetWorkshopsForEmployeeStartWorkCount(long accountId); + + Task> GetWorkshopsForLeftWorkTemp(long accountId); + Task GetWorkshopsForLeftWorkTempCount(long accountId); + + #endregion } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/Workshop/PersonnelInfoViewModel.cs b/CompanyManagment.App.Contracts/Workshop/PersonnelInfoViewModel.cs index 42c32f31..5ad7473f 100644 --- a/CompanyManagment.App.Contracts/Workshop/PersonnelInfoViewModel.cs +++ b/CompanyManagment.App.Contracts/Workshop/PersonnelInfoViewModel.cs @@ -43,4 +43,6 @@ public class PersonnelInfoViewModel public bool Black { get; set; } public DateTime StartWork { get; set; } public DateTime LeftWork { get; set; } + public bool CreatedByClient { get; set; } + public bool LefWorkTemp { get; set; } } \ No newline at end of file diff --git a/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs b/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs index 66a1590b..1e420fa3 100644 --- a/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs +++ b/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs @@ -396,7 +396,12 @@ public class CustomizeWorkshopSettingsApplication(ICustomizeWorkshopSettingsRepo if (previousEnd != new DateTime()) { - if (newShift.start <= previousEnd) + if (newShift.start == previousEnd) + { + return op.Failed("در شیفت منظم پایان شیفت نمیتواند با شروع شیفت بعدی برابر باشد"); + } + + if (newShift.start <= previousEnd) { newShift.start = newShift.start.AddDays(1); } diff --git a/CompanyManagment.Application/EmployeeAplication.cs b/CompanyManagment.Application/EmployeeAplication.cs index 034df39d..29db332f 100644 --- a/CompanyManagment.Application/EmployeeAplication.cs +++ b/CompanyManagment.Application/EmployeeAplication.cs @@ -1,4 +1,5 @@ using System; +using System.IO; using System.Collections.Generic; using _0_Framework.InfraStructure; using Company.Domain.EmployeeAgg; @@ -10,6 +11,24 @@ using Company.Domain.EmployeeInsuranceRecordAgg; using Company.Domain.WorkshopAgg; using System.Linq; using System.Threading.Tasks; +using Company.Domain.PersonnelCodeAgg; +using CompanyManagment.App.Contracts.CustomizeWorkshopSettings; +using CompanyManagment.App.Contracts.EmployeeBankInformation; +using CompanyManagment.App.Contracts.EmployeeDocuments; +using CompanyManagment.App.Contracts.RollCallEmployeeStatus; +using Microsoft.AspNetCore.Hosting; +using System.IO; +using System.Transactions; +using Company.Domain.EmployeeClientTempAgg; +using Company.Domain.LeftWorkTempAgg; +using CompanyManagment.App.Contracts.LeftWorkTemp; +using _0_Framework.Application.UID; +using Company.Domain.CustomizeWorkshopEmployeeSettingsAgg; +using Company.Domain.EmployeeDocumentsAgg; +using Company.Domain.RollCallEmployeeAgg; +using Company.Domain.CustomizeWorkshopGroupSettingsAgg; +using Company.Domain.LeftWorkAgg; +using CompanyManagment.App.Contracts.Employee.DTO; namespace CompanyManagment.Application; @@ -25,11 +44,39 @@ public class EmployeeAplication : RepositoryBase, IEmployeeAppli public bool StatCity = true; public bool city = true; public bool address = true; + private readonly IWebHostEnvironment _webHostEnvironment; + private readonly IRollCallEmployeeStatusApplication _rollCallEmployeeStatusApplication; + private readonly IRollCallEmployeeRepository _rollCallEmployeeRepository; + private readonly ICustomizeWorkshopSettingsApplication _customizeWorkshopSettingsApplication; + private readonly IEmployeeDocumentsApplication _employeeDocumentsApplication; + private readonly IEmployeeDocumentsRepository _employeeDocumentsRepository; + private readonly IEmployeeBankInformationApplication _employeeBankInformationApplication; + private readonly ILeftWorkTempRepository _leftWorkTempRepository; + private readonly IUidService _uidService; + private readonly ICustomizeWorkshopEmployeeSettingsRepository _customizeWorkshopEmployeeSettingsRepository; + private readonly ILeftWorkRepository _leftWorkRepository; + private readonly IPersonnelCodeRepository _personnelCodeRepository; + private readonly IEmployeeClientTempRepository _employeeClientTempRepository; + private readonly ICustomizeWorkshopGroupSettingsRepository _customizeWorkshopGroupSettingsRepository; - public EmployeeAplication(IEmployeeRepository employeeRepository, CompanyContext context, IWorkshopRepository workShopRepository) : base(context) + public EmployeeAplication(IEmployeeRepository employeeRepository, CompanyContext context, IWorkshopRepository workShopRepository, IWebHostEnvironment webHostEnvironment, IRollCallEmployeeStatusApplication rollCallEmployeeStatusApplication, IRollCallEmployeeRepository rollCallEmployeeRepository, ICustomizeWorkshopSettingsApplication customizeWorkshopSettingsApplication, IEmployeeDocumentsApplication employeeDocumentsApplication, IEmployeeDocumentsRepository employeeDocumentsRepository, IEmployeeBankInformationApplication employeeBankInformationApplication, ILeftWorkTempRepository leftWorkTempRepository, IUidService uidService, ICustomizeWorkshopEmployeeSettingsRepository customizeWorkshopEmployeeSettingsRepository, IPersonnelCodeRepository personnelCodeRepository, IEmployeeClientTempRepository employeeClientTempRepository, ICustomizeWorkshopGroupSettingsRepository customizeWorkshopGroupSettingsRepository, ILeftWorkRepository leftWorkRepository) : base(context) { _context = context; _WorkShopRepository = workShopRepository; + _webHostEnvironment = webHostEnvironment; + _rollCallEmployeeStatusApplication = rollCallEmployeeStatusApplication; + _rollCallEmployeeRepository = rollCallEmployeeRepository; + _customizeWorkshopSettingsApplication = customizeWorkshopSettingsApplication; + _employeeDocumentsApplication = employeeDocumentsApplication; + _employeeDocumentsRepository = employeeDocumentsRepository; + _employeeBankInformationApplication = employeeBankInformationApplication; + _leftWorkTempRepository = leftWorkTempRepository; + _uidService = uidService; + _customizeWorkshopEmployeeSettingsRepository = customizeWorkshopEmployeeSettingsRepository; + _personnelCodeRepository = personnelCodeRepository; + _employeeClientTempRepository = employeeClientTempRepository; + _customizeWorkshopGroupSettingsRepository = customizeWorkshopGroupSettingsRepository; + _leftWorkRepository = leftWorkRepository; _EmployeeRepository = employeeRepository; } @@ -861,6 +908,13 @@ public class EmployeeAplication : RepositoryBase, IEmployeeAppli return workshopEmployeesWithLeftWork.FirstOrDefault(); } + public EmployeeViewModel GetEmployeeByNationalCodeIfHasLeftWork(string nationalCode, List workshopIds) + { + if (nationalCode.NationalCodeValid() != "valid") + return new(); + var workshopEmployeesWithLeftWork = _EmployeeRepository.GetWorkedEmployeesByWorkshopIdsAndNationalCodeAndDate(workshopIds, nationalCode, DateTime.Now.Date); + return workshopEmployeesWithLeftWork.FirstOrDefault(); + } public List GetWorkingEmployeesByWorkshopId(long workshopId) { return _EmployeeRepository.GetWorkingEmployeesByWorkshopId(workshopId); @@ -902,4 +956,547 @@ public class EmployeeAplication : RepositoryBase, IEmployeeAppli } #endregion + + #region Mahan + public OperationResult CreateEmployeeByClient(CreateEmployeeByClient command) + { + OperationResult op = new(); + + if (command.Gender != "مرد" && command.Gender != "زن") + return op.Failed("جنسیت را انتخاب کنید"); + + if (string.IsNullOrWhiteSpace(command.FirstName) || string.IsNullOrWhiteSpace(command.LastName)) + return op.Failed("نام نمی تواند خالی باشد"); + + if (command.MaritalStatus != "مجرد" && command.MaritalStatus != "متاهل") + return op.Failed("وضعیت تاهل نمی تواند خالی باشد"); + + bool isNationalCardValid = command.NationalCode?.NationalCodeValid() == "valid"; + if (isNationalCardValid == false) + return op.Failed("کد ملی وارد شده معتبر نمی باشد"); + + if (command.Nationality != "ایرانی") + return op.Failed("خطای سیستمی"); + + if (!_WorkShopRepository.Exists(x => x.id == command.WorkshopId)) + { + return op.Failed("کارگاه نامعتبر است"); + } + + using var transaction = new TransactionScope(); + + //if (_EmployeeRepository.ExistsIgnoreQueryFilter(x => x.NationalCode == command.NationalCode && x.EmployeeType == EmployeeType.CreatedByClient)) + //{ + // return op.Failed("این پرسنل قبلا افزوده شده است و در انتظار تایید میباشد"); + //} + + var employee = _EmployeeRepository.GetByNationalCodeIgnoreQueryFilter(command.NationalCode); + var workshop = _WorkShopRepository.GetDetails(command.WorkshopId); + if (employee == null) + { + return op.Failed("خطای سیستمی. لطفا دوباره تلاش کنید . درصورت تکرار این مشکل با تیم پشتیبان تماس بگیرید"); + } + + if (_leftWorkTempRepository.Exists(x => + x.EmployeeId == employee.id && x.WorkshopId == command.WorkshopId && x.LeftWorkType == LeftWorkTempType.StartWork)) + { + return op.Failed("این پرسنل در کارگاه شما قبلا افزوده شده است و در انتظار تایید میباشد"); + } + + var startLeftWork = command.StartLeftWork.ToGeorgianDateTime(); + + var leftWorkViewModel = _leftWorkRepository.GetLastLeftWorkByEmployeeIdAndWorkshopId(command.WorkshopId, employee.id); + PersonnelCodeDomain personnelCode = null; + if (leftWorkViewModel != null) + { + if (leftWorkViewModel.HasLeft == false && leftWorkViewModel.LeftWorkDate > DateTime.Now) + { + return op.Failed("شما نمیتوانید پرسنلی که در کارگاه شما در حال کار است را ایجاد کنید"); + } + + if (leftWorkViewModel.LeftWorkDate > startLeftWork) + { + return op.Failed("شما نمیتوانید قبل از بازه ترک کار قبلی پرسنل شروع به کاری ثبت کنید"); + } + } + else + { + var lastPersonnelCodeByWorkshop = _personnelCodeRepository.GetLastPersonnelCodeByWorkshop(command.WorkshopId); + + personnelCode = new PersonnelCodeDomain(command.WorkshopId, + employee.id, lastPersonnelCodeByWorkshop + 1); + } + + var leftWorkTemp = LeftWorkTemp.CreateStartWork(command.WorkshopId, employee.id, startLeftWork, command.JobId); + _leftWorkTempRepository.Create(leftWorkTemp); + _leftWorkTempRepository.SaveChanges(); + + + if (personnelCode != null) + { + _personnelCodeRepository.Create(personnelCode); + _personnelCodeRepository.SaveChanges(); + } + + + if (string.IsNullOrWhiteSpace(command.RollCallUploadEmployeePicture?.Picture1) == false && + string.IsNullOrWhiteSpace(command.RollCallUploadEmployeePicture?.Picture2) == false) + { + var directoryPath = $"{_webHostEnvironment.ContentRootPath}\\Faces\\{command.WorkshopId}\\{employee.id}"; + if (!Directory.Exists(directoryPath)) + Directory.CreateDirectory(directoryPath); + + var filePath1 = Path.Combine(directoryPath) + $@"\1.jpg"; + + CreateImageFromBase64(command.RollCallUploadEmployeePicture.Picture1, filePath1); + + + var filePath2 = Path.Combine(directoryPath) + $@"\2.jpg"; + + CreateImageFromBase64(command.RollCallUploadEmployeePicture.Picture2, filePath2); + + + + var rollCallEmployee = + _rollCallEmployeeRepository.GetBy(employee.id, command.WorkshopId); + + if (rollCallEmployee == null) + { + if (_employeeClientTempRepository.Exists(x => + x.EmployeeId == employee.id && x.WorkshopId == command.WorkshopId)) + { + //var employeeTemp = + // _employeeClientTempRepository.GetByEmployeeIdAndWorkshopId(employee.id, command.WorkshopId); + + rollCallEmployee = new RollCallEmployee(command.WorkshopId, employee.id, employee.FName, + employee.LName); + } + else + { + rollCallEmployee = + new RollCallEmployee(command.WorkshopId, employee.id, employee.FName, employee.LName); + } + + rollCallEmployee.HasImage(); + _rollCallEmployeeRepository.Create(rollCallEmployee); + _rollCallEmployeeRepository.SaveChanges(); + + } + + + + if (command.CreateCustomizeEmployeeSettings.GroupId > 0) + { + if (_customizeWorkshopEmployeeSettingsRepository + .Exists(x => x.WorkshopId == workshop.Id && x.EmployeeId == employee.id)) + { + _customizeWorkshopEmployeeSettingsRepository.RemoveByWorkshopIdAndEmployeeId(workshop.Id, employee.id); + } + + command.CreateCustomizeEmployeeSettings.EmployeeIds = [employee.id]; + command.CreateCustomizeEmployeeSettings.WorkshopId = command.WorkshopId; + var resultCreateEmployeeSettings = + _customizeWorkshopSettingsApplication.CreateEmployeesSettingsAndSetChanges( + command.CreateCustomizeEmployeeSettings); + if (resultCreateEmployeeSettings.IsSuccedded == false) + { + return resultCreateEmployeeSettings; + } + + var rollCallEmployeeStatusResult = _rollCallEmployeeStatusApplication.Create( + new CreateRollCallEmployeeStatus() { RollCallEmployeeId = rollCallEmployee.id }); + + if (rollCallEmployeeStatusResult.IsSuccedded == false) + { + return rollCallEmployeeStatusResult; + } + } + } + else if (command.CreateCustomizeEmployeeSettings.GroupId > 0) + { + if (_customizeWorkshopEmployeeSettingsRepository + .Exists(x => x.WorkshopId == workshop.Id && x.EmployeeId == employee.id)) + { + _customizeWorkshopEmployeeSettingsRepository.RemoveByWorkshopIdAndEmployeeId(workshop.Id, employee.id); + } + + command.CreateCustomizeEmployeeSettings.EmployeeIds = [employee.id]; + command.CreateCustomizeEmployeeSettings.WorkshopId = command.WorkshopId; + var resultCreateEmployeeSettings = + _customizeWorkshopSettingsApplication.CreateEmployeesSettingsAndSetChanges( + command.CreateCustomizeEmployeeSettings); + if (resultCreateEmployeeSettings.IsSuccedded == false) + { + return resultCreateEmployeeSettings; + } + + + var rollCallEmployee = + _rollCallEmployeeRepository.GetBy(employee.id, command.WorkshopId); + + if (rollCallEmployee == null) + { + if (_employeeClientTempRepository.Exists(x => + x.EmployeeId == employee.id && x.WorkshopId == command.WorkshopId)) + { + + rollCallEmployee = new RollCallEmployee(command.WorkshopId, employee.id, employee.FName, + employee.LName); + } + else + { + rollCallEmployee = + new RollCallEmployee(command.WorkshopId, employee.id, employee.FName, employee.LName); + } + _rollCallEmployeeRepository.Create(rollCallEmployee); + _rollCallEmployeeRepository.SaveChanges(); + + } + } + + + command.EmployeeDocumentItems = command.EmployeeDocumentItems ?? []; + + var employeeDocumentResult = _employeeDocumentsApplication.AddRangeEmployeeDocumentItemsByClient(command.WorkshopId, + employee.id, command.EmployeeDocumentItems); + + if (employeeDocumentResult.IsSuccedded == false) + { + return employeeDocumentResult; + } + + + var employeeTemp = new EmployeeClientTemp(command.WorkshopId, startLeftWork, employee.id, + command.MaritalStatus, employee.FullName); + + _employeeClientTempRepository.Create(employeeTemp); + _employeeClientTempRepository.SaveChanges(); + + if (command.HasBankInformation) + { + + var employeeBankInfos = command.EmployeeBankInfos.Select(x => new CreateEmployeeInformation + { + WorkshopId = command.WorkshopId, + BankAccountNumber = x.BankAccountNumber, + BankId = x.BankId, + CardNumber = x.CardNumber, + EmployeeId = employee.id, + EmployeeName = employee.FullName, + ShebaNumber = x.ShebaNumber + }).ToList(); + + var employeeBankInformationResult = + _employeeBankInformationApplication.GroupCreate(command.WorkshopId, employeeBankInfos); + + if (employeeBankInformationResult.IsSuccedded == false) + { + return employeeBankInformationResult; + } + + } + + + transaction.Complete(); + return op.Succcedded(employee.id); + } + + private void CreateImageFromBase64(string picture, string filePath) + { + var subBase64 = picture.Substring(picture.LastIndexOf(',') + 1); + byte[] bytes = Convert.FromBase64String(subBase64); + System.IO.File.WriteAllBytes(filePath, bytes); + } + public async Task> + ValidateCreateEmployeeClientByNationalCodeAndWorkshopId(string nationalCode, string birthDate, long workshopId) + { + var op = new OperationResult(); + + if (nationalCode.NationalCodeValid() != "valid") + { + return op.Failed("کد ملی معتبر نمیباشد"); + } + + if (birthDate.TryToGeorgianDateTime(out _) == false) + { + return op.Failed("تاریخ تولد معتبر نمیباشد"); + } + + var employee = _EmployeeRepository.GetByNationalCodeIgnoreQueryFilter(nationalCode); + + if (employee == null) + { + var personalInfo = await _uidService.GetPersonalInfo(nationalCode, birthDate); + if (personalInfo.ResponseContext.Status.Code != 0) + { + return op.Failed("کد ملی و تاریخ تولد با هم همخانی ندارند"); + } + + var basicInfo = personalInfo.BasicInformation; + var identityInfo = personalInfo.IdentificationInformation; + DateTime apiBirthDate = identityInfo.BirthDate.ToGeorgianDateTime(); + + var dateOfIssue = new DateTime(1922, 1, 1); + + var gender = basicInfo.GenderEnum switch + { + Gender.Female => "زن", + Gender.Male => "مرد", + _ => throw new AggregateException() + }; + + var idNumber = identityInfo.ShenasnamehNumber == "0" ? identityInfo.NationalId : identityInfo.ShenasnamehNumber; + + var newEmployee = new Employee(basicInfo.FirstName, basicInfo.LastName, basicInfo.FatherName, apiBirthDate, + dateOfIssue, null, identityInfo.NationalId, idNumber, gender, "ایرانی"); + newEmployee.Authorized(); + await _EmployeeRepository.CreateAsync(newEmployee); + await _context.SaveChangesAsync(); + + return op.Succcedded(new EmployeeByNationalCodeInWorkshopViewModel() + { + EmployeeId = newEmployee.id, + EmployeeFName = newEmployee.FName, + Gender = newEmployee.Gender, + Nationality = newEmployee.Nationality, + EmployeeLName = newEmployee.LName + }); + } + + if (_leftWorkTempRepository.ExistsIgnoreQueryFilter(x => + x.EmployeeId == employee.id && x.WorkshopId == workshopId && x.LeftWorkType == LeftWorkTempType.StartWork)) + { + return op.Failed("این پرسنل در کارگاه شما قبلا افزوده شده است و در انتظار تایید میباشد"); + } + + if (employee.IsAuthorized == false) + { + var personalInfoResponse = await _uidService.GetPersonalInfo(nationalCode, birthDate); + + if (personalInfoResponse.ResponseContext.Status.Code == 0) + { + var basicInfo = personalInfoResponse.BasicInformation; + var identityInfo = personalInfoResponse.IdentificationInformation; + var apiBirthDate = identityInfo.BirthDate.ToGeorgianDateTime(); + + var gender = basicInfo.GenderEnum switch + { + Gender.Female => "زن", + Gender.Male => "مرد", + _ => throw new AggregateException() + }; + + var idNumber = identityInfo.ShenasnamehNumber == "0" ? identityInfo.NationalId : identityInfo.ShenasnamehNumber; + + + employee.Edit(basicInfo.FirstName, basicInfo.LastName, basicInfo.FatherName, apiBirthDate, + employee.DateOfIssue, employee.PlaceOfIssue, identityInfo.NationalId, idNumber, + gender, "ایرانی", employee.Phone, employee.Address, employee.State, employee.City, + employee.MaritalStatus, employee.MilitaryService, employee.LevelOfEducation, + employee.FieldOfStudy, employee.BankCardNumber, employee.BankBranch, employee.InsuranceCode, employee.InsuranceHistoryByYear, + employee.InsuranceHistoryByMonth, employee.NumberOfChildren, + employee.OfficePhone, employee.MclsUserName, employee.MclsPassword, + employee.EserviceUserName, employee.EservicePassword, employee.TaxOfficeUserName, + employee.TaxOfficepassword, employee.SanaUserName, employee.SanaPassword); + + employee.Authorized(); + + await _EmployeeRepository.SaveChangesAsync(); + + } + else + { + return op.Failed("کد ملی با تاریخ تولد وارد شده مطابقت ندارد"); + } + } + else if (employee.DateOfBirth.ToFarsi() != birthDate || employee.NationalCode != nationalCode) + { + return op.Failed("کد ملی با تاریخ تولد وارد شده مطابقت ندارد"); + } + + var leftWorkViewModel = _leftWorkRepository.GetLastLeftWorkByEmployeeIdAndWorkshopId(workshopId, employee.id); + if (leftWorkViewModel == null) + { + return op.Succcedded(new EmployeeByNationalCodeInWorkshopViewModel() + { + EmployeeId = employee.id, + EmployeeFName = employee.FName, + Gender = employee.Gender, + Nationality = employee.Nationality, + EmployeeLName = employee.LName + }); ; + } + + if (leftWorkViewModel.LeftWorkDate >= DateTime.Now || !leftWorkViewModel.HasLeft) + return op.Failed("این پرسنل در کارگاه شما در حال کار است"); + + var rollCallEmployee = _rollCallEmployeeRepository.GetBy(employee.id, workshopId); + + string picture1 = string.Empty; + string picture2 = string.Empty; + + if (rollCallEmployee != null) + { + var directoryPath = $"{_webHostEnvironment.ContentRootPath}\\Faces\\{workshopId}\\{employee.id}"; + if (Directory.Exists(directoryPath)) + { + var filePath1 = Path.Combine(directoryPath, @"1.jpg"); + var filePath2 = Path.Combine(directoryPath, @"2.jpg"); + + if (System.IO.File.Exists(filePath1)) + { + byte[] imageBytes1 = await System.IO.File.ReadAllBytesAsync(filePath1); + picture1 = Convert.ToBase64String(imageBytes1); + } + + if (System.IO.File.Exists(filePath2)) + { + byte[] imageBytes2 = await System.IO.File.ReadAllBytesAsync(filePath2); + picture2 = Convert.ToBase64String(imageBytes2); + } + } + + } + + var personnelCode = _personnelCodeRepository.GetPSCodeByWorkshopIdAndEmployeeId(workshopId, employee.id); + + var bankInformationViewModel = _employeeBankInformationApplication.GetByEmployeeId(workshopId, employee.id); + + var employeeDocumentsViewModel = _employeeDocumentsApplication.GetDetailsForClient(employee.id, workshopId); + + + return op.Succcedded(new EmployeeByNationalCodeInWorkshopViewModel + { + EmployeeId = employee.id, + EmployeeFName = employee.FName, + EmployeeLName = employee.LName, + Nationality = employee.Nationality, + MaritalStatus = employee.MaritalStatus, + Gender = employee.Gender, + Picture1 = picture1, + Picture2 = picture2, + PersonnelCode = personnelCode, + EmployeeBankInfos = bankInformationViewModel.BankInformation.Select(x => new EmployeeByNationalCodeEmployeeBankInfoViewModel + { + ShebaNumber = x.ShebaNumber, + IsDefault = x.IsDefault, + CardNumber = x.CardNumber, + BankAccountNumber = x.BankAccountNumber, + BankId = x.BankId, + BankLogoMediaId = x.BankLogoMediaId, + BankLogoPath = x.BankLogoPath, + BankName = x.BankName + }).ToList(), + EmployeeDocument = new EmployeeByNationalCodeEmployeeDocumentViewModel + { + EducationalDegree = employeeDocumentsViewModel.EducationalDegree, + EmployeePicture = employeeDocumentsViewModel.EmployeePicture, + IdCardPage1 = employeeDocumentsViewModel.IdCardPage1, + IdCardPage2 = employeeDocumentsViewModel.IdCardPage2, + IdCardPage3 = employeeDocumentsViewModel.IdCardPage3, + IdCardPage4 = employeeDocumentsViewModel.IdCardPage4, + MilitaryServiceCard = employeeDocumentsViewModel.MilitaryServiceCard, + NationalCardFront = employeeDocumentsViewModel.NationalCardFront, + NationalCardRear = employeeDocumentsViewModel.NationalCardRear + } + }); + } + + public async Task> GetClientEmployeesStartWork(long workshopId) + { + return await _EmployeeRepository.GetClientEmployeesStartWork(workshopId); + } + + public async Task> GetEmployeesForLeftWorkTemp(long workshopId) + { + return await _EmployeeRepository.GetEmployeesForLeftWorkTemp(workshopId); + } + + public async Task GetEmployeeEditInEmployeeDocumentWorkFlow( + long employeeId, + long workshopId) + { + return await _EmployeeRepository.GetEmployeeEditInEmployeeDocumentWorkFlow(employeeId, workshopId); + } + + public async Task EditEmployeeInEmployeeDocumentWorkFlow(EditEmployeeInEmployeeDocument command) + { + var op = new OperationResult(); + + if (command.MaritalStatus is not ("مجرد" or "متاهل")) + { + return op.Failed("وضعیت تاهل وارد شده نامعتبر میباشد"); + } + + var employee = _EmployeeRepository.Get(command.EmployeeId); + if (employee == null) + { + return op.Failed("پرسنل مورد نظر یافت نشد"); + } + + if (!employee.IsAuthorized) + { + if (command.Gender is not ("مرد" or "زن")) + { + return op.Failed("جنسیت وارد شده نامعتبر است"); + } + if (command.BirthDate.TryToGeorgianDateTime(out var birthDateGr) == false) + { + return op.Failed("تاریخ تولد وارد شده نامعتبر است"); + } + + if (command.Nationality is not ("غیر ایرانی" or "ایرانی")) + { + return op.Failed("ملیت وارد شده نامعتبر است"); + } + + if (string.IsNullOrWhiteSpace(command.FName)) + { + return op.Failed("لطفا نام پرسنل را وارد کنید"); + } + + if (string.IsNullOrWhiteSpace(command.LName)) + { + return op.Failed("لطفا نام خانوادگی پرسنل را وارد کنید"); + } + + if (command.NationalCode.NationalCodeValid() != "valid") + { + return op.Failed("کد ملی وارد شده نامعتبر است"); + } + + if (string.IsNullOrWhiteSpace(command.IdNumber)) + { + return op.Failed("لطفا شماره شناسنامه را وارد کنید"); + } + + if (string.IsNullOrWhiteSpace(command.FatherName)) + { + return op.Failed("لطفا نام پدر را وارد کنید"); + } + } + + var employeeClientTemp = _employeeClientTempRepository.GetByEmployeeIdAndWorkshopId(command.EmployeeId, command.WorkshopId); + + employeeClientTemp?.Edit(command.MaritalStatus); + + if (!employee.IsAuthorized) + { + employee.Edit(command.FName, command.LName, command.FatherName, command.BirthDate.ToGeorgianDateTime(), + employee.DateOfIssue, employee.PlaceOfIssue, command.NationalCode, command.IdNumber, command.Gender, + command.Nationality, + employee.Phone, employee.Address, employee.State, employee.City, employee.MaritalStatus, + employee.MilitaryService, + employee.LevelOfEducation, employee.FieldOfStudy, employee.BankCardNumber, employee.BankBranch, + employee.InsuranceCode, employee.InsuranceHistoryByYear, employee.InsuranceHistoryByMonth, + employee.NumberOfChildren, employee.OfficePhone, employee.MclsUserName, employee.MclsPassword, + employee.EserviceUserName, employee.EservicePassword, employee.TaxOfficeUserName, + employee.TaxOfficepassword, employee.SanaUserName, employee.SanaPassword); + } + await _EmployeeRepository.SaveChangesAsync(); + + return op.Succcedded(); + } + + #endregion } \ No newline at end of file diff --git a/CompanyManagment.Application/EmployeeClientTempApplication.cs b/CompanyManagment.Application/EmployeeClientTempApplication.cs new file mode 100644 index 00000000..a8d04b8c --- /dev/null +++ b/CompanyManagment.Application/EmployeeClientTempApplication.cs @@ -0,0 +1,32 @@ +using _0_Framework_b.Application; +using Company.Domain.EmployeeClientTempAgg; +using CompanyManagment.App.Contracts.EmployeeClientTemp; + +namespace CompanyManagment.Application; + +public class EmployeeClientTempApplication : IEmployeeClientTempApplication +{ + private readonly IEmployeeClientTempRepository _employeeClientTempRepository; + + public EmployeeClientTempApplication(IEmployeeClientTempRepository employeeClientTempRepository) + { + _employeeClientTempRepository = employeeClientTempRepository; + } + + public OperationResult Create(CreateEmployeeClientTemp command) + { + var op = new OperationResult(); + var fullName = $"{command.FName} {command.LName}"; + var employeeClientTemp = new EmployeeClientTemp(command.WorkshopId, command.StartWorkTime, command.EmployeeId, command.MaritalStatus, fullName); + + _employeeClientTempRepository.Create(employeeClientTemp); + _employeeClientTempRepository.SaveChanges(); + + return op.Succcedded(); + } + + public EmployeeClientTempGetDetailsViewModel GetDetails(long employeeId, long workshopId) + { + return _employeeClientTempRepository.GetDetails(employeeId, workshopId); + } +} \ No newline at end of file diff --git a/CompanyManagment.Application/EmployeeDocumentsApplication.cs b/CompanyManagment.Application/EmployeeDocumentsApplication.cs index 1f803326..ad48936a 100644 --- a/CompanyManagment.Application/EmployeeDocumentsApplication.cs +++ b/CompanyManagment.Application/EmployeeDocumentsApplication.cs @@ -22,39 +22,43 @@ using Microsoft.AspNetCore.Mvc; using CompanyManagment.App.Contracts.SmsResult; using Microsoft.Identity.Client; using static Microsoft.QualityTools.Testing.Fakes.FakesDelegates; +using Company.Domain.EmployeeClientTempAgg; namespace CompanyManagment.Application { - public class EmployeeDocumentsApplication : IEmployeeDocumentsApplication - { - private readonly IEmployeeDocumentsRepository _employeeDocumentsRepository; - private readonly IEmployeeRepository _employeeRepository; - private readonly IWorkshopRepository _workshopRepository; - private readonly IWebHostEnvironment _webHostEnvironment; - private readonly IMediaRepository _mediaRepository; - private readonly ILeftWorkRepository _leftWorkRepository; - private readonly IEmployeeDocumentItemRepository _employeeDocumentItemRepository; - private readonly IAuthHelper _authHelper; + public class EmployeeDocumentsApplication : IEmployeeDocumentsApplication + { + private readonly IEmployeeDocumentsRepository _employeeDocumentsRepository; + private readonly IEmployeeRepository _employeeRepository; + private readonly IWorkshopRepository _workshopRepository; + private readonly IWebHostEnvironment _webHostEnvironment; + private readonly IMediaRepository _mediaRepository; + private readonly ILeftWorkRepository _leftWorkRepository; + private readonly IEmployeeDocumentItemRepository _employeeDocumentItemRepository; + private readonly IAuthHelper _authHelper; + private readonly IEmployeeClientTempRepository _employeeClientTempRepository; - private readonly string _basePath; - public EmployeeDocumentsApplication(IEmployeeDocumentsRepository employeeDocumentsRepository, - IEmployeeRepository employeeRepository, - IWorkshopRepository workshopRepository, IWebHostEnvironment webHostEnvironment, - IMediaRepository mediaRepository, ILeftWorkRepository leftWorkRepository, - IEmployeeDocumentItemRepository employeeDocumentItemRepository, IAuthHelper authHelper) - { - _employeeDocumentsRepository = employeeDocumentsRepository; - _employeeRepository = employeeRepository; - _workshopRepository = workshopRepository; - _webHostEnvironment = webHostEnvironment; - _mediaRepository = mediaRepository; - _leftWorkRepository = leftWorkRepository; - _employeeDocumentItemRepository = employeeDocumentItemRepository; - _authHelper = authHelper; - _basePath = Path.Combine(_webHostEnvironment.ContentRootPath, "Storage", "EmployeeDocuments"); - } + private readonly string _basePath; + + public EmployeeDocumentsApplication(IEmployeeDocumentsRepository employeeDocumentsRepository, + IEmployeeRepository employeeRepository, + IWorkshopRepository workshopRepository, IWebHostEnvironment webHostEnvironment, + IMediaRepository mediaRepository, ILeftWorkRepository leftWorkRepository, + IEmployeeDocumentItemRepository employeeDocumentItemRepository, IAuthHelper authHelper, IEmployeeClientTempRepository employeeClientTempRepository) + { + _employeeDocumentsRepository = employeeDocumentsRepository; + _employeeRepository = employeeRepository; + _workshopRepository = workshopRepository; + _webHostEnvironment = webHostEnvironment; + _mediaRepository = mediaRepository; + _leftWorkRepository = leftWorkRepository; + _employeeDocumentItemRepository = employeeDocumentItemRepository; + _authHelper = authHelper; + _employeeClientTempRepository = employeeClientTempRepository; + _basePath = Path.Combine(_webHostEnvironment.ContentRootPath, "Storage", "EmployeeDocuments"); + } /// /// مدارک تا قبل از ثبت کردن می توانند توسط کاربر حذف شوند @@ -134,7 +138,7 @@ namespace CompanyManagment.Application } var currentItems = entity.EmployeeDocumentItemCollection.GroupBy(x => x.DocumentLabel) - .Select(x => x.MaxBy(y => y.CreationDate)).Where(x=>x.DocumentStatus == DocumentStatus.Unsubmitted); + .Select(x => x.MaxBy(y => y.CreationDate)).Where(x => x.DocumentStatus == DocumentStatus.Unsubmitted); //This can bite! _employeeDocumentItemRepository.RemoveRange(currentItems); @@ -300,24 +304,24 @@ namespace CompanyManagment.Application /// ثبت مدارک توسط کلاینت /// public OperationResult SubmitDocumentItemsByClient(SubmitEmployeeDocuments cmd) - { - OperationResult op = new(); - var entity = _employeeDocumentsRepository.GetByIdWithItems(cmd.EmployeeDocumentsId); - var currentDocs = entity.EmployeeDocumentItemCollection.GroupBy(x => x.DocumentLabel).Select(x => x.MaxBy(y => y.CreationDate)) + { + OperationResult op = new(); + var entity = _employeeDocumentsRepository.GetByIdWithItems(cmd.EmployeeDocumentsId); + var currentDocs = entity.EmployeeDocumentItemCollection.GroupBy(x => x.DocumentLabel).Select(x => x.MaxBy(y => y.CreationDate)) .ToList(); - var (userId, userType) = _authHelper.GetUserTypeWithId(); + var (userId, userType) = _authHelper.GetUserTypeWithId(); - var unsubmittedDocs = currentDocs.Where(x => x.DocumentStatus == DocumentStatus.Unsubmitted && + var unsubmittedDocs = currentDocs.Where(x => x.DocumentStatus == DocumentStatus.Unsubmitted && x.UploaderType == UserType.Client).ToList(); - if (unsubmittedDocs.Any() == false) - return op.Succcedded(); + if (unsubmittedDocs.Any() == false) + return op.Succcedded(); - foreach (var item in unsubmittedDocs) + foreach (var item in unsubmittedDocs) { item.SubmitByClient(userId, userType); MoveDocumentItemFile(item.MediaId, @@ -335,7 +339,7 @@ namespace CompanyManagment.Application _employeeDocumentsRepository.SaveChanges(); return op.Succcedded(); - } + } /// @@ -346,7 +350,7 @@ namespace CompanyManagment.Application OperationResult op = new(); var entity = _employeeDocumentsRepository.GetByEmployeeIdWorkshopIdWithItems(employeeId, workshopId); var notRejectedDocs = entity.EmployeeDocumentItemCollection - .Where(x=>x.DocumentStatus != DocumentStatus.Unsubmitted || x.UploaderType == UserType.Client) + .Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted || x.UploaderType == UserType.Client) .GroupBy(x => x.DocumentLabel).Select(x => x.MaxBy(y => y.CreationDate)).ToList(); if (!HasRequiredDocuments(notRejectedDocs, entity.Gender)) @@ -378,7 +382,7 @@ namespace CompanyManagment.Application /// /// برای افزودن یکباره مدارک در افزودن پرسنل توسط کلاینت /// - public OperationResult AddRangeEmployeeDocumentItems(long workshopId, long employeeId, List command) + public OperationResult AddRangeEmployeeDocumentItemsByClient(long workshopId, long employeeId, List command) { OperationResult op = new(); @@ -426,7 +430,7 @@ namespace CompanyManagment.Application if (_employeeDocumentItemRepository.Exists(x => x.MediaId == mediaOpResult.SendId)) return op.Failed("امکان ثبت رکورد تکراری وجود ندارد"); - var newEntity = new EmployeeDocumentItem(workshopId, employeeId, mediaOpResult.SendId, entity.id, item.Label, uploaderId, uploaderType); + var newEntity = new EmployeeDocumentItem(workshopId, employeeId, mediaOpResult.SendId, entity.id, item.Label, uploaderId, uploaderType, DocumentStatus.SubmittedByClient); newEntities.Add(newEntity); } @@ -434,9 +438,9 @@ namespace CompanyManagment.Application .Select(x => x.MaxBy(y => y.CreationDate)); //This can bite! - _employeeDocumentItemRepository.RemoveRange(currentItems); - _employeeDocumentItemRepository.SaveChanges(); - + _employeeDocumentItemRepository.RemoveRange(currentItems); + _employeeDocumentItemRepository.SaveChanges(); + entity.UpdateIsConfirmed(); _employeeDocumentItemRepository.AddRange(newEntities); _employeeDocumentItemRepository.SaveChanges(); @@ -552,11 +556,11 @@ namespace CompanyManagment.Application var employee = _employeeRepository.Get(entity.EmployeeId); - var result= new EmployeeDocumentsViewModel() - { - Id = entity.id, - MilitaryServiceCard = GetItemFromCollectionByLabel(currentConfirmedDocuments, medias, - DocumentItemLabel.MilitaryServiceCard), + var result = new EmployeeDocumentsViewModel() + { + Id = entity.id, + MilitaryServiceCard = GetItemFromCollectionByLabel(currentConfirmedDocuments, medias, + DocumentItemLabel.MilitaryServiceCard), EducationalDegree = GetItemFromCollectionByLabel(currentConfirmedDocuments, medias, DocumentItemLabel.EducationalDegree), @@ -583,22 +587,22 @@ namespace CompanyManagment.Application EmployeePicture = GetItemFromCollectionByLabel(currentConfirmedDocuments, medias, DocumentItemLabel.EmployeePicture), - EmployeeFullName = employee.FullName, - WorkshopId = workshopId, - EmployeeId = entity.EmployeeId, - Gender = employee.Gender, - NationalCode = employee.NationalCode, - EmployeeFName = employee.FName, - EmployeeLName = employee.LName, - Nationality = employee.Nationality, - IdNumber = employee.IdNumber, - FatherName = employee.FatherName, - DateOfBirth = employee.DateOfBirth.ToFarsi(), - MaritalStatus = employee.MaritalStatus, - MilitaryServiceStatus = employee.MilitaryService, - SubmittedItemsCount = currentConfirmedDocuments.Count(x => x.DocumentStatus == DocumentStatus.SubmittedByAdmin || x.DocumentStatus == DocumentStatus.SubmittedByClient), - IsSentToChecker = entity.IsSentToChecker - }; + EmployeeFullName = employee.FullName, + WorkshopId = workshopId, + EmployeeId = entity.EmployeeId, + Gender = employee.Gender, + NationalCode = employee.NationalCode, + EmployeeFName = employee.FName, + EmployeeLName = employee.LName, + Nationality = employee.Nationality, + IdNumber = employee.IdNumber, + FatherName = employee.FatherName, + DateOfBirth = employee.DateOfBirth.ToFarsi(), + MaritalStatus = employee.MaritalStatus, + MilitaryServiceStatus = employee.MilitaryService, + SubmittedItemsCount = currentConfirmedDocuments.Count(x => x.DocumentStatus == DocumentStatus.SubmittedByAdmin || x.DocumentStatus == DocumentStatus.SubmittedByClient), + IsSentToChecker = entity.IsSentToChecker + }; result.EmployeePicture.PicturePath = GetThumbnailPathFromFilePath(result.EmployeePicture.PicturePath); result.IdCardPage1.PicturePath = GetThumbnailPathFromFilePath(result.IdCardPage1.PicturePath); result.IdCardPage2.PicturePath = GetThumbnailPathFromFilePath(result.IdCardPage2.PicturePath); @@ -611,12 +615,12 @@ namespace CompanyManagment.Application } - /// - /// جستجوی مجموعه مدارک بر اساس کارگاه - /// - /// مد تعیین کننده فیلتر افراد فعال است، سه حالت دارد: همه، فقط فعال، فقط غیر فعال - public List SearchForClient(SearchEmployeeDocuments cmd, EmployeeDocumentSearchMode mode=EmployeeDocumentSearchMode.ActiveEmployees) - { + /// + /// جستجوی مجموعه مدارک بر اساس کارگاه + /// + /// مد تعیین کننده فیلتر افراد فعال است، سه حالت دارد: همه، فقط فعال، فقط غیر فعال + public List SearchForClient(SearchEmployeeDocuments cmd, EmployeeDocumentSearchMode mode = EmployeeDocumentSearchMode.ActiveEmployees) + { #region Create EmployeeDocuments Record For Newly Added Employees @@ -708,7 +712,7 @@ namespace CompanyManagment.Application MoveDocumentItemFile(clientUploadedItem.MediaId, $"Deleted/{clientUploadedItem.EmployeeDocuments.WorkshopId}/{clientUploadedItem.EmployeeDocuments.EmployeeId}"); } } - DeleteMultipleUnsubmittedDocumentsByLabel(entity,label, uploaderType); + DeleteMultipleUnsubmittedDocumentsByLabel(entity, label, uploaderType); _employeeDocumentItemRepository.SaveChanges(); return op.Succcedded(); @@ -717,60 +721,60 @@ namespace CompanyManagment.Application /// ///حذف آیتم ثبت شده توسط کلاینت برای ادمین /// - public OperationResult RemoveClientDocumentItemsByAdmin(long workshopId,long employeeId,Listlabels) - { - OperationResult op = new(); + public OperationResult RemoveClientDocumentItemsByAdmin(long workshopId, long employeeId, List labels) + { + OperationResult op = new(); - var (uploaderId, uploaderType) = _authHelper.GetUserTypeWithId(); + var (uploaderId, uploaderType) = _authHelper.GetUserTypeWithId(); - if (!_employeeRepository.Exists(x => x.id == employeeId)) - return op.Failed("پرسنل یافت نشد"); + if (!_employeeRepository.Exists(x => x.id == employeeId)) + return op.Failed("پرسنل یافت نشد"); - if (!_workshopRepository.Exists(x => x.id == workshopId)) - return op.Failed("کارگاه وجود ندارد"); + if (!_workshopRepository.Exists(x => x.id == workshopId)) + return op.Failed("کارگاه وجود ندارد"); - var entity = - _employeeDocumentsRepository.GetByEmployeeIdWorkshopIdWithItems(employeeId, workshopId); + var entity = + _employeeDocumentsRepository.GetByEmployeeIdWorkshopIdWithItems(employeeId, workshopId); - if (entity == null) - { + if (entity == null) + { - return op.Failed("خطای سیستمی"); + return op.Failed("خطای سیستمی"); - } + } - var currentItems = entity.EmployeeDocumentItemCollection - .Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted || x.UploaderType == UserType.Admin) - .GroupBy(x => x.DocumentLabel).Select(x => x.OrderByDescending(y => y.CreationDate).First()).ToList(); + var currentItems = entity.EmployeeDocumentItemCollection + .Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted || x.UploaderType == UserType.Admin) + .GroupBy(x => x.DocumentLabel).Select(x => x.OrderByDescending(y => y.CreationDate).First()).ToList(); - if (currentItems.Any(x=>labels.Contains(x.DocumentLabel) && x.DocumentStatus == DocumentStatus.SubmittedByAdmin)) - return op.Failed("امکان ثبت دوباره مدارک تا بررسی مدارک ثبت شده فعلی وجود ندارد"); + if (currentItems.Any(x => labels.Contains(x.DocumentLabel) && x.DocumentStatus == DocumentStatus.SubmittedByAdmin)) + return op.Failed("امکان ثبت دوباره مدارک تا بررسی مدارک ثبت شده فعلی وجود ندارد"); - var targetEntites = currentItems.Where(x=>labels.Contains(x.DocumentLabel) && x.DocumentStatus == DocumentStatus.SubmittedByClient).ToList(); - //if the given label is uploaded by user, move it and soft delete it - if (targetEntites.Any()) - { - foreach (var clientUploadedItem in targetEntites) - { - clientUploadedItem.Delete(uploaderId, uploaderType); - - MoveDocumentItemFile(clientUploadedItem.MediaId, $"Deleted/{clientUploadedItem.EmployeeDocuments.WorkshopId}/{clientUploadedItem.EmployeeDocuments.EmployeeId}"); - } - _employeeDocumentItemRepository.SaveChanges(); - } - return op.Succcedded(); - } + var targetEntites = currentItems.Where(x => labels.Contains(x.DocumentLabel) && x.DocumentStatus == DocumentStatus.SubmittedByClient).ToList(); + //if the given label is uploaded by user, move it and soft delete it + if (targetEntites.Any()) + { + foreach (var clientUploadedItem in targetEntites) + { + clientUploadedItem.Delete(uploaderId, uploaderType); - /// - /// اضافه کردن آیتم جدید به مدارک برای ادمین - /// - public OperationResult AddEmployeeDocumentItemForAdmin(AddEmployeeDocumentItem command) + MoveDocumentItemFile(clientUploadedItem.MediaId, $"Deleted/{clientUploadedItem.EmployeeDocuments.WorkshopId}/{clientUploadedItem.EmployeeDocuments.EmployeeId}"); + } + _employeeDocumentItemRepository.SaveChanges(); + } + return op.Succcedded(); + } + + /// + /// اضافه کردن آیتم جدید به مدارک برای ادمین + /// + public OperationResult AddEmployeeDocumentItemForAdmin(AddEmployeeDocumentItem command) { OperationResult op = new(); @@ -804,13 +808,13 @@ namespace CompanyManagment.Application if (currentItems.Any(x => x.DocumentLabel == command.Label && x.DocumentStatus == DocumentStatus.SubmittedByAdmin)) return op.Failed("امکان ثبت دوباره مدارک تا بررسی مدارک ثبت شده فعلی وجود ندارد"); - //if a given label is uploaded by user, move it and soft delete it + //if a given label is uploaded by user, move it and soft delete it if (currentItems.Any(x => x.DocumentLabel == command.Label && x.DocumentStatus == DocumentStatus.SubmittedByClient)) { var clientUploadedItem = currentItems.First(x => x.DocumentLabel == command.Label && x.DocumentStatus == DocumentStatus.SubmittedByClient); - clientUploadedItem.Delete(uploaderId,uploaderType); + clientUploadedItem.Delete(uploaderId, uploaderType); MoveDocumentItemFile(clientUploadedItem.MediaId, $"Deleted/{clientUploadedItem.EmployeeDocuments.WorkshopId}/{clientUploadedItem.EmployeeDocuments.EmployeeId}"); } @@ -844,161 +848,161 @@ namespace CompanyManagment.Application /// ثبت مدارک توسط ادمین /// public OperationResult SubmitDocumentItemsByAdmin(SubmitEmployeeDocuments cmd) - { - OperationResult op = new(); - var entity = _employeeDocumentsRepository.GetByIdWithItems(cmd.EmployeeDocumentsId); - var currentDocs = entity.EmployeeDocumentItemCollection.Where(x=>x.DocumentStatus != DocumentStatus.Unsubmitted || x.UploaderType == UserType.Admin) - .GroupBy(x => x.DocumentLabel).Select(x => x.MaxBy(y => y.CreationDate)).ToList(); - //if (!HasRequiredDocuments(notRejectedDocs, entity.Gender)) - // return op.Failed("مدارک الزامی بارگذاری نشده اند"); + { + OperationResult op = new(); + var entity = _employeeDocumentsRepository.GetByIdWithItems(cmd.EmployeeDocumentsId); + var currentDocs = entity.EmployeeDocumentItemCollection.Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted || x.UploaderType == UserType.Admin) + .GroupBy(x => x.DocumentLabel).Select(x => x.MaxBy(y => y.CreationDate)).ToList(); + //if (!HasRequiredDocuments(notRejectedDocs, entity.Gender)) + // return op.Failed("مدارک الزامی بارگذاری نشده اند"); - var (userId, operatorType) = _authHelper.GetUserTypeWithId(); + var (userId, operatorType) = _authHelper.GetUserTypeWithId(); - var adminUnsubmittedDocs = currentDocs.Where(x => x.DocumentStatus == DocumentStatus.SubmittedByClient || + var adminUnsubmittedDocs = currentDocs.Where(x => x.DocumentStatus == DocumentStatus.SubmittedByClient || (x.DocumentStatus == DocumentStatus.Unsubmitted && x.UploaderType == UserType.Admin)).ToList(); //if (!HasRequiredDocuments(currentDocs, entity.Gender)) // return op.Failed("مدارک الزامی بارگذاری نشده اند"); if (adminUnsubmittedDocs.Any() == false) - return op.Succcedded(); + return op.Succcedded(); - foreach (var item in adminUnsubmittedDocs) + foreach (var item in adminUnsubmittedDocs) { item.SubmitByAdmin(userId, operatorType); MoveDocumentItemFile(item.MediaId, $"SubmittedByAdmin/{item.EmployeeDocuments.WorkshopId}/{item.EmployeeDocuments.EmployeeId}"); } - _employeeDocumentItemRepository.SaveChanges(); - entity.UpdateRequiredItemsSubmittedByClient(); + _employeeDocumentItemRepository.SaveChanges(); + entity.UpdateRequiredItemsSubmittedByClient(); entity.UpdateIsSentToChecker(); entity.UpdateIsConfirmed(); _employeeDocumentsRepository.SaveChanges(); return op.Succcedded(); - } + } - /// - /// ثبت مدارک توسط ادمین، در این متد مدارک الزامی اعتبار سنجی دارند - /// - public OperationResult SubmitDocumentItemsByAdminInWorkFlow(SubmitEmployeeDocuments cmd) - { - OperationResult op = new(); - var entity = _employeeDocumentsRepository.GetByIdWithItems(cmd.EmployeeDocumentsId); - var currentDocs = entity.EmployeeDocumentItemCollection.Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted || x.UploaderType == UserType.Admin) - .GroupBy(x => x.DocumentLabel).Select(x => x.MaxBy(y => y.CreationDate)).ToList(); - //if (!HasRequiredDocuments(notRejectedDocs, entity.Gender)) - // return op.Failed("مدارک الزامی بارگذاری نشده اند"); + /// + /// ثبت مدارک توسط ادمین، در این متد مدارک الزامی اعتبار سنجی دارند + /// + public OperationResult SubmitDocumentItemsByAdminInWorkFlow(SubmitEmployeeDocuments cmd) + { + OperationResult op = new(); + var entity = _employeeDocumentsRepository.GetByIdWithItems(cmd.EmployeeDocumentsId); + var currentDocs = entity.EmployeeDocumentItemCollection.Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted || x.UploaderType == UserType.Admin) + .GroupBy(x => x.DocumentLabel).Select(x => x.MaxBy(y => y.CreationDate)).ToList(); + //if (!HasRequiredDocuments(notRejectedDocs, entity.Gender)) + // return op.Failed("مدارک الزامی بارگذاری نشده اند"); - var (userId, operatorType) = _authHelper.GetUserTypeWithId(); + var (userId, operatorType) = _authHelper.GetUserTypeWithId(); - var adminUnsubmittedDocs = currentDocs.Where(x => x.DocumentStatus == DocumentStatus.SubmittedByClient || - (x.DocumentStatus == DocumentStatus.Unsubmitted && x.UploaderType == UserType.Admin)).ToList(); + var adminUnsubmittedDocs = currentDocs.Where(x => x.DocumentStatus == DocumentStatus.SubmittedByClient || + (x.DocumentStatus == DocumentStatus.Unsubmitted && x.UploaderType == UserType.Admin)).ToList(); - if (!HasRequiredDocuments(currentDocs, entity.Gender)) - return op.Failed("مدارک الزامی بارگذاری نشده اند"); + if (!HasRequiredDocuments(currentDocs, entity.Gender)) + return op.Failed("مدارک الزامی بارگذاری نشده اند"); - if (adminUnsubmittedDocs.Any() == false) - return op.Succcedded(); + if (adminUnsubmittedDocs.Any() == false) + return op.Succcedded(); - foreach (var item in adminUnsubmittedDocs) - { - item.SubmitByAdmin(userId, operatorType); - MoveDocumentItemFile(item.MediaId, $"SubmittedByAdmin/{item.EmployeeDocuments.WorkshopId}/{item.EmployeeDocuments.EmployeeId}"); - } + foreach (var item in adminUnsubmittedDocs) + { + item.SubmitByAdmin(userId, operatorType); + MoveDocumentItemFile(item.MediaId, $"SubmittedByAdmin/{item.EmployeeDocuments.WorkshopId}/{item.EmployeeDocuments.EmployeeId}"); + } - _employeeDocumentItemRepository.SaveChanges(); - entity.UpdateRequiredItemsSubmittedByClient(); - entity.UpdateIsSentToChecker(); - entity.UpdateIsConfirmed(); - _employeeDocumentsRepository.SaveChanges(); + _employeeDocumentItemRepository.SaveChanges(); + entity.UpdateRequiredItemsSubmittedByClient(); + entity.UpdateIsSentToChecker(); + entity.UpdateIsConfirmed(); + _employeeDocumentsRepository.SaveChanges(); - return op.Succcedded(); - } + return op.Succcedded(); + } - /// - /// کلاینت unsubmitted دریافت جزییات مدارک پرسنل برای ادمین بدون مدارک - /// - public EmployeeDocumentsViewModel GetDetailsForAdmin(long employeeId, long workshopId) - { - var entity = _employeeDocumentsRepository.GetByEmployeeIdWorkshopIdWithItems(employeeId, workshopId); + /// + /// کلاینت unsubmitted دریافت جزییات مدارک پرسنل برای ادمین بدون مدارک + /// + public EmployeeDocumentsViewModel GetDetailsForAdmin(long employeeId, long workshopId) + { + var entity = _employeeDocumentsRepository.GetByEmployeeIdWorkshopIdWithItems(employeeId, workshopId); - if (!_employeeRepository.Exists(x => x.id == employeeId)) - return new(); - if (!_workshopRepository.Exists(x => x.id == workshopId)) - return new(); + if (!_employeeRepository.Exists(x => x.id == employeeId)) + return new(); + if (!_workshopRepository.Exists(x => x.id == workshopId)) + return new(); - //if entity is null but employee exists, make a new empty entity for it - if (entity == null) - { - var opCreate = - Create(new CreateEmployeeDocuments() { EmployeeId = employeeId, WorkshopId = workshopId }); - if (opCreate.IsSuccedded == false) return new(); + //if entity is null but employee exists, make a new empty entity for it + if (entity == null) + { + var opCreate = + Create(new CreateEmployeeDocuments() { EmployeeId = employeeId, WorkshopId = workshopId }); + if (opCreate.IsSuccedded == false) return new(); - return new EmployeeDocumentsViewModel() { EmployeeId = employeeId }; - } + return new EmployeeDocumentsViewModel() { EmployeeId = employeeId }; + } - List currentDocuments = entity.EmployeeDocumentItemCollection - .Where(x => x.UploaderType == UserType.Admin || x.DocumentStatus != DocumentStatus.Unsubmitted) - .GroupBy(x => x.DocumentLabel) - .Select(x => x.MaxBy(y => y.CreationDate)).ToList(); + List currentDocuments = entity.EmployeeDocumentItemCollection + .Where(x => x.UploaderType == UserType.Admin || x.DocumentStatus != DocumentStatus.Unsubmitted) + .GroupBy(x => x.DocumentLabel) + .Select(x => x.MaxBy(y => y.CreationDate)).ToList(); - var medias = _mediaRepository - .GetMedias(currentDocuments.Select(x => x.MediaId) - .ToList()); + var medias = _mediaRepository + .GetMedias(currentDocuments.Select(x => x.MediaId) + .ToList()); - var employee = _employeeRepository.Get(entity.EmployeeId); + var employee = _employeeRepository.Get(entity.EmployeeId); - var result = new EmployeeDocumentsViewModel() - { - Id = entity.id, - MilitaryServiceCard = GetItemFromCollectionByLabel(currentDocuments, medias, - DocumentItemLabel.MilitaryServiceCard), + var result = new EmployeeDocumentsViewModel() + { + Id = entity.id, + MilitaryServiceCard = GetItemFromCollectionByLabel(currentDocuments, medias, + DocumentItemLabel.MilitaryServiceCard), - EducationalDegree = GetItemFromCollectionByLabel(currentDocuments, medias, - DocumentItemLabel.EducationalDegree), + EducationalDegree = GetItemFromCollectionByLabel(currentDocuments, medias, + DocumentItemLabel.EducationalDegree), - IdCardPage1 = - GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage1), + IdCardPage1 = + GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage1), - IdCardPage2 = - GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage2), + IdCardPage2 = + GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage2), - IdCardPage3 = - GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage3), + IdCardPage3 = + GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage3), - IdCardPage4 = - GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage4), + IdCardPage4 = + GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage4), - NationalCardFront = GetItemFromCollectionByLabel(currentDocuments, medias, - DocumentItemLabel.NationalCardFront), + NationalCardFront = GetItemFromCollectionByLabel(currentDocuments, medias, + DocumentItemLabel.NationalCardFront), - NationalCardRear = GetItemFromCollectionByLabel(currentDocuments, medias, - DocumentItemLabel.NationalCardRear), + NationalCardRear = GetItemFromCollectionByLabel(currentDocuments, medias, + DocumentItemLabel.NationalCardRear), - EmployeePicture = GetItemFromCollectionByLabel(currentDocuments, medias, - DocumentItemLabel.EmployeePicture), + EmployeePicture = GetItemFromCollectionByLabel(currentDocuments, medias, + DocumentItemLabel.EmployeePicture), - EmployeeFullName = employee.FullName, - WorkshopId = workshopId, - EmployeeId = entity.EmployeeId, - Gender = employee.Gender, - NationalCode = employee.NationalCode, - EmployeeFName = employee.FName, - EmployeeLName = employee.LName, - Nationality = employee.Nationality, - IdNumber = employee.IdNumber, - FatherName = employee.FatherName, - DateOfBirth = employee.DateOfBirth.ToFarsi(), - MaritalStatus = employee.MaritalStatus, - MilitaryServiceStatus = employee.MilitaryService, + EmployeeFullName = employee.FullName, + WorkshopId = workshopId, + EmployeeId = entity.EmployeeId, + Gender = employee.Gender, + NationalCode = employee.NationalCode, + EmployeeFName = employee.FName, + EmployeeLName = employee.LName, + Nationality = employee.Nationality, + IdNumber = employee.IdNumber, + FatherName = employee.FatherName, + DateOfBirth = employee.DateOfBirth.ToFarsi(), + MaritalStatus = employee.MaritalStatus, + MilitaryServiceStatus = employee.MilitaryService, - }; + }; result.EmployeePicture.PicturePath = GetThumbnailPathFromFilePath(result.EmployeePicture.PicturePath); result.IdCardPage1.PicturePath = GetThumbnailPathFromFilePath(result.IdCardPage1.PicturePath); result.IdCardPage2.PicturePath = GetThumbnailPathFromFilePath(result.IdCardPage2.PicturePath); @@ -1012,116 +1016,116 @@ namespace CompanyManagment.Application } - /// - /// جستجوی مجموعه مدارک بر اساس کارگاه برای ادمین - /// مد تعیین کننده فیلتر افراد فعال است، سه حالت دارد: همه، فقط فعال، فقط غیر فعال - public List SearchForAdmin(SearchEmployeeDocuments cmd, EmployeeDocumentSearchMode mode=EmployeeDocumentSearchMode.ActiveEmployees) - { + /// + /// جستجوی مجموعه مدارک بر اساس کارگاه برای ادمین + /// مد تعیین کننده فیلتر افراد فعال است، سه حالت دارد: همه، فقط فعال، فقط غیر فعال + public List SearchForAdmin(SearchEmployeeDocuments cmd, EmployeeDocumentSearchMode mode = EmployeeDocumentSearchMode.ActiveEmployees) + { - #region Create EmployeeDocuments Record For Newly Added Employees + #region Create EmployeeDocuments Record For Newly Added Employees - var existingEmployeesWithDocs = _employeeDocumentsRepository.GetEmployeeIds(cmd.WorkshopId); - var existingEmployeeIds = - _leftWorkRepository.GetAllEmployeeIdsInWorkshop(cmd.WorkshopId); + var existingEmployeesWithDocs = _employeeDocumentsRepository.GetEmployeeIds(cmd.WorkshopId); + var existingEmployeeIds = + _leftWorkRepository.GetAllEmployeeIdsInWorkshop(cmd.WorkshopId); - var newEmployeeIds = existingEmployeeIds.Except(existingEmployeesWithDocs).ToList(); + var newEmployeeIds = existingEmployeeIds.Except(existingEmployeesWithDocs).ToList(); - if (newEmployeeIds.Any()) - { - List employees = _employeeRepository.GetRangeByIds(newEmployeeIds).Select(x => - new EmployeeDocuments(x.id, cmd.WorkshopId, x.Gender)).ToList(); + if (newEmployeeIds.Any()) + { + List employees = _employeeRepository.GetRangeByIds(newEmployeeIds).Select(x => + new EmployeeDocuments(x.id, cmd.WorkshopId, x.Gender)).ToList(); - _employeeDocumentsRepository.AddRange(employees); - _employeeDocumentsRepository.SaveChanges(); - } + _employeeDocumentsRepository.AddRange(employees); + _employeeDocumentsRepository.SaveChanges(); + } - #endregion + #endregion - cmd.Mode = mode; + cmd.Mode = mode; - var result = _employeeDocumentsRepository.SearchForAdmin(cmd); + var result = _employeeDocumentsRepository.SearchForAdmin(cmd); - result.ForEach(x => - { - var requiredDocuments = EmployeeDocumentRequiredItems.GetByGender(x.Gender); - x.EmployeePicture.PicturePath = GetThumbnailPathFromFilePath(x.EmployeePicture.PicturePath); - x.IdCardPage1.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage1.PicturePath); - x.IdCardPage2.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage2.PicturePath); - x.IdCardPage3.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage3.PicturePath); - x.IdCardPage4.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage4.PicturePath); - x.NationalCardFront.PicturePath = GetThumbnailPathFromFilePath(x.NationalCardFront.PicturePath); - x.NationalCardRear.PicturePath = GetThumbnailPathFromFilePath(x.NationalCardRear.PicturePath); - x.MilitaryServiceCard.PicturePath = GetThumbnailPathFromFilePath(x.MilitaryServiceCard.PicturePath); - x.RequiredDocuments = requiredDocuments; - x.RequiredDocumentsUploaded = x.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(y => y.PropertyType == typeof(EmployeeDocumentItemViewModel)) - .Select(y => y.GetValue(x) as EmployeeDocumentItemViewModel).Where(y => y != null && !string.IsNullOrWhiteSpace(y.PicturePath) && - (y.Status is DocumentStatus.Confirmed or DocumentStatus.SubmittedByAdmin)).Select(y => y.DocumentItemLabel).ToList(); - }); - return result; - } + result.ForEach(x => + { + var requiredDocuments = EmployeeDocumentRequiredItems.GetByGender(x.Gender); + x.EmployeePicture.PicturePath = GetThumbnailPathFromFilePath(x.EmployeePicture.PicturePath); + x.IdCardPage1.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage1.PicturePath); + x.IdCardPage2.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage2.PicturePath); + x.IdCardPage3.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage3.PicturePath); + x.IdCardPage4.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage4.PicturePath); + x.NationalCardFront.PicturePath = GetThumbnailPathFromFilePath(x.NationalCardFront.PicturePath); + x.NationalCardRear.PicturePath = GetThumbnailPathFromFilePath(x.NationalCardRear.PicturePath); + x.MilitaryServiceCard.PicturePath = GetThumbnailPathFromFilePath(x.MilitaryServiceCard.PicturePath); + x.RequiredDocuments = requiredDocuments; + x.RequiredDocumentsUploaded = x.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(y => y.PropertyType == typeof(EmployeeDocumentItemViewModel)) + .Select(y => y.GetValue(x) as EmployeeDocumentItemViewModel).Where(y => y != null && !string.IsNullOrWhiteSpace(y.PicturePath) && + (y.Status is DocumentStatus.Confirmed or DocumentStatus.SubmittedByAdmin)).Select(y => y.DocumentItemLabel).ToList(); + }); + return result; + } - /// - /// مجموعه مدارک بر اساس کارگاه برای کارپوشه ادمین - public List GetByWorkshopIdWithItemsForAdminWorkFlow(long workshopId) - { + /// + /// مجموعه مدارک بر اساس کارگاه برای کارپوشه ادمین + public List GetByWorkshopIdWithItemsForAdminWorkFlow(long workshopId) + { - #region Create EmployeeDocuments Record For Newly Added Employees + #region Create EmployeeDocuments Record For Newly Added Employees - var existingEmployeesWithDocs = _employeeDocumentsRepository.GetEmployeeIds(workshopId); - var existingEmployeeIds = - _leftWorkRepository.GetAllEmployeeIdsInWorkshop(workshopId); - var newEmployeeIds = existingEmployeeIds.Except(existingEmployeesWithDocs).ToList(); + var existingEmployeesWithDocs = _employeeDocumentsRepository.GetEmployeeIds(workshopId); + var existingEmployeeIds = + _leftWorkRepository.GetAllEmployeeIdsInWorkshop(workshopId); + var newEmployeeIds = existingEmployeeIds.Except(existingEmployeesWithDocs).ToList(); - if (newEmployeeIds.Any()) - { - List employees = _employeeRepository.GetRangeByIds(newEmployeeIds).Select(x => - new EmployeeDocuments(x.id, workshopId, x.Gender)).ToList(); + if (newEmployeeIds.Any()) + { + List employees = _employeeRepository.GetRangeByIds(newEmployeeIds).Select(x => + new EmployeeDocuments(x.id, workshopId, x.Gender)).ToList(); - _employeeDocumentsRepository.AddRange(employees); - _employeeDocumentsRepository.SaveChanges(); - } + _employeeDocumentsRepository.AddRange(employees); + _employeeDocumentsRepository.SaveChanges(); + } - #endregion + #endregion - var result = _employeeDocumentsRepository.GetByWorkshopIdWithItemsForAdminWorkFlow(workshopId); + var result = _employeeDocumentsRepository.GetByWorkshopIdWithItemsForAdminWorkFlow(workshopId); - result.ForEach(x => - { - var requiredDocuments = EmployeeDocumentRequiredItems.GetByGender(x.Gender); - x.EmployeePicture.PicturePath = GetThumbnailPathFromFilePath(x.EmployeePicture.PicturePath); - x.IdCardPage1.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage1.PicturePath); - x.IdCardPage2.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage2.PicturePath); - x.IdCardPage3.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage3.PicturePath); - x.IdCardPage4.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage4.PicturePath); - x.NationalCardFront.PicturePath = GetThumbnailPathFromFilePath(x.NationalCardFront.PicturePath); - x.NationalCardRear.PicturePath = GetThumbnailPathFromFilePath(x.NationalCardRear.PicturePath); - x.MilitaryServiceCard.PicturePath = GetThumbnailPathFromFilePath(x.MilitaryServiceCard.PicturePath); - x.RequiredDocuments = requiredDocuments; + result.ForEach(x => + { + var requiredDocuments = EmployeeDocumentRequiredItems.GetByGender(x.Gender); + x.EmployeePicture.PicturePath = GetThumbnailPathFromFilePath(x.EmployeePicture.PicturePath); + x.IdCardPage1.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage1.PicturePath); + x.IdCardPage2.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage2.PicturePath); + x.IdCardPage3.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage3.PicturePath); + x.IdCardPage4.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage4.PicturePath); + x.NationalCardFront.PicturePath = GetThumbnailPathFromFilePath(x.NationalCardFront.PicturePath); + x.NationalCardRear.PicturePath = GetThumbnailPathFromFilePath(x.NationalCardRear.PicturePath); + x.MilitaryServiceCard.PicturePath = GetThumbnailPathFromFilePath(x.MilitaryServiceCard.PicturePath); + x.RequiredDocuments = requiredDocuments; - #region شتر دیدی ندیدی + #region شتر دیدی ندیدی - x.RequiredDocumentsUploaded = x.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(y => y.PropertyType == typeof(EmployeeDocumentItemViewModel)) - .Select(y => y.GetValue(x) as EmployeeDocumentItemViewModel).Where(y => y != null && !string.IsNullOrWhiteSpace(y.PicturePath) && - (y.Status is DocumentStatus.Confirmed or DocumentStatus.SubmittedByAdmin)).Select(y => y.DocumentItemLabel).ToList(); - #endregion - }); - return result; - } + x.RequiredDocumentsUploaded = x.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(y => y.PropertyType == typeof(EmployeeDocumentItemViewModel)) + .Select(y => y.GetValue(x) as EmployeeDocumentItemViewModel).Where(y => y != null && !string.IsNullOrWhiteSpace(y.PicturePath) && + (y.Status is DocumentStatus.Confirmed or DocumentStatus.SubmittedByAdmin)).Select(y => y.DocumentItemLabel).ToList(); + #endregion + }); + return result; + } - /// - /// دریافت کارگاه های ادمین که نیاز به آپلود مدارک ضروری دارند - /// - public List GetWorkshopDocumentsAwaitingUploadForAdminWorkFlow(List workshops) - { - return _employeeDocumentsRepository.GetWorkshopsWithDocumentsAwaitingReviewForAdminWorkFlow(workshops); - } + /// + /// دریافت کارگاه های ادمین که نیاز به آپلود مدارک ضروری دارند + /// + public List GetWorkshopDocumentsAwaitingUploadForAdminWorkFlow(List workshops) + { + return _employeeDocumentsRepository.GetWorkshopsWithDocumentsAwaitingReviewForAdminWorkFlow(workshops); + } - /// - /// حذف توسط ادمین، مدارک ثبت شده کلاینت نیز میتوانند توسط ادمین پاک شوند - /// + /// + /// حذف توسط ادمین، مدارک ثبت شده کلاینت نیز میتوانند توسط ادمین پاک شوند + /// public OperationResult RemoveByAdmin(long documentItemId) { OperationResult op = new(); @@ -1140,7 +1144,7 @@ namespace CompanyManagment.Application if (entity.UploaderType == UserType.Client) { - entity.Delete(operatorId,UserType.Admin); + entity.Delete(operatorId, UserType.Admin); } else @@ -1148,16 +1152,19 @@ namespace CompanyManagment.Application _employeeDocumentItemRepository.Remove(entity); } - _employeeDocumentItemRepository.SaveChanges(); + _employeeDocumentItemRepository.SaveChanges(); return op.Succcedded(); } - public int GetAdminWorkFlowCountForSubmittedAndRejectedDocuments(List workshopIds) + public async Task GetAdminWorkFlowCountForSubmittedAndRejectedDocuments(List workshopIds) { - return _employeeDocumentsRepository.GetAdminWorkFlowCountForSubmittedAndRejectedDocuments(workshopIds); + return await _employeeDocumentsRepository.GetAdminWorkFlowCountForSubmittedAndRejectedDocuments(workshopIds); + } + public async Task GetAdminWorkFlowCountForNewEmployees(List workshopIds) + { + return await _employeeDocumentsRepository.GetAdminWorkFlowCountForNewEmployees(workshopIds); } - #endregion #region Checker Only Methods @@ -1184,7 +1191,7 @@ namespace CompanyManagment.Application (long operatorId, UserType userType) = _authHelper.GetUserTypeWithId(); - if (item.DocumentStatus != DocumentStatus.SubmittedByAdmin) + if ((item.DocumentStatus is DocumentStatus.SubmittedByAdmin or DocumentStatus.SubmittedByClient) == false) return op.Failed("امکان بررسی رکورد مورد نظر وجود ندارد"); @@ -1210,6 +1217,19 @@ namespace CompanyManagment.Application } entity.UpdateIsConfirmed(); entity.UpdateIsSentToChecker(); + + if (entity.IsConfirmed) + { + var clientTemp = _employeeClientTempRepository.GetByEmployeeIdAndWorkshopId(entity.EmployeeId, entity.WorkshopId); + var employee = _employeeRepository.Get(entity.EmployeeId); + + if (clientTemp != null) + { + employee.EditFromEmployeeClientTemp(clientTemp.MaritalStatus); + _employeeClientTempRepository.Remove(clientTemp); + } + + } _employeeDocumentsRepository.SaveChanges(); return op.Succcedded(); } @@ -1219,94 +1239,95 @@ namespace CompanyManagment.Application /// برای تایید یا رد توسط چکر ،unsubmitted دریافت جزییات مدارک پرسنل، بدون مدارک /// public EmployeeDocumentsViewModel GetDetailsForChecker(long employeeId, long workshopId) - { - var entity = _employeeDocumentsRepository.GetByEmployeeIdWorkshopIdWithItems(employeeId, workshopId); + { + var entity = _employeeDocumentsRepository.GetByEmployeeIdWorkshopIdWithItems(employeeId, workshopId); - if (!_employeeRepository.Exists(x => x.id == employeeId)) - return new(); - if (!_workshopRepository.Exists(x => x.id == workshopId)) - return new(); + if (!_employeeRepository.Exists(x => x.id == employeeId)) + return new(); + if (!_workshopRepository.Exists(x => x.id == workshopId)) + return new(); - //if entity is null but employee exists, make a new empty entity for it - if (entity == null) - { - var opCreate = - Create(new CreateEmployeeDocuments() { EmployeeId = employeeId, WorkshopId = workshopId }); - if (opCreate.IsSuccedded == false) return new(); + //if entity is null but employee exists, make a new empty entity for it + if (entity == null) + { + var opCreate = + Create(new CreateEmployeeDocuments() { EmployeeId = employeeId, WorkshopId = workshopId }); + if (opCreate.IsSuccedded == false) return new(); - return new EmployeeDocumentsViewModel() { EmployeeId = employeeId }; - } + return new EmployeeDocumentsViewModel() { EmployeeId = employeeId }; + } - List currentDocuments = entity.EmployeeDocumentItemCollection - .Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted) - .GroupBy(x => x.DocumentLabel) - .Select(x => x.MaxBy(y => y.CreationDate)) - .Where(x=>x.DocumentStatus == DocumentStatus.SubmittedByAdmin || - x.DocumentStatus == DocumentStatus.Confirmed || x.DocumentStatus == DocumentStatus.Rejected).ToList(); + List currentDocuments = entity.EmployeeDocumentItemCollection + .Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted) + .GroupBy(x => x.DocumentLabel) + .Select(x => x.MaxBy(y => y.CreationDate)) + .Where(x => x.DocumentStatus is DocumentStatus.SubmittedByAdmin or DocumentStatus.Confirmed or DocumentStatus.Rejected or DocumentStatus.SubmittedByClient).ToList(); - var medias = _mediaRepository - .GetMedias(currentDocuments.Select(x => x.MediaId) - .ToList()); + var medias = _mediaRepository + .GetMedias(currentDocuments.Select(x => x.MediaId) + .ToList()); - var employee = _employeeRepository.Get(entity.EmployeeId); + var employee = _employeeRepository.Get(entity.EmployeeId); + + var employeeClientTemp = _employeeClientTempRepository.GetByEmployeeIdAndWorkshopId(employeeId, workshopId); - return new EmployeeDocumentsViewModel() - { - Id = entity.id, - MilitaryServiceCard = GetItemFromCollectionByLabel(currentDocuments, medias, - DocumentItemLabel.MilitaryServiceCard), + return new EmployeeDocumentsViewModel() + { + Id = entity.id, + MilitaryServiceCard = GetItemFromCollectionByLabel(currentDocuments, medias, + DocumentItemLabel.MilitaryServiceCard), - EducationalDegree = GetItemFromCollectionByLabel(currentDocuments, medias, - DocumentItemLabel.EducationalDegree), + EducationalDegree = GetItemFromCollectionByLabel(currentDocuments, medias, + DocumentItemLabel.EducationalDegree), - IdCardPage1 = - GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage1), + IdCardPage1 = + GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage1), - IdCardPage2 = - GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage2), + IdCardPage2 = + GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage2), - IdCardPage3 = - GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage3), + IdCardPage3 = + GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage3), - IdCardPage4 = - GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage4), + IdCardPage4 = + GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage4), - NationalCardFront = GetItemFromCollectionByLabel(currentDocuments, medias, - DocumentItemLabel.NationalCardFront), + NationalCardFront = GetItemFromCollectionByLabel(currentDocuments, medias, + DocumentItemLabel.NationalCardFront), - NationalCardRear = GetItemFromCollectionByLabel(currentDocuments, medias, - DocumentItemLabel.NationalCardRear), + NationalCardRear = GetItemFromCollectionByLabel(currentDocuments, medias, + DocumentItemLabel.NationalCardRear), - EmployeePicture = GetItemFromCollectionByLabel(currentDocuments, medias, - DocumentItemLabel.EmployeePicture), + EmployeePicture = GetItemFromCollectionByLabel(currentDocuments, medias, + DocumentItemLabel.EmployeePicture), - EmployeeFullName = employee.FullName, - WorkshopId = workshopId, - EmployeeId = entity.EmployeeId, - Gender = employee.Gender, - NationalCode = employee.NationalCode, - EmployeeFName = employee.FName, - EmployeeLName = employee.LName, - Nationality = employee.Nationality, - IdNumber = employee.IdNumber, - FatherName = employee.FatherName, - DateOfBirth = employee.DateOfBirth.ToFarsi(), - MaritalStatus = employee.MaritalStatus, - MilitaryServiceStatus = employee.MilitaryService, - SubmittedItemsCount = currentDocuments.Count(x => x.DocumentStatus == DocumentStatus.SubmittedByAdmin) - }; - } + EmployeeFullName = employee.FullName, + WorkshopId = workshopId, + EmployeeId = entity.EmployeeId, + Gender = employee.Gender, + NationalCode = employee.NationalCode, + EmployeeFName = employee.FName, + EmployeeLName = employee.LName, + Nationality = employee.Nationality, + IdNumber = employee.IdNumber, + FatherName = employee.FatherName, + DateOfBirth = employee.DateOfBirth.ToFarsi(), + MaritalStatus = employeeClientTemp == null ? employee.MaritalStatus : employeeClientTemp.MaritalStatus, + MilitaryServiceStatus = employee.MilitaryService, + SubmittedItemsCount = currentDocuments.Count(x => x.DocumentStatus is DocumentStatus.SubmittedByAdmin or DocumentStatus.SubmittedByClient) + }; + } - /// - /// دریافت کارگاه هایی که اقدام به آپلود مدارک کرده اند - /// - public List GetWorkshopsWithUploadedDocumentsForChecker() - { - return _employeeDocumentsRepository.GetWorkshopsWithUploadedDocuments(); - } + /// + /// دریافت کارگاه هایی که اقدام به آپلود مدارک کرده اند + /// + public List GetWorkshopsWithUploadedDocumentsForChecker() + { + return _employeeDocumentsRepository.GetWorkshopsWithUploadedDocuments(); + } /// /// دریافت پرسنلی که اقدام به آپلود مدارک کرده اند @@ -1334,13 +1355,13 @@ namespace CompanyManagment.Application /// دریافت کارگاه هایی که اقدام به آپلود مدارک "ضروری" کرده اند، برای کارپوشه /// public List GetWorkshopsWithDocumentsAwaitingReviewForCheckerWorkFlow() - { - return _employeeDocumentsRepository.GetWorkshopsWithDocumentsAwaitingReviewForCheckerWorkFlow(); - } + { + return _employeeDocumentsRepository.GetWorkshopsWithDocumentsAwaitingReviewForCheckerWorkFlow(); + } - /// - /// دریافت پرسنلی در کارگاه که مدارک ضروری آن ها آپلود شده ولی تایید یا رد نشده اند، برای کارپوشه - /// + /// + /// دریافت پرسنلی در کارگاه که مدارک ضروری آن ها آپلود شده ولی تایید یا رد نشده اند، برای کارپوشه + /// public List GetDocumentsAwaitingReviewByWorkshopIdForCheckerWorkFlow(long workshopId) { @@ -1360,10 +1381,85 @@ namespace CompanyManagment.Application return result; } - public int GetCheckerWorkFlowCount() + public async Task GetCheckerWorkFlowCount() { - return _employeeDocumentsRepository.GetCheckerWorkFlowCount(); + return await _employeeDocumentsRepository.GetCheckerWorkFlowCount(); } + + public OperationResult AddRangeEmployeeDocumentItemsByAdmin(long workshopId, long employeeId, List command) + { + OperationResult op = new(); + + var (uploaderId, uploaderType) = _authHelper.GetUserTypeWithId(); + + if (!_employeeRepository.Exists(x => x.id == employeeId)) + + return op.Failed("پرسنل یافت نشد"); + + + if (!_workshopRepository.Exists(x => x.id == workshopId)) + return op.Failed("کارگاه وجود ندارد"); + + + var entity = + _employeeDocumentsRepository.GetByEmployeeIdWorkshopIdWithItems(employeeId, workshopId); + + + + using var scope = new TransactionScope(); + + + //if record doesn't exist but employee exists and also the workshop, create a new record + if (entity == null) + { + var opCreate = Create(new CreateEmployeeDocuments() + { EmployeeId = employeeId, WorkshopId = workshopId }); + if (opCreate.IsSuccedded == false) return opCreate; + entity = _employeeDocumentsRepository.GetByEmployeeIdWorkshopId(employeeId, workshopId); + } + + List newEntities = new(); + foreach (var item in command) + { + DeleteMultipleUnsubmittedDocumentsByLabel(entity, item.Label, uploaderType); + + var mediaOpResult = UploadDocumentItemFile(item.PictureFile, item.Label.ToString(), + $"temp/{workshopId}/{employeeId}"); + + if (mediaOpResult.IsSuccedded == false) + return mediaOpResult; + + + //if the mediaId is already in use in our table return failed + if (_employeeDocumentItemRepository.Exists(x => x.MediaId == mediaOpResult.SendId)) + return op.Failed("امکان ثبت رکورد تکراری وجود ندارد"); + + var newEntity = new EmployeeDocumentItem(workshopId, employeeId, mediaOpResult.SendId, entity.id, item.Label, uploaderId, uploaderType, DocumentStatus.SubmittedByAdmin); + newEntities.Add(newEntity); + } + + var currentItems = entity.EmployeeDocumentItemCollection.GroupBy(x => x.DocumentLabel) + .Where(x => command.Any(a => a.Label == x.Key)) + .Select(x => x.MaxBy(y => y.CreationDate)); + + //This can bite! + _employeeDocumentItemRepository.RemoveRange(currentItems); + _employeeDocumentItemRepository.SaveChanges(); + + _employeeDocumentItemRepository.AddRange(newEntities); + _employeeDocumentItemRepository.SaveChanges(); + + SubmitDocumentItemsByEmployeeIdWorkshopId(employeeId, workshopId); + + entity.UpdateIsConfirmed(); + entity.UpdateIsSentToChecker(); + _employeeDocumentsRepository.SaveChanges(); + + scope.Complete(); + return op.Succcedded(entity.id); + } + + #endregion @@ -1374,286 +1470,286 @@ namespace CompanyManagment.Application /// مدارک ثبت نشده با برچسب داده شده را پاک می کند. هنگامی استفاده می شود که کاربر یک آیتم را آپلود می کند /// private void DeleteMultipleUnsubmittedDocumentsByLabel(EmployeeDocuments includedEmployeeDocuments, - DocumentItemLabel label,UserType userType) - { - var items = includedEmployeeDocuments.EmployeeDocumentItemCollection - .Where(x => x.DocumentStatus == DocumentStatus.Unsubmitted && x.DocumentLabel == label && x.UploaderType == userType).ToList(); + DocumentItemLabel label, UserType userType) + { + var items = includedEmployeeDocuments.EmployeeDocumentItemCollection + .Where(x => x.DocumentStatus == DocumentStatus.Unsubmitted && x.DocumentLabel == label && x.UploaderType == userType).ToList(); - var mediaIds = items.Select(x => x.MediaId); - if (items.Any()) - { - DeleteMultipleDocumentItemFiles(mediaIds); - _employeeDocumentItemRepository.RemoveRange(items); - _employeeDocumentItemRepository.SaveChanges(); - } + var mediaIds = items.Select(x => x.MediaId); + if (items.Any()) + { + DeleteMultipleDocumentItemFiles(mediaIds); + _employeeDocumentItemRepository.RemoveRange(items); + _employeeDocumentItemRepository.SaveChanges(); + } - } - /// - /// مدارک ثبت نشده با برچسب داده شده را پاک می کند. هنگامی استفاده می شود که کاربر یک آیتم را آپلود می کند - /// - private void DeleteMultipleUnsubmittedDocumentsByLabel(EmployeeDocuments includedEmployeeDocuments, - List labels, UserType userType) - { - var items = includedEmployeeDocuments.EmployeeDocumentItemCollection - .Where(x => x.DocumentStatus == DocumentStatus.Unsubmitted && labels.Contains(x.DocumentLabel) && x.UploaderType == userType).ToList(); + } + /// + /// مدارک ثبت نشده با برچسب داده شده را پاک می کند. هنگامی استفاده می شود که کاربر یک آیتم را آپلود می کند + /// + private void DeleteMultipleUnsubmittedDocumentsByLabel(EmployeeDocuments includedEmployeeDocuments, + List labels, UserType userType) + { + var items = includedEmployeeDocuments.EmployeeDocumentItemCollection + .Where(x => x.DocumentStatus == DocumentStatus.Unsubmitted && labels.Contains(x.DocumentLabel) && x.UploaderType == userType).ToList(); - var mediaIds = items.Select(x => x.MediaId); - if (items.Any()) - { - DeleteMultipleDocumentItemFiles(mediaIds); - _employeeDocumentItemRepository.RemoveRange(items); - _employeeDocumentItemRepository.SaveChanges(); - } - } + var mediaIds = items.Select(x => x.MediaId); + if (items.Any()) + { + DeleteMultipleDocumentItemFiles(mediaIds); + _employeeDocumentItemRepository.RemoveRange(items); + _employeeDocumentItemRepository.SaveChanges(); + } + } - //You don't need this method to be public as it's already called where its necessary - private OperationResult Create(CreateEmployeeDocuments command) + //You don't need this method to be public as it's already called where its necessary + private OperationResult Create(CreateEmployeeDocuments command) { OperationResult op = new(); if (!_employeeRepository.Exists(x => x.id == command.EmployeeId)) return op.Failed("پرسنل یافت نشد"); - if (!_workshopRepository.Exists(x => x.id == command.WorkshopId)) - return op.Failed("کارگاه وجود ندارد"); + if (!_workshopRepository.Exists(x => x.id == command.WorkshopId)) + return op.Failed("کارگاه وجود ندارد"); - // اگر در دیتابیس وجود داشت ارور ندهد و عملیاتی انجام ندهد - if (_employeeDocumentsRepository.Exists(x => x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId)) - return op.Succcedded(_employeeDocumentsRepository - .GetByEmployeeIdWorkshopId(command.EmployeeId, command.WorkshopId).id); + // اگر در دیتابیس وجود داشت ارور ندهد و عملیاتی انجام ندهد + if (_employeeDocumentsRepository.Exists(x => x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId)) + return op.Succcedded(_employeeDocumentsRepository + .GetByEmployeeIdWorkshopId(command.EmployeeId, command.WorkshopId).id); - var gender = _employeeRepository.Get(command.EmployeeId).Gender; - var entity = new EmployeeDocuments(command.EmployeeId, command.WorkshopId, gender); + var gender = _employeeRepository.Get(command.EmployeeId).Gender; + var entity = new EmployeeDocuments(command.EmployeeId, command.WorkshopId, gender); - _employeeDocumentsRepository.Create(entity); - _employeeDocumentsRepository.SaveChanges(); + _employeeDocumentsRepository.Create(entity); + _employeeDocumentsRepository.SaveChanges(); - return op.Succcedded(entity.id); - } + return op.Succcedded(entity.id); + } - /// - /// برای حذف فایل مدارک - /// - private OperationResult DeleteMultipleDocumentItemFiles(IEnumerable mediaIds) - { - OperationResult op = new(); - var medias = _mediaRepository.GetRange(mediaIds); - if (medias == null || !medias.Any()) - return op.Failed("رسانه مورد نظر یافت نشد"); + /// + /// برای حذف فایل مدارک + /// + private OperationResult DeleteMultipleDocumentItemFiles(IEnumerable mediaIds) + { + OperationResult op = new(); + var medias = _mediaRepository.GetRange(mediaIds); + if (medias == null || !medias.Any()) + return op.Failed("رسانه مورد نظر یافت نشد"); - foreach (var media in medias) - { + foreach (var media in medias) + { - var filePath = media.Path; - var thumbnailPath = GetThumbnailPathFromFilePath(filePath); - try - { - if (System.IO.File.Exists(filePath)) - System.IO.File.Delete(filePath); + var filePath = media.Path; + var thumbnailPath = GetThumbnailPathFromFilePath(filePath); + try + { + if (System.IO.File.Exists(filePath)) + System.IO.File.Delete(filePath); - if (System.IO.File.Exists(thumbnailPath)) - System.IO.File.Delete(thumbnailPath); + if (System.IO.File.Exists(thumbnailPath)) + System.IO.File.Delete(thumbnailPath); - } - catch - { - // ignored - } - } + } + catch + { + // ignored + } + } - _mediaRepository.RemoveRange(medias); - _mediaRepository.SaveChanges(); - //if (somethingWentWrong) - // return op.Failed("خطایی در حذف فایل رخ داده است"); - return op.Succcedded(); - } + _mediaRepository.RemoveRange(medias); + _mediaRepository.SaveChanges(); + //if (somethingWentWrong) + // return op.Failed("خطایی در حذف فایل رخ داده است"); + return op.Succcedded(); + } - /// - /// برای حذف فایل یکی از مدارک - /// - private OperationResult DeleteDocumentItemFile(long mediaId) - { - OperationResult op = new(); - var media = _mediaRepository.Get(mediaId); - if (media == null) - return op.Failed("رسانه مورد نظر یافت نشد"); - var filePath = media.Path; - var thumbnailPath = GetThumbnailPathFromFilePath(filePath); - try - { - if (System.IO.File.Exists(filePath)) - System.IO.File.Delete(filePath); + /// + /// برای حذف فایل یکی از مدارک + /// + private OperationResult DeleteDocumentItemFile(long mediaId) + { + OperationResult op = new(); + var media = _mediaRepository.Get(mediaId); + if (media == null) + return op.Failed("رسانه مورد نظر یافت نشد"); + var filePath = media.Path; + var thumbnailPath = GetThumbnailPathFromFilePath(filePath); + try + { + if (System.IO.File.Exists(filePath)) + System.IO.File.Delete(filePath); - if (System.IO.File.Exists(thumbnailPath)) - System.IO.File.Delete(thumbnailPath); + if (System.IO.File.Exists(thumbnailPath)) + System.IO.File.Delete(thumbnailPath); - } - catch - { - return op.Failed("خطایی در حذف فایل رخ داده است"); - } + } + catch + { + return op.Failed("خطایی در حذف فایل رخ داده است"); + } - _mediaRepository.Remove(media.id); - _mediaRepository.SaveChanges(); - return op.Succcedded(); - } + _mediaRepository.Remove(media.id); + _mediaRepository.SaveChanges(); + return op.Succcedded(); + } - /// - /// جابجا کردن فایل یکی از مدارک، استفاده شده هنگام تایید و رد - /// - private OperationResult MoveDocumentItemFile(long mediaId, string newRelativePath) - { - OperationResult op = new(); - var media = _mediaRepository.Get(mediaId); + /// + /// جابجا کردن فایل یکی از مدارک، استفاده شده هنگام تایید و رد + /// + private OperationResult MoveDocumentItemFile(long mediaId, string newRelativePath) + { + OperationResult op = new(); + var media = _mediaRepository.Get(mediaId); - var oldFilePath = media.Path; - var oldThumbnailPath = GetThumbnailPathFromFilePath(oldFilePath); + var oldFilePath = media.Path; + var oldThumbnailPath = GetThumbnailPathFromFilePath(oldFilePath); - var newDirectory = Path.Combine(_basePath, newRelativePath); - Directory.CreateDirectory(newDirectory); + var newDirectory = Path.Combine(_basePath, newRelativePath); + Directory.CreateDirectory(newDirectory); - string newFilePath = Path.Combine(newDirectory, Path.GetFileName(oldFilePath)!); - string newThumbnailFilePath = Path.Combine(newDirectory, Path.GetFileName(oldThumbnailPath)); + string newFilePath = Path.Combine(newDirectory, Path.GetFileName(oldFilePath)!); + string newThumbnailFilePath = Path.Combine(newDirectory, Path.GetFileName(oldThumbnailPath)); - try - { + try + { System.IO.File.Move(oldFilePath, newFilePath); System.IO.File.Move(oldThumbnailPath, newThumbnailFilePath); - } + } - catch - { - return op.Failed("در جابجایی فایل خطایی رخ داده است"); - } + catch + { + return op.Failed("در جابجایی فایل خطایی رخ داده است"); + } - media.Edit(newFilePath, media.Type, media.Category); - _mediaRepository.SaveChanges(); - return op.Succcedded(); - } + media.Edit(newFilePath, media.Type, media.Category); + _mediaRepository.SaveChanges(); + return op.Succcedded(); + } - /// - /// دریافت فایل و نوشتن آن در مسیر داده شده، و ثبت مدیا - /// - /// فایل - /// برچسب مدارک - /// مسیر فایل - /// - private OperationResult UploadDocumentItemFile(IFormFile file, string label, string relativePath) - { - OperationResult op = new(); - var now= DateTime.Now; + /// + /// دریافت فایل و نوشتن آن در مسیر داده شده، و ثبت مدیا + /// + /// فایل + /// برچسب مدارک + /// مسیر فایل + /// + private OperationResult UploadDocumentItemFile(IFormFile file, string label, string relativePath) + { + OperationResult op = new(); + var now = DateTime.Now; PersianCalendar pc = new PersianCalendar(); var yearFa = pc.GetYear(now); - var monthFa = pc.GetMonth(now); + var monthFa = pc.GetMonth(now); var dayFa = pc.GetDayOfMonth(now); var ticks = now.Ticks % 864_000_000_000; - List allowedExtensions = [".png", ".jpg", ".jpeg"]; - var path = Path.Combine(_basePath, relativePath); - var fileExtension = Path.GetExtension(file.FileName); + List allowedExtensions = [".png", ".jpg", ".jpeg"]; + var path = Path.Combine(_basePath, relativePath); + var fileExtension = Path.GetExtension(file.FileName); if (file.Length > (50 * 1024 * 1024)) return op.Failed("حجم فایل نمی تواند بیشتر از 50 مگابایت باشد"); - if (!allowedExtensions.Contains(fileExtension)) - { - var operationMessage = ":فرمت فایل باید یکی از موارد زیر باشد"; - operationMessage += "\n"; - operationMessage += string.Join(" ", allowedExtensions); - return op.Failed(operationMessage); - } + if (!allowedExtensions.Contains(fileExtension)) + { + var operationMessage = ":فرمت فایل باید یکی از موارد زیر باشد"; + operationMessage += "\n"; + operationMessage += string.Join(" ", allowedExtensions); + return op.Failed(operationMessage); + } - Directory.CreateDirectory(path); + Directory.CreateDirectory(path); - var type = Path.GetExtension(file.FileName); + var type = Path.GetExtension(file.FileName); - var uniqueFileName = $"{label}-{yearFa}-{monthFa}-{dayFa}-{ticks}{type}"; - var filePath = Path.Combine(path, uniqueFileName); - using (var fileStream = new FileStream(filePath, FileMode.CreateNew)) - { - file.CopyTo(fileStream); - } - #region Thumbnail Creation + var uniqueFileName = $"{label}-{yearFa}-{monthFa}-{dayFa}-{ticks}{type}"; + var filePath = Path.Combine(path, uniqueFileName); + using (var fileStream = new FileStream(filePath, FileMode.CreateNew)) + { + file.CopyTo(fileStream); + } + #region Thumbnail Creation - var uniqueFileNameThumbnail = $"{label}-{yearFa}-{monthFa}-{dayFa}-{ticks}-thumbnail{type}"; - var thumbnailFilePath = Path.Combine(path, uniqueFileNameThumbnail); - var thumbnail = Tools.ResizeImage(filePath, 150, 150); - System.IO.File.WriteAllBytes(thumbnailFilePath, Convert.FromBase64String(thumbnail)); - #endregion + var uniqueFileNameThumbnail = $"{label}-{yearFa}-{monthFa}-{dayFa}-{ticks}-thumbnail{type}"; + var thumbnailFilePath = Path.Combine(path, uniqueFileNameThumbnail); + var thumbnail = Tools.ResizeImage(filePath, 150, 150); + System.IO.File.WriteAllBytes(thumbnailFilePath, Convert.FromBase64String(thumbnail)); + #endregion - var mediaEntity = new Media(filePath, type, "فایل", "EmployeeDocuments"); + var mediaEntity = new Media(filePath, type, "فایل", "EmployeeDocuments"); - _mediaRepository.Create(mediaEntity); - _mediaRepository.SaveChanges(); + _mediaRepository.Create(mediaEntity); + _mediaRepository.SaveChanges(); - return op.Succcedded(mediaEntity.id); + return op.Succcedded(mediaEntity.id); - } + } - //private OperationResult UploadExistingRollCallEmployeePicture(long mediaId, long workshopId, long employeeId) - //{ - // OperationResult op = new(); - // var media = _mediaRepository.Get(mediaId); + //private OperationResult UploadExistingRollCallEmployeePicture(long mediaId, long workshopId, long employeeId) + //{ + // OperationResult op = new(); + // var media = _mediaRepository.Get(mediaId); - // if (media == null) - // return op.Failed("فایل مورد نظر یافت نشد"); + // if (media == null) + // return op.Failed("فایل مورد نظر یافت نشد"); - // var path = Path.Combine(_webHostEnvironment.ContentRootPath, "Storage", "EmployeeDocuments", "temp", - // $"{workshopId}", $"{employeeId}"); + // var path = Path.Combine(_webHostEnvironment.ContentRootPath, "Storage", "EmployeeDocuments", "temp", + // $"{workshopId}", $"{employeeId}"); - // var uniqueFileName = $"{DocumentItemLabel.EmployeePicture.ToString()}-{Guid.NewGuid()}{media.Type}"; - // var newFilePath = Path.Combine(path, uniqueFileName); - // try - // { - // Directory.CreateDirectory(newFilePath); + // var uniqueFileName = $"{DocumentItemLabel.EmployeePicture.ToString()}-{Guid.NewGuid()}{media.Type}"; + // var newFilePath = Path.Combine(path, uniqueFileName); + // try + // { + // Directory.CreateDirectory(newFilePath); - // if (!System.IO.File.Exists(media.Path)) - // return op.Failed("فایل مورد نظر یافت نشد"); + // if (!System.IO.File.Exists(media.Path)) + // return op.Failed("فایل مورد نظر یافت نشد"); - // System.IO.File.Copy(media.Path, newFilePath); - // } - // catch - // { - // return op.Failed("در جابجایی فایل خطایی رخ داده است"); - // } + // System.IO.File.Copy(media.Path, newFilePath); + // } + // catch + // { + // return op.Failed("در جابجایی فایل خطایی رخ داده است"); + // } - // var mediaEntity = new Media(newFilePath, media.Type, "فایل", "EmployeeDocuments"); - // _mediaRepository.Create(mediaEntity); - // _mediaRepository.SaveChanges(); + // var mediaEntity = new Media(newFilePath, media.Type, "فایل", "EmployeeDocuments"); + // _mediaRepository.Create(mediaEntity); + // _mediaRepository.SaveChanges(); - // return op.Succcedded(mediaEntity.id); + // return op.Succcedded(mediaEntity.id); - //} + //} - /// - /// متد پر استفاده برای دریافت آخرین مدارک تایید شده فرد - /// - private static List GetCurrentConfirmedDocuments(EmployeeDocuments entity) - { - return entity.EmployeeDocumentItemCollection.Where(x => x.DocumentStatus == DocumentStatus.Confirmed) - .GroupBy(x => x.DocumentLabel) - .Select(x => x.MaxBy(y => y.CreationDate)).ToList(); - } + /// + /// متد پر استفاده برای دریافت آخرین مدارک تایید شده فرد + /// + private static List GetCurrentConfirmedDocuments(EmployeeDocuments entity) + { + return entity.EmployeeDocumentItemCollection.Where(x => x.DocumentStatus == DocumentStatus.Confirmed) + .GroupBy(x => x.DocumentLabel) + .Select(x => x.MaxBy(y => y.CreationDate)).ToList(); + } - /// - /// با توجه به جنسیت مدارک لازم را تعیین می کند، مثلا معافیت سربازی برای آقایان - /// - /// - /// "مرد" یا "زن" - private bool HasRequiredDocuments(List items, string gender) + /// + /// با توجه به جنسیت مدارک لازم را تعیین می کند، مثلا معافیت سربازی برای آقایان + /// + /// + /// "مرد" یا "زن" + private bool HasRequiredDocuments(List items, string gender) { @@ -1663,41 +1759,41 @@ namespace CompanyManagment.Application List labels = items.GroupBy(x => x.DocumentLabel) .Select(x => x.Key).ToList(); - //if labels has all the required labels - if (labels.Count(x => requiredDocuments.Contains(x)) == requiredDocuments.Count()) - return true; - return false; - } + //if labels has all the required labels + if (labels.Count(x => requiredDocuments.Contains(x)) == requiredDocuments.Count()) + return true; + return false; + } - //for mapping purposes - private static EmployeeDocumentItemViewModel GetItemFromCollectionByLabel(List items, - List medias, DocumentItemLabel label) - { - if (items == null || items.Count == 0) - return new(); - var item = items.FirstOrDefault(x => x.DocumentLabel == label); + //for mapping purposes + private static EmployeeDocumentItemViewModel GetItemFromCollectionByLabel(List items, + List medias, DocumentItemLabel label) + { + if (items == null || items.Count == 0) + return new(); + var item = items.FirstOrDefault(x => x.DocumentLabel == label); - if (item == null || item.MediaId == 0) - return new(); + if (item == null || item.MediaId == 0) + return new(); - return new EmployeeDocumentItemViewModel() - { - DocumentItemLabel = label, - Id = item.id, - Status = item.DocumentStatus, - StatusString = item.DocumentStatus.ToString().ToLower(), - PicturePath = medias.FirstOrDefault(x => x.Id == item.MediaId)?.Path ?? "", - RejectionMessage = item.RejectionReason, - UploaderType = item.UploaderType - }; - } + return new EmployeeDocumentItemViewModel() + { + DocumentItemLabel = label, + Id = item.id, + Status = item.DocumentStatus, + StatusString = item.DocumentStatus.ToString().ToLower(), + PicturePath = medias.FirstOrDefault(x => x.Id == item.MediaId)?.Path ?? "", + RejectionMessage = item.RejectionReason, + UploaderType = item.UploaderType + }; + } - private static string GetThumbnailPathFromFilePath(string filePath) - { - return string.IsNullOrWhiteSpace(filePath)? string.Empty: Path.Combine(Path.GetDirectoryName(filePath)!, Path.GetFileNameWithoutExtension(filePath) + $"-thumbnail{Path.GetExtension(filePath)}"); - } + private static string GetThumbnailPathFromFilePath(string filePath) + { + return string.IsNullOrWhiteSpace(filePath) ? string.Empty : Path.Combine(Path.GetDirectoryName(filePath)!, Path.GetFileNameWithoutExtension(filePath) + $"-thumbnail{Path.GetExtension(filePath)}"); + } #endregion #region Old MEthods @@ -1769,7 +1865,7 @@ namespace CompanyManagment.Application //} #endregion - + } } diff --git a/CompanyManagment.Application/LeftWorkTempApplication.cs b/CompanyManagment.Application/LeftWorkTempApplication.cs new file mode 100644 index 00000000..5444bf5c --- /dev/null +++ b/CompanyManagment.Application/LeftWorkTempApplication.cs @@ -0,0 +1,262 @@ +using System; +using System.Linq; +using System.Threading.Tasks; +using _0_Framework.Application; +using _0_Framework_b.Application; +using Company.Domain.CheckoutAgg; +using Company.Domain.ContractAgg; +using Company.Domain.EmployeeAgg; +using Company.Domain.JobAgg; +using Company.Domain.LeftWorkAgg; +using Company.Domain.LeftWorkTempAgg; +using Company.Domain.RollCallEmployeeAgg; +using Company.Domain.RollCallEmployeeStatusAgg; +using Company.Domain.WorkshopAgg; +using CompanyManagment.App.Contracts.Checkout; +using CompanyManagment.App.Contracts.Contract; +using CompanyManagment.App.Contracts.LeftWork; +using CompanyManagment.App.Contracts.LeftWorkTemp; +using CompanyManagment.App.Contracts.ReportClient; +using CompanyManagment.App.Contracts.RollCallEmployee; +using OperationResult = _0_Framework.Application.OperationResult; +using Tools = _0_Framework.Application.Tools; + +namespace CompanyManagment.Application; + +public class LeftWorkTempApplication : ILeftWorkTempApplication +{ + private readonly ILeftWorkTempRepository _leftWorkTempRepository; + private readonly ILeftWorkRepository _leftWorkRepository; + private readonly IWorkshopRepository _workshopRepository; + private readonly IEmployeeRepository _employeeRepository; + private readonly IJobRepository _jobRepository; + private readonly ICheckoutRepository _checkoutRepository; + private readonly IContractRepository _contractRepository; + private readonly IRollCallEmployeeRepository _rollCallEmployeeRepository; + private readonly IRollCallEmployeeStatusRepository _rollCallEmployeeStatusRepository; + + + public LeftWorkTempApplication(ILeftWorkTempRepository leftWorkTempRepository, ILeftWorkRepository leftWorkRepository, IWorkshopRepository workshopRepository, IEmployeeRepository employeeRepository, IJobRepository jobRepository, ICheckoutRepository checkoutRepository, IContractRepository contractRepository, IRollCallEmployeeStatusRepository rollCallEmployeeStatusRepository, IRollCallEmployeeRepository rollCallEmployeeRepository) + { + _leftWorkTempRepository = leftWorkTempRepository; + _leftWorkRepository = leftWorkRepository; + _workshopRepository = workshopRepository; + _employeeRepository = employeeRepository; + _jobRepository = jobRepository; + _checkoutRepository = checkoutRepository; + _contractRepository = contractRepository; + _rollCallEmployeeStatusRepository = rollCallEmployeeStatusRepository; + _rollCallEmployeeRepository = rollCallEmployeeRepository; + } + + public async Task Create(CreateLeftWorkTemp command) + { + var op = new OperationResult(); + + foreach (var employee in command.EmployeeIds) + { + #region Validation + + if (command.LeftWorkTime.TryToGeorgianDateTime(out var leftWorkDateGr) == false) + { + return op.Failed("تاریخ شروع به کار وارد شده نامعتبر است"); + } + if (command.LastDayStanding.TryToGeorgianDateTime(out var lastDayStandingDateGr) == false) + { + return op.Failed("تاریخ شروع به کار وارد شده نامعتبر است"); + } + var leftWork = _leftWorkRepository.GetByDateAndWorkshopIdAndEmployeeId(command.WorkshopId, employee, lastDayStandingDateGr); + + if (lastDayStandingDateGr.AddDays(1).Date != leftWorkDateGr) + { + return op.Failed("تاریخ آخرین روز کاری با تاریخ ترک کار یک روز اختلاف ندارند"); + } + + if (leftWork == null) + { + return op.Failed("شروع به کار پرسنل یافت نشد"); + } + + if (leftWork.WorkshopId != command.WorkshopId || leftWork.EmployeeId != employee) + { + return op.Failed("اطلاعات وارد شده نامعتبر است"); + } + + + + //if (leftWork.StartWorkDate >= leftWorkDateGr) + //{ + // return op.Failed("ترک کار نمیتواند کوچک تر یا مساوی شروع به کار باشد"); + //} + + //if (_checkoutRepository.Exists(x => x.EmployeeId == leftWorkTemp.EmployeeId && + // x.WorkshopId == leftWorkTemp.WorkshopId && + // x.ContractStart <= lastDayStandingGr && x.ContractEnd >= lastDayStandingGr)) + //{ + // return op.Failed("این پرسنل در تاریخ ترک کار وارد شده دارای فیش حقوقی میباشد. ابتدا فیش حقوقی پرسنل را حذف کنید "); + //} + + //if (_contractRepository.Exists(x => x.EmployeeId == leftWorkTemp.EmployeeId && + // x.WorkshopIds == leftWorkTemp.WorkshopId && + // x.ContarctStart <= lastDayStandingGr && x.ContractEnd >= lastDayStandingGr)) + //{ + // return op.Failed("این پرسنل در تاریخ ترک کار وارد شده دارای قرارداد میباشد"); + //} + + + #endregion + + var leftWorkTemp = LeftWorkTemp.CreateLeftWork(leftWork.Id, leftWork.StartWorkDateGr, leftWorkDateGr, lastDayStandingDateGr, + command.WorkshopId, employee, leftWork.JobId); + + await _leftWorkTempRepository.CreateAsync(leftWorkTemp); + } + + await _leftWorkTempRepository.SaveChangesAsync(); + return op.Succcedded(); + } + + public Task GetStartAndLeftWorkDetails(long employeeId, long workshopId) + { + return _leftWorkTempRepository.GetStartAndLeftWorkDetails(employeeId, workshopId); + } + + public async Task AcceptStartWork(AcceptStartWorkTemp command) + { + var op = new OperationResult(); + if (command.StartDateTime.TryToGeorgianDateTime(out var startDateGr) == false) + { + return op.Failed("تاریخ شروع به کار وارد شده نامعتبر است"); + } + + var leftWorkTemp = _leftWorkTempRepository.Get(command.LeftWorkTempId); + + if (leftWorkTemp.LeftWorkType != LeftWorkTempType.StartWork) + { + return op.Failed("اطلاعات وارد شده نامعتبر است"); + } + + if (_leftWorkRepository.Exists(x => x.WorkshopId == leftWorkTemp.WorkshopId && x.EmployeeId == leftWorkTemp.EmployeeId && x.LeftWorkDate >= startDateGr)) + { + return op.Failed("شروع به کار وارد شده با ترک کار های قبلی تداخل دارد"); + } + + + if (_jobRepository.Exists(x => x.id == command.JobId) == false) + { + return op.Failed("سمت وارد شده نامعتبر است"); + } + + var defaultTime = new DateTime(2121, 03, 21); + + var workshop = _workshopRepository.Get(leftWorkTemp.WorkshopId); + var employee = _employeeRepository.Get(leftWorkTemp.EmployeeId); + + var newLeftWork = new LeftWork(defaultTime, startDateGr, leftWorkTemp.WorkshopId, leftWorkTemp.EmployeeId, + employee.FullName, workshop.WorkshopFullName, command.JobId, false, false, false, false, "", ""); + + await _leftWorkRepository.CreateAsync(newLeftWork); + _leftWorkTempRepository.Remove(leftWorkTemp); + await _leftWorkRepository.SaveChangesAsync(); + await _leftWorkTempRepository.SaveChangesAsync(); + return op.Succcedded(); + } + + public async Task AcceptLeftWork(AcceptLeftWorkTemp command) + { + var op = new OperationResult(); + if (command.LeftWorkTime.TryToGeorgianDateTime(out var leftWorkDateGr) == false) + { + return op.Failed("تاریخ ترک کار وارد شده نامعتبر است"); + } + + if (command.LastDayStanding.TryToGeorgianDateTime(out var lastDayStandingGr) == false) + { + return op.Failed("تاریخ آخرین روز کاری وارد شده نامعتبر است"); + } + + if (lastDayStandingGr.AddDays(1).Date != leftWorkDateGr) + { + return op.Failed("تاریخ آخرین روز کاری با تاریخ ترک کار یک روز اختلاف ندارند"); + } + + var leftWorkTemp = _leftWorkTempRepository.Get(command.LeftWorkTempId); + + if (leftWorkTemp == null) + { + return op.Failed("ترک کار وارد شده یافت نشد"); + } + + + if (leftWorkTemp.LeftWorkType != LeftWorkTempType.LeftWork) + { + return op.Failed("اطلاعات وارد شده نامعتبر است"); + } + + var leftWork = _leftWorkRepository.Get(leftWorkTemp.LeftWorkId); + + + if (leftWork == null) + return op.Failed("شروع به کار پرسنل یافت نشد"); + + if (leftWork.StartWorkDate >= leftWorkDateGr) + { + return op.Failed("ترک کار نمیتواند کوچک تر یا مساوی شروع به کار باشد"); + } + + if (_checkoutRepository.Exists(x => x.EmployeeId == leftWorkTemp.EmployeeId && + x.WorkshopId == leftWorkTemp.WorkshopId && + x.ContractStart <= lastDayStandingGr && x.ContractEnd >= lastDayStandingGr)) + { + return op.Failed("این پرسنل در تاریخ ترک کار وارد شده دارای فیش حقوقی میباشد. ابتدا فیش حقوقی پرسنل را حذف کنید "); + } + + leftWork.Edit(leftWorkDateGr, leftWork.StartWorkDate, leftWork.WorkshopId, leftWork.EmployeeId, leftWork.JobId, + leftWork.IncludeStatus, leftWork.AddBonusesPay, leftWork.AddYearsPay, leftWork.AddLeavePay); + + _leftWorkTempRepository.Remove(leftWorkTemp); + await _leftWorkRepository.SaveChangesAsync(); + await _leftWorkTempRepository.SaveChangesAsync(); + + IfEmployeeHasNewLeftWorkDateAddEndDateToRollCallStatus(leftWork.EmployeeId); + + return op.Succcedded(); + } + //این متد ترک کار های کارمند را با فعالیت حضور غیاب یکپارچه می کند + private void IfEmployeeHasNewLeftWorkDateAddEndDateToRollCallStatus(long employeeId) + { + //get last leftworks for employee in all workshops + var leftWorks = _leftWorkRepository.search(new LeftWorkSearchModel() { EmployeeId = employeeId }).GroupBy(x => x.WorkshopId).Select(x => + { + var leftWork = x.MaxBy(y => y.StartWorkDateGr); + return new LeftWorkViewModel() + { + EmployeeId = employeeId, + WorkshopId = x.Key, + LeftWorkDateGr = leftWork.LeftWorkDateGr.Date.AddDays(-1), + StartWorkDateGr = leftWork.StartWorkDateGr + }; + }).ToList(); + + //get rollCallEmployee associated with those leftworks which have a higher end date than leftworkDate + var rollCallsEmployee = _rollCallEmployeeRepository.GetByEmployeeIdWithStatuses(employeeId) + .Where(x => leftWorks.Any(y => y.WorkshopId == x.WorkshopId)).ToList(); + + var joinedList = rollCallsEmployee.Join(leftWorks, x => x.WorkshopId, y => y.WorkshopId, (x, y) => new + { + x.WorkshopId, + x.EmployeeId, + y.LeftWorkDateGr, + Status = x.Statuses.OrderByDescending(z => z.StartDate).FirstOrDefault(z => z.StartDateGr.Date < y.LeftWorkDateGr && z.EndDateGr.Date > y.LeftWorkDateGr) + }); + + //shaping up the list to send as parameter to repository + var newRollCallRecords = joinedList.Where(x => x.Status != null).Select(x => new AdjustRollCallEmployeesWithEmployeeLeftWork() + { + LeaveDate = x.LeftWorkDateGr, + RollCallStatusId = x.Status.Id + }).ToList(); + if (newRollCallRecords.Count > 0) + _rollCallEmployeeStatusRepository.AdjustRollCallStatusEndDates(newRollCallRecords); + } +} \ No newline at end of file diff --git a/CompanyManagment.Application/PersonnelCodeApplication.cs b/CompanyManagment.Application/PersonnelCodeApplication.cs index da131b8e..e95cbef7 100644 --- a/CompanyManagment.Application/PersonnelCodeApplication.cs +++ b/CompanyManagment.Application/PersonnelCodeApplication.cs @@ -76,4 +76,9 @@ public class PersonnelCodeApplication : IPersonnelCodeApplication { return _personnelCodeRepository.GetEmployeeIdByPersonelCode(personleCode, workshopId); } + + public long GetLastPersonnelCodeByWorkshop(long workshopId) + { + return _personnelCodeRepository.GetLastPersonnelCodeByWorkshop(workshopId); + } } \ No newline at end of file diff --git a/CompanyManagment.Application/RollCallEmployeeStatusApplication.cs b/CompanyManagment.Application/RollCallEmployeeStatusApplication.cs index 3d1ed12e..faaaee3a 100644 --- a/CompanyManagment.Application/RollCallEmployeeStatusApplication.cs +++ b/CompanyManagment.Application/RollCallEmployeeStatusApplication.cs @@ -5,12 +5,12 @@ using Company.Domain.RollCallEmployeeStatusAgg; using CompanyManagment.App.Contracts.RollCallEmployeeStatus; using System; using System.Collections.Generic; +using System.Globalization; using System.Linq; using Company.Domain.RollCallServiceAgg; -using System.Globalization; -using CompanyManagment.EFCore.Migrations; -using RollCallEmployee = Company.Domain.RollCallEmployeeAgg.RollCallEmployee; -using RollCallEmployeeStatus = Company.Domain.RollCallEmployeeStatusAgg.RollCallEmployeeStatus; +using Company.Domain.LeftWorkTempAgg; +using Company.Domain.LeftWorkInsuranceAgg; +using CompanyManagment.App.Contracts.LeftWorkTemp; namespace CompanyManagment.Application @@ -21,14 +21,19 @@ namespace CompanyManagment.Application private readonly IRollCallEmployeeRepository _rollCallEmployeeRepository; private readonly ILeftWorkRepository _leftWorkRepository; private readonly IRollCallServiceRepository _rollCallServiceRepository; + private readonly ILeftWorkTempRepository _leftWorkTempRepository; + private readonly ILeftWorkInsuranceRepository _leftWorkInsuranceRepository; - public RollCallEmployeeStatusApplication(IRollCallEmployeeStatusRepository employeeStatusRepository, IRollCallEmployeeRepository rollCallEmployeeRepository, ILeftWorkRepository leftWorkRepository, IRollCallServiceRepository rollCallServiceRepository) + + public RollCallEmployeeStatusApplication(IRollCallEmployeeStatusRepository employeeStatusRepository, IRollCallEmployeeRepository rollCallEmployeeRepository, ILeftWorkRepository leftWorkRepository, IRollCallServiceRepository rollCallServiceRepository, ILeftWorkTempRepository leftWorkTempRepository, ILeftWorkInsuranceRepository leftWorkInsuranceRepository) { _employeeRollCallStatusRepository = employeeStatusRepository; _rollCallEmployeeRepository = rollCallEmployeeRepository; _leftWorkRepository = leftWorkRepository; _rollCallServiceRepository = rollCallServiceRepository; + _leftWorkTempRepository = leftWorkTempRepository; + _leftWorkInsuranceRepository = leftWorkInsuranceRepository; } public OperationResult Create(CreateRollCallEmployeeStatus cmd) @@ -38,9 +43,15 @@ namespace CompanyManagment.Application if (rollCallEmployee == null) return op.Failed("کارمند مجاز نیست"); - if (!_leftWorkRepository.Exists(x => x.EmployeeId == rollCallEmployee.EmployeeId && x.WorkshopId == rollCallEmployee.WorkshopId && - (x.LeftWorkDate.Date > DateTime.Now.Date && x.StartWorkDate.Date <= DateTime.Now.Date) || x.StartWorkDate >= DateTime.Today)) - return op.Failed("کارمند در کارگاه شروع به کار نکرده است"); + if (!_leftWorkRepository.Exists(x => + x.EmployeeId == rollCallEmployee.EmployeeId && x.WorkshopId == rollCallEmployee.WorkshopId && + x.StartWorkDate <= DateTime.Now && x.LeftWorkDate > DateTime.Now) && + !_leftWorkTempRepository.Exists(x => + x.EmployeeId == rollCallEmployee.EmployeeId && x.WorkshopId == rollCallEmployee.WorkshopId && + x.LeftWorkType == LeftWorkTempType.StartWork)) + { + return op.Failed("کارمند شروع به کار ندارد"); + } if (_employeeRollCallStatusRepository.Exists(y => rollCallEmployee.id == y.RollCallEmployeeId && y.EndDate.Date > DateTime.Now.Date)) diff --git a/CompanyManagment.Application/RollCallServiceApplication.cs b/CompanyManagment.Application/RollCallServiceApplication.cs index 5d34b897..474ccc50 100644 --- a/CompanyManagment.Application/RollCallServiceApplication.cs +++ b/CompanyManagment.Application/RollCallServiceApplication.cs @@ -102,4 +102,9 @@ public class RollCallServiceApplication : IRollCallServiceApplication { return _rollCallServiceRepository.GetAllServiceByAccountId(accountId); } + + public bool IsExistActiveServiceByWorkshopId(long workshopId) + { + return _rollCallServiceRepository.IsExistActiveServiceByWorkshopId(workshopId); + } } \ No newline at end of file diff --git a/CompanyManagment.Application/WorkshopAppliction.cs b/CompanyManagment.Application/WorkshopAppliction.cs index 14be5b57..d97836ca 100644 --- a/CompanyManagment.Application/WorkshopAppliction.cs +++ b/CompanyManagment.Application/WorkshopAppliction.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading.Tasks; using System.Transactions; using _0_Framework.Application; using AccountManagement.Application.Contracts.Account; @@ -15,6 +16,7 @@ using CompanyManagment.App.Contracts.EmployeeChildren; using CompanyManagment.App.Contracts.LeftWork; using CompanyManagment.App.Contracts.RollCallService; using CompanyManagment.App.Contracts.Workshop; +using CompanyManagment.App.Contracts.Workshop.DTOs; using CompanyManagment.App.Contracts.WorkshopPlan; using CompanyManagment.EFCore.Migrations; using Microsoft.EntityFrameworkCore; @@ -35,9 +37,9 @@ public class WorkshopAppliction : IWorkshopApplication private readonly IInstitutionContractRepository _institutionContractRepository; private readonly IPersonalContractingPartyRepository _personalContractingPartyRepository; private readonly IRollCallServiceApplication _rollCallServiceApplication; + private readonly IPasswordHasher _passwordHasher; - - public WorkshopAppliction(IWorkshopRepository workshopRepository, ILeftWorkRepository leftWorkRepository, ILeftWorkInsuranceRepository leftWorkInsuranceRepository, IWorkshopPlanApplication workshopPlanApplication, IEmployeeApplication employeeApplication, IEmployeeChildrenApplication employeeChildrenApplication, IInstitutionContractRepository institutionContractRepository, IPersonalContractingPartyRepository personalContractingPartyRepository, IRollCallServiceApplication rollCallServiceApplication) + public WorkshopAppliction(IWorkshopRepository workshopRepository, ILeftWorkRepository leftWorkRepository, ILeftWorkInsuranceRepository leftWorkInsuranceRepository, IWorkshopPlanApplication workshopPlanApplication, IEmployeeApplication employeeApplication, IEmployeeChildrenApplication employeeChildrenApplication, IInstitutionContractRepository institutionContractRepository, IPersonalContractingPartyRepository personalContractingPartyRepository, IRollCallServiceApplication rollCallServiceApplication, IPasswordHasher passwordHasher) { _workshopRepository = workshopRepository; _leftWorkRepository = leftWorkRepository; @@ -48,6 +50,7 @@ public class WorkshopAppliction : IWorkshopApplication _institutionContractRepository = institutionContractRepository; _personalContractingPartyRepository = personalContractingPartyRepository; _rollCallServiceApplication = rollCallServiceApplication; + _passwordHasher = passwordHasher; } public OperationResult Create(CreateWorkshop command) @@ -752,6 +755,8 @@ public class WorkshopAppliction : IWorkshopApplication return _workshopRepository.PrintWorkshopList(searchModel); } + + public AccountViewModel GetClientAccountByWorkshopId(long workshopId) { var contractingParty = _workshopRepository.GetPersonalContractingPartyByWorkshopId(workshopId); @@ -760,19 +765,104 @@ public class WorkshopAppliction : IWorkshopApplication - //public List GetConnectedPersonnelsForMain(long workshopId) - //{ - // return _workshopRepository.GetConnectedPersonnelsForMain(workshopId); - //} + //public List GetConnectedPersonnelsForMain(long workshopId) + //{ + // return _workshopRepository.GetConnectedPersonnelsForMain(workshopId); + //} - #endregion + #endregion - #region Insurance - public List GetWorkshopSelectListInsuransce() + #region Pooya + public List GetPersonnelInfoRemastered(PersonnelInfoSearchModel searchModel) + { + + var res = _workshopRepository.GetPersonnelInfoRemastered(searchModel.WorkshopId); + res = res.Select(x => new PersonnelInfoViewModel + { + WorkshopId = x.WorkshopId, + EmployeeId = x.EmployeeId, + PersonnelCode = x.PersonnelCode, + FullName = x.FullName, + Name = x.Name, + LastName = x.LastName, + NationalCode = x.NationalCode, + IdNumber = x.IdNumber, + MaritalStatus = x.MaritalStatus, + DateOfBirthFa = x.DateOfBirthFa, + FatherName = x.FatherName, + State = x.State, + City = x.City, + Address = x.Address, + ChildrenList = x.ChildrenList, + ContractPerson = x.ContractPerson, + InsurancePerson = x.InsurancePerson, + ContractLeft = x.ContractLeft, + InsuranceLeft = x.InsuranceLeft, + Black = ((x.ContractPerson && x.InsurancePerson && x.InsuranceLeft && x.ContractLeft) || + (x.ContractPerson && !x.InsurancePerson && x.ContractLeft) || + (x.InsurancePerson && !x.ContractPerson && x.InsuranceLeft)) + ? true + : false, + LastStartContractWork = x.LastStartContractWork, + LastLeftContractWork = x.LastLeftContractWork, + LastStartInsuranceWork = x.LastStartInsuranceWork, + LastLeftInsuranceWork = x.LastLeftInsuranceWork, + WorkshopHash = _passwordHasher.SlugHasher(x.WorkshopId), + EmployeeHash = _passwordHasher.SlugHasher(x.EmployeeId), + CreatedByClient = x.CreatedByClient, + LefWorkTemp = x.LefWorkTemp, + LeftWork = x.LeftWork, + PersonnelInfoViewModels = x.PersonnelInfoViewModels, + StartWork = x.StartWork + }).ToList(); + + if (!string.IsNullOrWhiteSpace(searchModel.FullName)) + res = res.Where(x => x.FullName.Contains(searchModel.FullName)).ToList(); + + if (!string.IsNullOrWhiteSpace(searchModel.NationalCode)) + res = res.Where(x => x.NationalCode.Contains(searchModel.NationalCode)).ToList(); + + if (!string.IsNullOrWhiteSpace(searchModel.MaritalStatus)) + res = res.Where(x => x.MaritalStatus == searchModel.MaritalStatus).ToList(); + return res; + } + #endregion + + + #region Insurance + + public List GetWorkshopSelectListInsuransce() { return _workshopRepository.GetWorkshopSelectListInsuransce(); } - #endregion + #endregion + + #region Mahan + public async Task> GetWorkshopsForEmployeeStartWork(long accountId) + { + return await _workshopRepository.GetWorkshopsForEmployeeStartWork(accountId); + + } + + public async Task GetWorkshopsForEmployeeStartWorkCount(long accountId) + { + return await _workshopRepository.GetWorkshopsForEmployeeStartWorkCount(accountId); + } + + public async Task> GetWorkshopsForLeftWorkTemp(long accountId) + { + return await _workshopRepository.GetWorkshopsForLeftWorkTemp(accountId); + } + + public Task GetWorkshopsForLeftWorkTempCount(long accountId) + { + return _workshopRepository.GetWorkshopsForLeftWorkTempCount(accountId); + } + + #endregion + + + } \ No newline at end of file diff --git a/CompanyManagment.EFCore/CompanyContext.cs b/CompanyManagment.EFCore/CompanyContext.cs index 2b767eda..7389d18a 100644 --- a/CompanyManagment.EFCore/CompanyContext.cs +++ b/CompanyManagment.EFCore/CompanyContext.cs @@ -25,6 +25,7 @@ using Company.Domain.EmployeeAccountAgg; using Company.Domain.EmployeeAgg; using Company.Domain.EmployeeBankInformationAgg; using Company.Domain.EmployeeChildrenAgg; +using Company.Domain.EmployeeClientTempAgg; using Company.Domain.EmployeeComputeOptionsAgg; using Company.Domain.EmployeeDocumentItemAgg; using Company.Domain.EmployeeDocumentsAgg; @@ -63,6 +64,7 @@ using Company.Domain.JobAgg; using Company.Domain.LeaveAgg; using Company.Domain.LeftWorkAgg; using Company.Domain.LeftWorkInsuranceAgg; +using Company.Domain.LeftWorkTempAgg; using Company.Domain.LoanAgg.Entities; using Company.Domain.MandatoryHoursAgg; using Company.Domain.MasterPenaltyTitle; @@ -168,6 +170,9 @@ public class CompanyContext : DbContext public DbSet AndroidApkVersions { get; set; } + public DbSet EmployeeClientTemps { get; set; } + public DbSet LeftWorkTemps { get; set; } + #endregion #region Pooya diff --git a/CompanyManagment.EFCore/Migrations/20250309154800_add employee by client tables.Designer.cs b/CompanyManagment.EFCore/Migrations/20250309154800_add employee by client tables.Designer.cs new file mode 100644 index 00000000..bdd9e9dd --- /dev/null +++ b/CompanyManagment.EFCore/Migrations/20250309154800_add employee by client tables.Designer.cs @@ -0,0 +1,8885 @@ +// +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("20250309154800_add employee by client tables")] + partial class addemployeebyclienttables + { + /// + 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.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("FName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IdNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("IsActiveString") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + 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("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("EarlyExitDeduction") + .HasColumnType("float"); + + b.Property("EmployeeFName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EmployeeLName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FamilyAllowance") + .HasColumnType("float"); + + b.Property("FineAbsenceDeduction") + .HasColumnType("float"); + + b.Property("FineDeduction") + .HasColumnType("float"); + + b.Property("FridayPay") + .HasColumnType("float"); + + b.Property("InstallmentDeduction") + .HasColumnType("float"); + + b.Property("InsuranceDeduction") + .HasColumnType("float"); + + b.Property("LateToWorkDeduction") + .HasColumnType("float"); + + b.Property("LateToWorkValue") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("LeavePay") + .HasColumnType("float"); + + b.Property("MarriedAllowance") + .HasColumnType("float"); + + b.Property("MonthInt") + .HasColumnType("int"); + + b.Property("MonthlySalary") + .HasColumnType("float"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("NightWorkPay") + .HasColumnType("float"); + + b.Property("OverTimePay") + .HasColumnType("float"); + + b.Property("RewardPay") + .HasColumnType("float"); + + b.Property("SalaryAidDeduction") + .HasColumnType("float"); + + b.Property("ShiftPay") + .HasColumnType("float"); + + b.Property("SumOfWorkingDays") + .HasColumnType("nvarchar(max)"); + + b.Property("TaxDeduction") + .HasColumnType("float"); + + b.Property("TotalClaims") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalDeductions") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalPayment") + .HasColumnType("float"); + + b.Property("WorkshopFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("YearInt") + .HasColumnType("int"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("CustomizeCheckouts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CustomizeCheckoutTempAgg.CustomizeCheckoutTemp", 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("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("EarlyExitDeduction") + .HasColumnType("float"); + + b.Property("EmployeeFName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EmployeeLName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FamilyAllowance") + .HasColumnType("float"); + + b.Property("FineAbsenceDeduction") + .HasColumnType("float"); + + b.Property("FineDeduction") + .HasColumnType("float"); + + b.Property("FridayPay") + .HasColumnType("float"); + + b.Property("InstallmentDeduction") + .HasColumnType("float"); + + b.Property("InsuranceDeduction") + .HasColumnType("float"); + + b.Property("LateToWorkDeduction") + .HasColumnType("float"); + + b.Property("LateToWorkValue") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("LeavePay") + .HasColumnType("float"); + + b.Property("MarriedAllowance") + .HasColumnType("float"); + + b.Property("MonthInt") + .HasColumnType("int"); + + b.Property("MonthlySalary") + .HasColumnType("float"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("NightWorkPay") + .HasColumnType("float"); + + b.Property("OverTimePay") + .HasColumnType("float"); + + b.Property("RewardPay") + .HasColumnType("float"); + + b.Property("SalaryAidDeduction") + .HasColumnType("float"); + + b.Property("ShiftPay") + .HasColumnType("float"); + + b.Property("SumOfWorkingDays") + .HasColumnType("nvarchar(max)"); + + b.Property("TaxDeduction") + .HasColumnType("float"); + + b.Property("TotalClaims") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalDeductions") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalPayment") + .HasColumnType("float"); + + b.Property("WorkshopFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("YearInt") + .HasColumnType("int"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("CustomizeCheckoutTemps", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CustomizeWorkshopGroupSettingId") + .HasColumnType("bigint"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("FridayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("HolidayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("IsSettingChanged") + .HasColumnType("bit"); + + b.Property("IsShiftChanged") + .HasColumnType("bit"); + + b.Property("LeavePermittedDays") + .HasColumnType("int"); + + b.Property("Salary") + .HasColumnType("float"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopShiftStatus") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.HasKey("id"); + + b.HasIndex("CustomizeWorkshopGroupSettingId"); + + b.ToTable("CustomizeWorkshopEmployeeSettings", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CustomizeWorkshopSettingId") + .HasColumnType("bigint"); + + b.Property("FridayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("GroupName") + .HasMaxLength(120) + .HasColumnType("nvarchar(120)"); + + b.Property("HolidayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("IsSettingChange") + .HasColumnType("bit"); + + b.Property("IsShiftChange") + .HasColumnType("bit"); + + b.Property("LeavePermittedDays") + .HasColumnType("int"); + + b.Property("MainGroup") + .HasColumnType("bit"); + + b.Property("Salary") + .HasColumnType("float"); + + b.Property("WorkshopShiftStatus") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.HasKey("id"); + + b.HasIndex("CustomizeWorkshopSettingId"); + + b.ToTable("CustomizeWorkshopGroupSettings", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BaseYearsPayInEndOfYear") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("BonusesPaysInEndOfMonth") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Currency") + .HasColumnType("int"); + + b.Property("EndTimeOffSet") + .HasColumnType("time"); + + b.Property("FridayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("HolidayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("LeavePermittedDays") + .HasColumnType("int"); + + b.Property("MaxMonthDays") + .HasColumnType("int"); + + b.Property("OverTimeThresholdMinute") + .HasColumnType("int"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopShiftStatus") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.HasKey("id"); + + b.HasIndex("WorkshopId") + .IsUnique(); + + b.ToTable("CustomizeWorkshopSettings", (string)null); + }); + + modelBuilder.Entity("Company.Domain.DateSalaryAgg.DateSalary", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EndDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("EndDateGr") + .HasColumnType("datetime2"); + + b.Property("StartDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("StartDateGr") + .HasColumnType("datetime2"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.HasKey("id"); + + b.ToTable("DateSalaries", (string)null); + }); + + modelBuilder.Entity("Company.Domain.DateSalaryItemAgg.DateSalaryItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateSalaryId") + .HasColumnType("bigint"); + + b.Property("Percent") + .HasColumnType("float"); + + b.Property("PercentageId") + .HasColumnType("bigint"); + + b.Property("Salary") + .HasColumnType("float"); + + b.HasKey("id"); + + b.HasIndex("DateSalaryId"); + + b.HasIndex("PercentageId"); + + b.ToTable("DateSalaryItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeAccountAgg.EmployeeAccount", b => + { + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("AccountId") + .HasColumnType("bigint"); + + b.HasKey("EmployeeId", "AccountId"); + + b.ToTable("EmployeeAccounts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeAgg.Employee", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("BankBranch") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("BankCardNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("City") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("DateOfIssue") + .HasColumnType("datetime2"); + + b.Property("EservicePassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EserviceUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("FatherName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("FieldOfStudy") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Gender") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IdNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("InsuranceCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("InsuranceHistoryByMonth") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("InsuranceHistoryByYear") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IsActive") + .HasColumnType("bit"); + + b.Property("IsActiveString") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IsAuthorized") + .HasColumnType("bit"); + + b.Property("LName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("LevelOfEducation") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MaritalStatus") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("MclsPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MclsUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MilitaryService") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("Nationality") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("NumberOfChildren") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("OfficePhone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PlaceOfIssue") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SanaPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SanaUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("State") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficeUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficepassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.ToTable("Employees", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeBankInformationAgg.EmployeeBankInformation", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BankAccountNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("BankId") + .HasColumnType("bigint"); + + b.Property("CardNumber") + .HasMaxLength(16) + .HasColumnType("nvarchar(16)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("IsDefault") + .HasColumnType("bit"); + + b.Property("ShebaNumber") + .HasMaxLength(26) + .HasColumnType("nvarchar(26)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("BankId"); + + b.HasIndex("EmployeeId"); + + b.ToTable("EmployeeBankInformationSet", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeChildrenAgg.EmployeeChildren", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("FName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("ParentNationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.ToTable("EmployeeChildren", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeClientTempAgg.EmployeeClientTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeFullName") + .HasColumnType("nvarchar(max)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("MaritalStatus") + .HasColumnType("nvarchar(max)"); + + b.Property("StartWorkDate") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("EmployeeClientTemps"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeComputeOptionsAgg.EmployeeComputeOptions", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BonusesOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ComputeOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("YearsOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.ToTable("EmployeeComputeOptions", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentItemAgg.EmployeeDocumentItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ConfirmationDateTime") + .HasColumnType("datetime2"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DocumentLabel") + .IsRequired() + .HasMaxLength(31) + .HasColumnType("nvarchar(31)"); + + b.Property("DocumentStatus") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("EmployeeDocumentId") + .HasColumnType("bigint"); + + b.Property("EmployeeDocumentsAdminViewId") + .HasColumnType("bigint"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("MediaId") + .HasColumnType("bigint"); + + b.Property("RejectionReason") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("ReviewedById") + .HasMaxLength(120) + .HasColumnType("bigint"); + + b.Property("UploaderId") + .HasColumnType("bigint"); + + b.Property("UploaderType") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeDocumentId"); + + b.HasIndex("EmployeeDocumentsAdminViewId"); + + b.ToTable("EmployeeDocumentItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAdminSelectionAgg.EmployeeDocumentsAdminSelection", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId") + .IsUnique(); + + b.ToTable("EmployeeDocumentsAdminSelection", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAgg.EmployeeDocuments", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("Gender") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("HasRejectedItems") + .HasColumnType("bit"); + + b.Property("IsConfirmed") + .HasColumnType("bit"); + + b.Property("IsSentToChecker") + .HasColumnType("bit"); + + b.Property("RequiredItemsSubmittedByClient") + .HasColumnType("bit"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("EmployeeDocuments", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeInsurancListDataAgg.EmployeeInsurancListData", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BaseYears") + .HasColumnType("float"); + + b.Property("BenefitsIncludedContinuous") + .HasColumnType("float"); + + b.Property("BenefitsIncludedNonContinuous") + .HasColumnType("float"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DailyWage") + .HasColumnType("float"); + + b.Property("DailyWagePlusBaseYears") + .HasColumnType("float"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("IncludeStatus") + .HasColumnType("bit"); + + b.Property("InsuranceListId") + .HasColumnType("bigint"); + + b.Property("InsuranceShare") + .HasColumnType("float"); + + b.Property("JobId") + .HasColumnType("bigint"); + + b.Property("LeftWorkDate") + .HasColumnType("datetime2(7)"); + + b.Property("MarriedAllowance") + .HasColumnType("float"); + + b.Property("MonthlyBenefits") + .HasColumnType("float"); + + b.Property("MonthlyBenefitsIncluded") + .HasColumnType("float"); + + b.Property("MonthlySalary") + .HasColumnType("float"); + + b.Property("StartWorkDate") + .HasColumnType("datetime2"); + + b.Property("WorkingDays") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("EmployeeInsurancListData", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeInsuranceRecordAgg.EmployeeInsuranceRecord", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfEnd") + .HasColumnType("datetime2"); + + b.Property("DateOfStart") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("WorkShopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkShopId"); + + b.ToTable("EmployeeInsuranceRecord", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployerAccountAgg.EmployerAccount", b => + { + b.Property("EmployerId") + .HasColumnType("bigint"); + + b.Property("AccountId") + .HasColumnType("bigint"); + + b.HasKey("EmployerId", "AccountId"); + + b.ToTable("EmployerAccounts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.Evidence.Evidence", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BoardType_Id") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("File_Id") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("BoardType_Id"); + + b.HasIndex("File_Id"); + + b.ToTable("Evidences", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EvidenceDetail.EvidenceDetail", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Day") + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Evidence_Id") + .HasColumnType("bigint"); + + b.Property("FromDate") + .HasColumnType("datetime2"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.Property("ToDate") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.HasIndex("Evidence_Id"); + + b.ToTable("EvidenceDetails", (string)null); + }); + + modelBuilder.Entity("Company.Domain.File1.File1", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ArchiveNo") + .HasColumnType("bigint"); + + b.Property("Client") + .HasColumnType("int"); + + b.Property("ClientVisitDate") + .HasColumnType("datetime2"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("FileClass") + .HasColumnType("nvarchar(max)"); + + b.Property("HasMandate") + .HasColumnType("int"); + + b.Property("ProceederReference") + .HasColumnType("nvarchar(max)"); + + b.Property("Reqester") + .HasColumnType("bigint"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("Summoned") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("Files", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FileAlert.FileAlert", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AdditionalDeadline") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("FileState_Id") + .HasColumnType("bigint"); + + b.Property("File_Id") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("FileState_Id"); + + b.HasIndex("File_Id"); + + b.ToTable("File_Alerts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FileAndFileEmployerAgg.FileAndFileEmployer", b => + { + b.Property("FileId") + .HasColumnType("bigint"); + + b.Property("FileEmployerId") + .HasColumnType("bigint"); + + b.HasKey("FileId", "FileEmployerId"); + + b.HasIndex("FileEmployerId"); + + b.ToTable("FileAndFileEmployers", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FileEmployeeAgg.FileEmployee", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("EservicePassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EserviceUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FName") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("FatherName") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("FieldOfStudy") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Gender") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IdNumber") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("InsuranceCode") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsActive") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("LName") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("LevelOfEducation") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("MaritalStatus") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("MclsPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MclsUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("OfficePhone") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("Phone") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("RepresentativeFullName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("RepresentativeId") + .HasColumnType("bigint"); + + b.Property("SanaPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SanaUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficeUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficepassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.HasIndex("RepresentativeId"); + + b.ToTable("FileEmployee", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FileEmployerAgg.FileEmployer", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("EservicePassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EserviceUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FName") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("FieldOfStudy") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FullName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gender") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IdNumber") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("InsuranceWorkshopCode") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsActive") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsLegal") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("LName") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("LegalName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LevelOfEducation") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("MaritalStatus") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("MclsPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MclsUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("NationalId") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("OfficePhone") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("Phone") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("RegisterId") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("RepresentativeFullName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("RepresentativeId") + .HasColumnType("bigint"); + + b.Property("SanaPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SanaUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficeUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficepassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.HasIndex("RepresentativeId"); + + b.ToTable("FileEmployer", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FileState.FileState", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("FileTiming_Id") + .HasColumnType("bigint"); + + b.Property("State") + .HasColumnType("int"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.HasIndex("FileTiming_Id"); + + b.ToTable("File_States", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FileTiming.FileTiming", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Deadline") + .HasColumnType("int"); + + b.Property("Tips") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.ToTable("File_Timings", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FileTitle.FileTitle", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.Property("Type") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.ToTable("File_Titles", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FinancialStatmentAgg.FinancialStatment", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ContractingPartyId") + .HasColumnType("bigint"); + + b.Property("ContractingPartyName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.ToTable("FinancialStatments", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FinancialTransactionAgg.FinancialTransaction", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Balance") + .HasColumnType("float"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Creditor") + .HasColumnType("float"); + + b.Property("Deptor") + .HasColumnType("float"); + + b.Property("Description") + .HasMaxLength(600) + .HasColumnType("nvarchar(600)"); + + b.Property("DescriptionOption") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FinancialStatementId") + .HasColumnType("bigint"); + + b.Property("MessageText") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("SentSms") + .HasColumnType("bit"); + + b.Property("SentSmsDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("TdateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("TdateGr") + .HasColumnType("datetime2"); + + b.Property("TypeOfTransaction") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.HasKey("id"); + + b.HasIndex("FinancialStatementId"); + + b.ToTable("FinancialTransactions", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FineAgg.Fine", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("FineDate") + .HasColumnType("datetime2"); + + b.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("Fines", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FineSubjectAgg.FineSubject", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Amount") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("FineSubjects", (string)null); + }); + + modelBuilder.Entity("Company.Domain.GroupPlanAgg.GroupPlan", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AnnualSalary") + .HasColumnType("float"); + + b.Property("BaseSalary") + .HasColumnType("float"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("GroupNo") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("JobSalary") + .HasColumnType("float"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopPlanId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("WorkshopPlanId"); + + b.ToTable("GroupPlans", (string)null); + }); + + modelBuilder.Entity("Company.Domain.GroupPlanJobItemAgg.GroupPlanJobItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("GroupNo") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("GroupPlanId") + .HasColumnType("bigint"); + + b.Property("JobId") + .HasColumnType("bigint"); + + b.Property("JobName") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopPlanId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("GroupPlanId"); + + b.ToTable("GroupPlanJobItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.HolidayAgg.Holiday", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.HasKey("id"); + + b.ToTable("Holidays", (string)null); + }); + + modelBuilder.Entity("Company.Domain.HolidayItemAgg.HolidayItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("HolidayId") + .HasColumnType("bigint"); + + b.Property("HolidayYear") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.Property("Holidaydate") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.HasIndex("HolidayId"); + + b.ToTable("Holidayitems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContract", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + + b.Property("City") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("ContractAmount") + .HasColumnType("float"); + + b.Property("ContractDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ContractDateGr") + .HasColumnType("datetime2"); + + b.Property("ContractEndFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ContractEndGr") + .HasColumnType("datetime2"); + + b.Property("ContractNo") + .HasMaxLength(40) + .HasColumnType("nvarchar(40)"); + + b.Property("ContractStartFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ContractStartGr") + .HasColumnType("datetime2"); + + b.Property("ContractingPartyId") + .HasColumnType("bigint"); + + b.Property("ContractingPartyName") + .HasMaxLength(80) + .HasColumnType("nvarchar(80)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DailyCompenseation") + .HasColumnType("float"); + + b.Property("Description") + .HasMaxLength(10000) + .HasColumnType("nvarchar(max)"); + + b.Property("EmployeeManualCount") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ExtensionNo") + .HasColumnType("int"); + + b.Property("HasValueAddedTax") + .HasColumnType("nvarchar(max)"); + + b.Property("IsActiveString") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Obligation") + .HasColumnType("float"); + + b.Property("OfficialCompany") + .HasMaxLength(12) + .HasColumnType("nvarchar(12)"); + + b.Property("RepresentativeId") + .HasColumnType("bigint"); + + b.Property("RepresentativeName") + .HasMaxLength(80) + .HasColumnType("nvarchar(80)"); + + b.Property("Signature") + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("State") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("TotalAmount") + .HasColumnType("float"); + + b.Property("TypeOfContract") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("ValueAddedTax") + .HasColumnType("float"); + + b.Property("WorkshopManualCount") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.HasKey("id"); + + b.ToTable("InstitutionContracts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractContactInfoAgg.InstitutionContractContactInfo", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("FnameLname") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("InstitutionContractId") + .HasColumnType("bigint"); + + b.Property("PhoneNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("PhoneType") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("Position") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SendSms") + .HasColumnType("bit"); + + b.HasKey("id"); + + b.HasIndex("InstitutionContractId"); + + b.ToTable("InstitutinContractContactInfo", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InstitutionPlanAgg.InstitutionPlan", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BaseContractAmont") + .HasColumnType("float"); + + b.Property("CountPerson") + .HasColumnType("int"); + + b.Property("FinalContractAmont") + .HasColumnType("float"); + + b.Property("IncreasePercentage") + .HasColumnType("float"); + + b.HasKey("id"); + + b.ToTable("InstitutionPlan", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsurancJobAgg.InsuranceJob", 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("InsuranceJobTitle") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.Property("YearlySalaryId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("InsuranceJobs", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsurancWorkshopInfoAgg.InsuranceWorkshopInfo", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("AgreementNumber") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployerName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("InsuranceCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ListNumber") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.HasIndex("WorkshopId") + .IsUnique(); + + b.ToTable("InsuranceWorkshopInformation", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceAgg.Insurance", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployerStr") + .HasColumnType("nvarchar(max)"); + + b.Property("ListNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("Month") + .HasMaxLength(2) + .HasColumnType("int"); + + b.Property("WorkShopId") + .HasColumnType("bigint"); + + b.Property("WorkShopStr") + .HasColumnType("nvarchar(max)"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("int"); + + b.HasKey("id"); + + b.HasIndex("WorkShopId"); + + b.ToTable("Insurances", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceEmployeeInfoAgg.InsuranceEmployeeInfo", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("DateOfIssue") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("FName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FatherName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Gender") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IdNumber") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("InsuranceCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("LName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("PlaceOfIssue") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId") + .IsUnique(); + + b.ToTable("InsuranceEmployeeInformation", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceJobAndJobsAgg.InsuranceJobAndJobs", b => + { + b.Property("JobId") + .HasColumnType("bigint"); + + b.Property("InsuranceJobItemId") + .HasColumnType("bigint"); + + b.HasKey("JobId", "InsuranceJobItemId"); + + b.HasIndex("InsuranceJobItemId"); + + b.ToTable("InsuranceJobAndJobs", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceJobItemAgg.InsuranceJobItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("InsuranceJobId") + .HasColumnType("bigint"); + + b.Property("PercentageLessThan") + .HasColumnType("float"); + + b.Property("PercentageMoreThan") + .HasColumnType("float"); + + b.Property("SalaeyLessThan") + .HasColumnType("float"); + + b.Property("SalaryMoreThan") + .HasColumnType("float"); + + b.HasKey("id"); + + b.HasIndex("InsuranceJobId"); + + b.ToTable("InsuranceJobItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceListAgg.InsuranceList", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ConfirmSentlist") + .HasColumnType("bit"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DifficultJobsInsuranc") + .HasColumnType("float"); + + b.Property("EmployerShare") + .HasColumnType("float"); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + b.Property("Included") + .HasColumnType("float"); + + b.Property("IncludedAndNotIncluded") + .HasColumnType("float"); + + b.Property("InsuredShare") + .HasColumnType("float"); + + b.Property("Month") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.Property("SumOfBaseYears") + .HasColumnType("float"); + + b.Property("SumOfBenefitsIncluded") + .HasColumnType("float"); + + b.Property("SumOfDailyWage") + .HasColumnType("float"); + + b.Property("SumOfDailyWagePlusBaseYears") + .HasColumnType("float"); + + b.Property("SumOfEmployees") + .HasColumnType("int"); + + b.Property("SumOfMarriedAllowance") + .HasColumnType("float"); + + b.Property("SumOfSalaries") + .HasColumnType("float"); + + b.Property("SumOfWorkingDays") + .HasColumnType("int"); + + b.Property("UnEmploymentInsurance") + .HasColumnType("float"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.HasKey("id"); + + b.ToTable("InsuranceLists", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceWorkshopAgg.InsuranceListWorkshop", b => + { + b.Property("InsurancListId") + .HasColumnType("bigint"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("InsurancListId", "WorkshopId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("InsuranceListWorkshops", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceYearlySalaryAgg.InsuranceYearlySalary", 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("Group21") + .HasColumnType("float"); + + b.Property("Group22") + .HasColumnType("float"); + + b.Property("Group23") + .HasColumnType("float"); + + b.Property("Group24") + .HasColumnType("float"); + + b.Property("Group25") + .HasColumnType("float"); + + b.Property("Group26") + .HasColumnType("float"); + + b.Property("Group27") + .HasColumnType("float"); + + b.Property("Group28") + .HasColumnType("float"); + + b.Property("Group29") + .HasColumnType("float"); + + b.Property("Group3") + .HasColumnType("float"); + + b.Property("Group30") + .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("InsuranceYearlySalaries", (string)null); + }); + + modelBuilder.Entity("Company.Domain.JobAgg.Job", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("JobCode") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("JobName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.HasKey("id"); + + b.ToTable("Jobs", (string)null); + }); + + modelBuilder.Entity("Company.Domain.LeaveAgg.Leave", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Decription") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("EmployeeFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EndLeave") + .HasColumnType("datetime2"); + + b.Property("IsAccepted") + .HasColumnType("bit"); + + b.Property("LeaveHourses") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("LeaveType") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("Month") + .HasColumnType("int"); + + b.Property("PaidLeaveType") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("StartLeave") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Year") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("Leave", (string)null); + }); + + modelBuilder.Entity("Company.Domain.LeftWorkAgg.LeftWork", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AddBonusesPay") + .HasColumnType("bit"); + + b.Property("AddLeavePay") + .HasColumnType("bit"); + + b.Property("AddYearsPay") + .HasColumnType("bit"); + + b.Property("BonusesOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ComputeOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("IncludeStatus") + .HasColumnType("bit"); + + b.Property("JobId") + .HasColumnType("bigint"); + + b.Property("LeftWorkDate") + .HasColumnType("datetime2"); + + b.Property("StartWorkDate") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("LeftWork", (string)null); + }); + + modelBuilder.Entity("Company.Domain.LeftWorkInsuranceAgg.LeftWorkInsurance", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("IncludeStatus") + .HasColumnType("bit"); + + b.Property("JobId") + .HasColumnType("bigint"); + + b.Property("LeftWorkDate") + .HasColumnType("datetime2(7)"); + + b.Property("StartWorkDate") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("LeftWorkInsurances", (string)null); + }); + + modelBuilder.Entity("Company.Domain.LeftWorkTempAgg.LeftWorkTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("JobId") + .HasColumnType("bigint"); + + b.Property("LastDayStanding") + .HasColumnType("datetime2"); + + b.Property("LeftWork") + .HasColumnType("datetime2"); + + b.Property("LeftWorkId") + .HasColumnType("bigint"); + + b.Property("LeftWorkType") + .HasColumnType("int"); + + b.Property("StartWork") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("LeftWorkTemps"); + }); + + modelBuilder.Entity("Company.Domain.LoanAgg.Entities.Loan", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("AmountPerMonth") + .HasColumnType("float"); + + b.Property("Count") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("GetRounded") + .HasColumnType("bit"); + + b.Property("LoanGrantDate") + .HasColumnType("datetime2"); + + b.Property("StartInstallmentPayment") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("Loan", (string)null); + }); + + modelBuilder.Entity("Company.Domain.MandatoryHoursAgg.MandatoryHours", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Aban") + .HasColumnType("float"); + + b.Property("AbanFridays") + .HasColumnType("int"); + + b.Property("AbanHolidays") + .HasColumnType("int"); + + b.Property("AbanMonadatoryDays") + .HasColumnType("int"); + + b.Property("Azar") + .HasColumnType("float"); + + b.Property("AzarFridays") + .HasColumnType("int"); + + b.Property("AzarHolidays") + .HasColumnType("int"); + + b.Property("AzarMonadatoryDays") + .HasColumnType("int"); + + b.Property("Bahman") + .HasColumnType("float"); + + b.Property("BahmanFridays") + .HasColumnType("int"); + + b.Property("BahmanHolidays") + .HasColumnType("int"); + + b.Property("BahmanMonadatoryDays") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Dey") + .HasColumnType("float"); + + b.Property("DeyFridays") + .HasColumnType("int"); + + b.Property("DeyHolidays") + .HasColumnType("int"); + + b.Property("DeyMonadatoryDays") + .HasColumnType("int"); + + b.Property("Esfand") + .HasColumnType("float"); + + b.Property("EsfandFridays") + .HasColumnType("int"); + + b.Property("EsfandHolidays") + .HasColumnType("int"); + + b.Property("EsfandMonadatoryDays") + .HasColumnType("int"); + + b.Property("Farvardin") + .HasColumnType("float"); + + b.Property("FarvardinFridays") + .HasColumnType("int"); + + b.Property("FarvardinHolidays") + .HasColumnType("int"); + + b.Property("FarvardinMonadatoryDays") + .HasColumnType("int"); + + b.Property("Khordad") + .HasColumnType("float"); + + b.Property("KhordadFridays") + .HasColumnType("int"); + + b.Property("KhordadHolidays") + .HasColumnType("int"); + + b.Property("KhordadMonadatoryDays") + .HasColumnType("int"); + + b.Property("Mehr") + .HasColumnType("float"); + + b.Property("MehrFridays") + .HasColumnType("int"); + + b.Property("MehrHolidays") + .HasColumnType("int"); + + b.Property("MehrMonadatoryDays") + .HasColumnType("int"); + + b.Property("Mordad") + .HasColumnType("float"); + + b.Property("MordadFridays") + .HasColumnType("int"); + + b.Property("MordadHolidays") + .HasColumnType("int"); + + b.Property("MordadMonadatoryDays") + .HasColumnType("int"); + + b.Property("Ordibehesht") + .HasColumnType("float"); + + b.Property("OrdibeheshtFridays") + .HasColumnType("int"); + + b.Property("OrdibeheshtHolidays") + .HasColumnType("int"); + + b.Property("OrdibeheshtMonadatoryDays") + .HasColumnType("int"); + + b.Property("Shahrivar") + .HasColumnType("float"); + + b.Property("ShahrivarFridays") + .HasColumnType("int"); + + b.Property("ShahrivarHolidays") + .HasColumnType("int"); + + b.Property("ShahrivarMonadatoryDays") + .HasColumnType("int"); + + b.Property("Tir") + .HasColumnType("float"); + + b.Property("TirFridays") + .HasColumnType("int"); + + b.Property("TirHolidays") + .HasColumnType("int"); + + b.Property("TirMonadatoryDays") + .HasColumnType("int"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("MandatoryHours", (string)null); + }); + + modelBuilder.Entity("Company.Domain.MasterPenaltyTitle.MasterPenaltyTitle", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Day") + .HasColumnType("nvarchar(max)"); + + b.Property("FromDate") + .HasColumnType("datetime2"); + + b.Property("MasterPetition_Id") + .HasColumnType("bigint"); + + b.Property("PaidAmount") + .HasColumnType("nvarchar(max)"); + + b.Property("RemainingAmount") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.Property("ToDate") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.HasIndex("MasterPetition_Id"); + + b.ToTable("Master_PenaltyTitles", (string)null); + }); + + modelBuilder.Entity("Company.Domain.MasterPetition.MasterPetition", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BoardType_Id") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("File_Id") + .HasColumnType("bigint"); + + b.Property("MasterName") + .HasColumnType("nvarchar(max)"); + + b.Property("WorkHistoryDescreption") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.HasIndex("BoardType_Id"); + + b.HasIndex("File_Id"); + + b.ToTable("Master_Petitions", (string)null); + }); + + modelBuilder.Entity("Company.Domain.MasterWorkHistory.MasterWorkHistory", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("FromDate") + .HasColumnType("datetime2"); + + b.Property("MasterPetition_Id") + .HasColumnType("bigint"); + + b.Property("ToDate") + .HasColumnType("datetime2"); + + b.Property("WorkingHoursPerDay") + .HasColumnType("int"); + + b.Property("WorkingHoursPerWeek") + .HasColumnType("int"); + + b.HasKey("id"); + + b.HasIndex("MasterPetition_Id"); + + b.ToTable("Master_WorkHistories", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ModuleAgg.EntityModule", 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("NameSubModule") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.ToTable("TextManager_Module", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ModuleTextManagerAgg.EntityModuleTextManager", b => + { + b.Property("TextManagerId") + .HasColumnType("bigint"); + + b.Property("ModuleId") + .HasColumnType("bigint"); + + b.HasKey("TextManagerId", "ModuleId"); + + b.HasIndex("ModuleId"); + + b.ToTable("TextManager_ModuleTextManager", (string)null); + }); + + modelBuilder.Entity("Company.Domain.OriginalTitleAgg.EntityOriginalTitle", 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("Title") + .IsRequired() + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.HasKey("id"); + + b.ToTable("TextManager_OriginalTitle", (string)null); + }); + + modelBuilder.Entity("Company.Domain.PaymentToEmployeeAgg.PaymentToEmployee", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("Month") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.HasKey("id"); + + b.ToTable("PaymentToEmployees", (string)null); + }); + + modelBuilder.Entity("Company.Domain.PaymentToEmployeeItemAgg.PaymentToEmployeeItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BankCheckNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CashDescription") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DestinationBankAccountNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("DestinationBankName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("PayDate") + .HasColumnType("datetime2"); + + b.Property("Payment") + .HasColumnType("float"); + + b.Property("PaymentMetod") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("PaymentTitle") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("PaymentToEmployeeId") + .HasColumnType("bigint"); + + b.Property("SourceBankAccountNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SourceBankName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("TypeDestinationBankNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("TypeSourceBankNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("PaymentToEmployeeId"); + + b.ToTable("PaymentToEmployeeItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.PenaltyTitle.PenaltyTitle", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Day") + .HasColumnType("nvarchar(max)"); + + b.Property("FromDate") + .HasColumnType("datetime2(7)"); + + b.Property("PaidAmount") + .HasColumnType("nvarchar(max)"); + + b.Property("Petition_Id") + .HasColumnType("bigint"); + + b.Property("RemainingAmount") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.Property("ToDate") + .HasColumnType("datetime2(7)"); + + b.HasKey("id"); + + b.HasIndex("Petition_Id"); + + b.ToTable("PenaltyTitles", (string)null); + }); + + modelBuilder.Entity("Company.Domain.PercentageAgg.Percentage", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Percent") + .HasColumnType("float"); + + b.HasKey("id"); + + b.ToTable("Percentages", (string)null); + }); + + modelBuilder.Entity("Company.Domain.PersonnelCodeAgg.PersonnelCodeDomain", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("PersonnelCode") + .HasColumnType("bigint"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("PersonnelCodes", (string)null); + }); + + modelBuilder.Entity("Company.Domain.Petition.Petition", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BoardType_Id") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("File_Id") + .HasColumnType("bigint"); + + b.Property("NotificationPetitionDate") + .HasColumnType("datetime2"); + + b.Property("PetitionIssuanceDate") + .HasColumnType("datetime2"); + + b.Property("PetitionNo") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalPenalty") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalPenaltyTitles") + .HasColumnType("nvarchar(max)"); + + b.Property("WorkHistoryDescreption") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.HasIndex("BoardType_Id"); + + b.HasIndex("File_Id"); + + b.ToTable("Petitions", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ProceedingSession.ProceedingSession", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Board_Id") + .HasColumnType("bigint"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Date") + .HasColumnType("datetime2"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("Time") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.HasIndex("Board_Id"); + + b.ToTable("ProceedingSessions", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RepresentativeAgg.Representative", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("AgentPhone") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("FName") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("FullName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IdNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("IsActive") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsLegal") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("LName") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("LegalName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("NationalId") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("Nationalcode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("Phone") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("RegisterId") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.HasKey("id"); + + b.ToTable("Representative", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RewardAgg.Reward", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("ntext"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("GrantDate") + .HasColumnType("datetime2"); + + b.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("RewardType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("RewardedByAccountId") + .HasColumnType("bigint"); + + b.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("Rewards", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RollCallAgg.RollCall", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BreakTimeSpan") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EarlyEntryDuration") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("EarlyExitDuration") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("EmployeeFullName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + b.Property("FridayWorkTimeSpan") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("LateEntryDuration") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("LateExitDuration") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("Month") + .HasColumnType("int"); + + b.Property("NightWorkTimeSpan") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("RollCallModifyType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ShiftDate") + .HasColumnType("datetime2"); + + b.Property("ShiftDurationTimeSpan") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("ShiftType") + .IsRequired() + .HasMaxLength(22) + .HasColumnType("nvarchar(22)"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("Year") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("RollCall", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RollCallEmployeeAgg.RollCallEmployee", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("EmployeeFullName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("FName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("HasChangedName") + .HasColumnType("bit"); + + b.Property("HasUploadedImage") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsActiveString") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("LName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("RollCallEmployees", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RollCallEmployeeStatusAgg.RollCallEmployeeStatus", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + b.Property("RollCallEmployeeId") + .HasColumnType("bigint"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.HasIndex("RollCallEmployeeId"); + + b.ToTable("RollCallEmployeesStatus"); + }); + + modelBuilder.Entity("Company.Domain.RollCallPlanAgg.RollCallPlan", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BaseAmont") + .HasColumnType("float"); + + b.Property("FinalAmont") + .HasColumnType("float"); + + b.Property("IncreasePercentage") + .HasColumnType("float"); + + b.Property("MaxPersonValid") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("RollCallPlans", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RollCallServiceAgg.RollCallService", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AccountId") + .HasColumnType("bigint"); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CustomizeCheckoutAmount") + .HasColumnType("float"); + + b.Property("CustomizeCheckoutServiceEnd") + .HasColumnType("datetime2"); + + b.Property("CustomizeCheckoutServiceStart") + .HasColumnType("datetime2"); + + b.Property("Duration") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("EndService") + .HasColumnType("datetime2"); + + b.Property("HasCustomizeCheckoutService") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsActiveString") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("MaxPersonValid") + .HasColumnType("int"); + + b.Property("ServiceType") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("StartService") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("AccountId"); + + b.ToTable("RollCallServices", (string)null); + }); + + modelBuilder.Entity("Company.Domain.SalaryAidAgg.SalaryAid", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("SalaryAidDateTime") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("SalaryAids", (string)null); + }); + + modelBuilder.Entity("Company.Domain.SmsResultAgg.SmsResult", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ContractingPartyName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ContractingPatyId") + .HasColumnType("bigint"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("InstitutionContractId") + .HasColumnType("bigint"); + + b.Property("MessageId") + .HasColumnType("int"); + + b.Property("Mobile") + .HasMaxLength(12) + .HasColumnType("nvarchar(12)"); + + b.Property("Status") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("TypeOfSms") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.ToTable("SmsResults", (string)null); + }); + + modelBuilder.Entity("Company.Domain.SubtitleAgg.EntitySubtitle", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EntitySubtitleid") + .HasColumnType("bigint"); + + b.Property("IsActiveString") + .HasColumnType("nvarchar(max)"); + + b.Property("OriginalTitle_Id") + .HasColumnType("bigint"); + + b.Property("Subtitle") + .IsRequired() + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.HasKey("id"); + + b.HasIndex("EntitySubtitleid"); + + b.HasIndex("OriginalTitle_Id"); + + b.ToTable("TextManager_Subtitle", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TaxJobCategoryAgg.TaxJobCategory", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("JobCategoryCode") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("JobCategoryName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.ToTable("TaxJobCategory", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TaxLeftWorkCategoryAgg.TaxLeftWorkCategory", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BudgetLawExceptions") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("Country") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CurrencyType") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EmployeeName") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("EmploymentLocationStatus") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("ExchangeRate") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("InsuranceBranch") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("InsuranceName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("JobCategoryCode") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("JobCategoryId") + .HasColumnType("bigint"); + + b.Property("JobTitle") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("PaymentType") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("RetirementDate") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("TaxExempt") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("TypeOfEmployment") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("TypeOfInsurance") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.HasKey("id"); + + b.HasIndex("WorkshopId"); + + b.ToTable("TaxLeftWorkCategory", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TaxLeftWorkItemAgg.TaxLeftWorkItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("LeftWork") + .HasColumnType("datetime2"); + + b.Property("StartWork") + .HasColumnType("datetime2"); + + b.Property("TaxLeftWorkCategoryId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("TaxLeftWorkCategoryId"); + + b.ToTable("TaxLeftWorkItem", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TextManagerAgg.EntityTextManager", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Chapter_Id") + .HasColumnType("bigint"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateTextManager") + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("IsActiveString") + .HasColumnType("nvarchar(max)"); + + b.Property("NoteNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("NumberTextManager") + .HasColumnType("nvarchar(max)"); + + b.Property("OriginalTitle_Id") + .HasColumnType("bigint"); + + b.Property("Paragraph") + .HasColumnType("nvarchar(max)"); + + b.Property("SubjectTextManager") + .HasColumnType("nvarchar(max)"); + + b.Property("Subtitle_Id") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("TextManager_TextManager", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkHistory.WorkHistory", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("FromDate") + .HasColumnType("datetime2"); + + b.Property("Petition_Id") + .HasColumnType("bigint"); + + b.Property("ToDate") + .HasColumnType("datetime2"); + + b.Property("WorkingHoursPerDay") + .HasColumnType("int"); + + b.Property("WorkingHoursPerWeek") + .HasColumnType("int"); + + b.HasKey("id"); + + b.HasIndex("Petition_Id"); + + b.ToTable("WorkHistories", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursAgg.WorkingHours", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ContractId") + .HasColumnType("bigint"); + + b.Property("ContractNo") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("NumberOfFriday") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("NumberOfWorkingDays") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("OverNightWorkH") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("OverNightWorkM") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("OverTimeWorkH") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("OverTimeWorkM") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("ShiftWork") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("TotalHoursesH") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("TotalHoursesM") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("WeeklyWorkingTime") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.HasKey("id"); + + b.HasIndex("ContractId"); + + b.ToTable("WorkingHours", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursItemsAgg.WorkingHoursItems", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ComplexEnd") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("ComplexStart") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DayOfWork") + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("End1") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("End2") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("End3") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("RestTime") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Start1") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Start2") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Start3") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("WeekNumber") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("WorkingHoursId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("WorkingHoursId"); + + b.ToTable("WorkingHoursItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursTempAgg.WorkingHoursTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("ShiftWork") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("WorkShopAddress2") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("WorkingHoursTemp", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursTempItemAgg.WorkingHoursTempItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ComplexEnd") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("ComplexStart") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DayOfWork") + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("End1") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("End2") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("RestTime") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Start1") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Start2") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("WeekNumber") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("WorkingHoursTempId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("WorkingHoursTempId"); + + b.ToTable("WorkingHoursTempItem", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopAccountAgg.WorkshopAccount", b => + { + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("AccountId") + .HasColumnType("bigint"); + + b.Property("ContractAndCheckout") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Insurance") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsActiveSting") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Tax") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.HasKey("WorkshopId", "AccountId"); + + b.ToTable("WorkshopeAccounts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopAgg.Workshop", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AddBonusesPay") + .HasColumnType("bit"); + + b.Property("AddLeavePay") + .HasColumnType("bit"); + + b.Property("AddYearsPay") + .HasColumnType("bit"); + + b.Property("Address") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("AgentName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("AgentPhone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("AgreementNumber") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ArchiveCode") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("BonusesOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("City") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ComputeOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ContractTerm") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("FixedSalary") + .HasColumnType("bit"); + + b.Property("HasRollCallFreeVip") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("InsuranceCode") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("InsuranceJobId") + .HasColumnType("bigint"); + + b.Property("IsActive") + .HasColumnType("bit"); + + b.Property("IsActiveString") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IsClassified") + .HasColumnType("bit"); + + b.Property("IsOldContract") + .HasColumnType("bit"); + + b.Property("Population") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("State") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TotalPaymentHide") + .HasColumnType("bit"); + + b.Property("TypeOfContract") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TypeOfInsuranceSend") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TypeOfOwnership") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("WorkshopFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopHolidayWorking") + .HasColumnType("bit"); + + b.Property("WorkshopName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopSureName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("YearsOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ZoneName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.ToTable("Workshops", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopEmployerAgg.WorkshopEmployer", b => + { + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("EmployerId") + .HasColumnType("bigint"); + + b.HasKey("WorkshopId", "EmployerId"); + + b.HasIndex("EmployerId"); + + b.ToTable("WorkshopeEmployers", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopPlanAgg.WorkshopPlan", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Designer") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DesignerPhone") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("ExecutionDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ExecutionDateGr") + .HasColumnType("datetime2"); + + b.Property("IncludingDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IncludingDateGr") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("WorkshopPlan", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopPlanEmployeeAgg.WorkshopPlanEmployee", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeFullName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopPlanId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("WorkshopPlanId"); + + b.ToTable("WorkshopPlanEmployees", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopSubAccountAgg.WorkshopSubAccount", b => + { + b.Property("SubAccountId") + .HasColumnType("bigint"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("IsActive") + .HasMaxLength(5) + .HasColumnType("int"); + + b.HasKey("SubAccountId", "WorkshopId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("WorkshopSubAccounts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.YearlySalaryAgg.YearlySalary", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ConnectionId") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.Property("Year") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.HasKey("id"); + + b.ToTable("YearlySalariess", (string)null); + }); + + modelBuilder.Entity("Company.Domain.YearlySalaryItemsAgg.YearlySalaryItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("ItemName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("ItemValue") + .HasColumnType("float"); + + b.Property("ParentConnectionId") + .HasColumnType("int"); + + b.Property("ValueType") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("YearlySalaryId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("YearlySalaryId"); + + b.ToTable("YearlyItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.YearlysSalaryTitleAgg.YearlySalaryTitle", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Title1") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title10") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title2") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title3") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title4") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title5") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title6") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title7") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title8") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title9") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.HasKey("id"); + + b.ToTable("YearlySalaryTitles", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ZoneAgg.Zone", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CityId") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("ZoneName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.ToTable("Zones", (string)null); + }); + + modelBuilder.Entity("Company.Domain.empolyerAgg.Employer", 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("ContractingPartyId") + .HasColumnType("bigint"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("DateOfIssue") + .HasColumnType("datetime2"); + + b.Property("EmployerLName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("EmployerNo") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EservicePassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EserviceUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("FatherName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("FullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Gender") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IdNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("IsActive") + .HasColumnType("bit"); + + b.Property("IsLegal") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("LName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("MclsPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MclsUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("NationalId") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("Nationalcode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("Nationality") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PlaceOfIssue") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("RegisterId") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SanaPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SanaUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficeUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficepassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.HasIndex("ContractingPartyId"); + + b.ToTable("Employers", (string)null); + }); + + modelBuilder.Entity("EmployerWorkshop", b => + { + b.Property("EmployersListid") + .HasColumnType("bigint"); + + b.Property("WorkshopsListid") + .HasColumnType("bigint"); + + b.HasKey("EmployersListid", "WorkshopsListid"); + + b.HasIndex("WorkshopsListid"); + + b.ToTable("EmployerWorkshop"); + }); + + modelBuilder.Entity("Company.Domain.Board.Board", b => + { + b.HasOne("Company.Domain.BoardType.BoardType", "BoardType") + .WithMany("BoardsList") + .HasForeignKey("BoardType_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.File1.File1", "File1") + .WithMany("BoardsList") + .HasForeignKey("File_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("BoardType"); + + b.Navigation("File1"); + }); + + modelBuilder.Entity("Company.Domain.ChapterAgg.EntityChapter", b => + { + b.HasOne("Company.Domain.SubtitleAgg.EntitySubtitle", "EntitySubtitle") + .WithMany("Chapters") + .HasForeignKey("Subtitle_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("EntitySubtitle"); + }); + + modelBuilder.Entity("Company.Domain.CheckoutAgg.Checkout", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("Checkouts") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.ClientEmployeeWorkshopAgg.ClientEmployeeWorkshop", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("ClientEmployeeWorkshopList") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("ClientEmployeeWorkshopList") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", b => + { + b.HasOne("Company.Domain.RepresentativeAgg.Representative", "Representative") + .WithMany("ContractingParties") + .HasForeignKey("RepresentativeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Representative"); + }); + + modelBuilder.Entity("Company.Domain.ContractAgg.Contract", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("Contracts") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.empolyerAgg.Employer", "Employer") + .WithMany("Contracts") + .HasForeignKey("EmployerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.JobAgg.Job", "Job") + .WithMany("ContractsList") + .HasForeignKey("JobTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.MandatoryHoursAgg.MandatoryHours", null) + .WithMany("Contracts") + .HasForeignKey("MandatoryHoursid"); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("Contracts2") + .HasForeignKey("WorkshopIds") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Company.Domain.YearlySalaryAgg.YearlySalary", "YearlySalary") + .WithMany("Contracts") + .HasForeignKey("YearlySalaryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Employer"); + + b.Navigation("Job"); + + b.Navigation("Workshop"); + + b.Navigation("YearlySalary"); + }); + + modelBuilder.Entity("Company.Domain.ContractingPartyAccountAgg.ContractingPartyAccount", b => + { + b.HasOne("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", "PersonalContractingParty") + .WithMany() + .HasForeignKey("PersonalContractingPartyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PersonalContractingParty"); + }); + + modelBuilder.Entity("Company.Domain.CrossJobAgg.CrossJob", b => + { + b.HasOne("Company.Domain.CrossJobGuildAgg.CrossJobGuild", "CrossJobGuild") + .WithMany("CrossJobList") + .HasForeignKey("CrossJobGuildId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CrossJobGuild"); + }); + + modelBuilder.Entity("Company.Domain.CrossJobItemsAgg.CrossJobItems", b => + { + b.HasOne("Company.Domain.CrossJobAgg.CrossJob", "CrossJob") + .WithMany("CrossJobItemsList") + .HasForeignKey("CrossJobId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.JobAgg.Job", "Job") + .WithMany("CrossJobItemsList") + .HasForeignKey("JobId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CrossJob"); + + b.Navigation("Job"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeCheckoutAgg.CustomizeCheckout", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("CustomizeCheckouts") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("CustomizeCheckouts") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutFine", "CheckoutFines", b1 => + { + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("FineDateFa") + .HasMaxLength(12) + .HasColumnType("nvarchar(12)"); + + b1.Property("FineDateGr") + .HasColumnType("datetime2"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b1.HasKey("CustomizeCheckoutid", "Id"); + + b1.ToTable("CustomizeCheckoutFine"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutLoanInstallments", "CustomizeCheckoutLoanInstallments", b1 => + { + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("AmountForMonth") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("LoanAmount") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.Property("LoanRemaining") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("Month") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b1.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b1.HasKey("CustomizeCheckoutid", "Id"); + + b1.ToTable("CustomizeCheckoutLoanInstallments"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutReward", "CustomizeCheckoutRewards", b1 => + { + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("Description") + .HasColumnType("ntext"); + + b1.Property("GrantDate") + .HasColumnType("datetime2"); + + b1.Property("GrantDateFa") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b1.HasKey("CustomizeCheckoutid", "Id"); + + b1.ToTable("CustomizeCheckoutReward"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutSalaryAid", "CustomizeCheckoutSalaryAids", b1 => + { + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("SalaryAidDateTime") + .HasColumnType("datetime2"); + + b1.Property("SalaryAidDateTimeFa") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.HasKey("CustomizeCheckoutid", "Id"); + + b1.ToTable("CustomizeCheckoutSalaryAid"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.Navigation("CheckoutFines"); + + b.Navigation("CustomizeCheckoutLoanInstallments"); + + b.Navigation("CustomizeCheckoutRewards"); + + b.Navigation("CustomizeCheckoutSalaryAids"); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeCheckoutTempAgg.CustomizeCheckoutTemp", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany() + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany() + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempFine", "CheckoutFines", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("FineDateFa") + .HasMaxLength(12) + .HasColumnType("nvarchar(12)"); + + b1.Property("FineDateGr") + .HasColumnType("datetime2"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b1.HasKey("CustomizeCheckoutTempid", "Id"); + + b1.ToTable("CustomizeCheckoutTempFine"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempLoanInstallments", "CustomizeCheckoutLoanInstallments", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("AmountForMonth") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("LoanAmount") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.Property("LoanRemaining") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("Month") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b1.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b1.HasKey("CustomizeCheckoutTempid", "Id"); + + b1.ToTable("CustomizeCheckoutTempLoanInstallments"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempReward", "CustomizeCheckoutRewards", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("Description") + .HasColumnType("ntext"); + + b1.Property("GrantDate") + .HasColumnType("datetime2"); + + b1.Property("GrantDateFa") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b1.HasKey("CustomizeCheckoutTempid", "Id"); + + b1.ToTable("CustomizeCheckoutTempReward"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempSalaryAid", "CustomizeCheckoutSalaryAids", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("SalaryAidDateTime") + .HasColumnType("datetime2"); + + b1.Property("SalaryAidDateTimeFa") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.HasKey("CustomizeCheckoutTempid", "Id"); + + b1.ToTable("CustomizeCheckoutTempSalaryAid"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.Navigation("CheckoutFines"); + + b.Navigation("CustomizeCheckoutLoanInstallments"); + + b.Navigation("CustomizeCheckoutRewards"); + + b.Navigation("CustomizeCheckoutSalaryAids"); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings", b => + { + b.HasOne("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings", "CustomizeWorkshopGroupSettings") + .WithMany("CustomizeWorkshopEmployeeSettingsCollection") + .HasForeignKey("CustomizeWorkshopGroupSettingId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettingsShift", "CustomizeWorkshopEmployeeSettingsShifts", b1 => + { + b1.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("CustomizeWorkshopEmployeeSettingsId") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("Placement") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.Property("PreviousShiftThreshold") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("id"); + + b1.HasIndex("CustomizeWorkshopEmployeeSettingsId"); + + b1.ToTable("CustomizeWorkshopEmployeeSettingsShifts", (string)null); + + b1.WithOwner("CustomizeWorkshopEmployeeSettings") + .HasForeignKey("CustomizeWorkshopEmployeeSettingsId"); + + b1.Navigation("CustomizeWorkshopEmployeeSettings"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BaseYearsPay", "BaseYearsPay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("BaseYearsPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BaseYearsPay_BaseYearsPayType"); + + b1.Property("PaymentType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BaseYearsPay_PaymentType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("BaseYearsPay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BonusesPay", "BonusesPay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("BonusesPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BonusesPay_BonusesPayType"); + + b1.Property("PaymentType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BonusesPay_PaymentType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("BonusesPay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BreakTime", "BreakTime", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("BreakTimeType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.Property("BreakTimeValue") + .HasColumnType("time"); + + b1.Property("HasBreakTimeValue") + .HasColumnType("bit"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.CustomizeRotatingShift", "CustomizeRotatingShifts", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid", "Id"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings_CustomizeRotatingShifts"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExit", "EarlyExit", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("EarlyExitType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("EarlyExit_EarlyExitType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("EarlyExitTimeFines_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExitTimeFine", "EarlyExitTimeFines", b2 => + { + b2.Property("CustomizeWorkshopEmployeeSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("FineMoney") + .HasColumnType("float") + .HasColumnName("EarlyExitTimeFines_FineMoney"); + + b2.Property("Minute") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)") + .HasColumnName("EarlyExitTimeFines_Minute"); + + b2.HasKey("CustomizeWorkshopEmployeeSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopEmployeeSettings_EarlyExitTimeFines"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsId"); + }); + + b1.Navigation("EarlyExitTimeFines"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FamilyAllowance", "FamilyAllowance", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("FamilyAllowanceType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FamilyAllowance_FamilyAllowanceType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FamilyAllowance_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDeduction", "FineAbsenceDeduction", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("FineAbsenceDeductionType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FineAbsenceDeduction_FineAbsenceDeductionType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FineAbsenceDeduction_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDayOfWeek", "FineAbsenceDayOfWeekCollection", b2 => + { + b2.Property("CustomizeWorkshopEmployeeSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("DayOfWeek") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FineAbsenceDayOfWeekCollection_DayOfWeek"); + + b2.HasKey("CustomizeWorkshopEmployeeSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopEmployeeSettings_FineAbsenceDayOfWeekCollection"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsId"); + }); + + b1.Navigation("FineAbsenceDayOfWeekCollection"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FridayPay", "FridayPay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("FridayPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FridayPay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.InsuranceDeduction", "InsuranceDeduction", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("InsuranceDeductionType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("InsuranceDeduction_InsuranceDeductionType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("InsuranceDeduction_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.IrregularShift", "IrregularShift", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.Property("WorkshopIrregularShifts") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWork", "LateToWork", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("LateToWorkType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("LateToWork_LateToWorkType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("LateToWork_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWorkTimeFine", "LateToWorkTimeFines", b2 => + { + b2.Property("CustomizeWorkshopEmployeeSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("FineMoney") + .HasColumnType("float") + .HasColumnName("LateToWorkTimeFines_FineMoney"); + + b2.Property("Minute") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)") + .HasColumnName("LateToWorkTimeFines_Minute"); + + b2.HasKey("CustomizeWorkshopEmployeeSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopEmployeeSettings_LateToWorkTimeFines"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsId"); + }); + + b1.Navigation("LateToWorkTimeFines"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LeavePay", "LeavePay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("LeavePayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("LeavePay_LeavePayType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("LeavePay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.MarriedAllowance", "MarriedAllowance", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("MarriedAllowanceType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("MarriedAllowance_MarriedAllowanceType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("MarriedAllowance_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.NightWorkPay", "NightWorkPay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("NightWorkingType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("NightWorkPay_NightWorkingType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("NightWorkPay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.OverTimePay", "OverTimePay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("OverTimePayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("OverTimePay_OverTimePayType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("OverTimePay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.ShiftPay", "ShiftPay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("ShiftPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("ShiftPay_ShiftPayType"); + + b1.Property("ShiftType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("ShiftPay_ShiftType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("ShiftPay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.Navigation("BaseYearsPay"); + + b.Navigation("BonusesPay"); + + b.Navigation("BreakTime"); + + b.Navigation("CustomizeRotatingShifts"); + + b.Navigation("CustomizeWorkshopEmployeeSettingsShifts"); + + b.Navigation("CustomizeWorkshopGroupSettings"); + + b.Navigation("EarlyExit"); + + b.Navigation("FamilyAllowance"); + + b.Navigation("FineAbsenceDeduction"); + + b.Navigation("FridayPay"); + + b.Navigation("InsuranceDeduction"); + + b.Navigation("IrregularShift"); + + b.Navigation("LateToWork"); + + b.Navigation("LeavePay"); + + b.Navigation("MarriedAllowance"); + + b.Navigation("NightWorkPay"); + + b.Navigation("OverTimePay"); + + b.Navigation("ShiftPay"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings", b => + { + b.HasOne("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings", "CustomizeWorkshopSettings") + .WithMany("CustomizeWorkshopGroupSettingsCollection") + .HasForeignKey("CustomizeWorkshopSettingId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettingsShift", "CustomizeWorkshopGroupSettingsShifts", b1 => + { + b1.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("CustomizeWorkshopGroupSettingsId") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("Placement") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("id"); + + b1.HasIndex("CustomizeWorkshopGroupSettingsId"); + + b1.ToTable("CustomizeWorkshopGroupSettingsShifts", (string)null); + + b1.WithOwner("CustomizeWorkshopGroupSettings") + .HasForeignKey("CustomizeWorkshopGroupSettingsId"); + + b1.Navigation("CustomizeWorkshopGroupSettings"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BaseYearsPay", "BaseYearsPay", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("BaseYearsPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BaseYearsPay_BaseYearsPayType"); + + b1.Property("PaymentType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BaseYearsPay_PaymentType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("BaseYearsPay_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BonusesPay", "BonusesPay", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("BonusesPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BonusesPay_BonusesPayType"); + + b1.Property("PaymentType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BonusesPay_PaymentType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("BonusesPay_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BreakTime", "BreakTime", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("BreakTimeType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.Property("BreakTimeValue") + .HasColumnType("time"); + + b1.Property("HasBreakTimeValue") + .HasColumnType("bit"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.CustomizeRotatingShift", "CustomizeRotatingShifts", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid", "Id"); + + b1.ToTable("CustomizeWorkshopGroupSettings_CustomizeRotatingShifts"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExit", "EarlyExit", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("EarlyExitType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("EarlyExit_EarlyExitType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("EarlyExitTimeFines_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExitTimeFine", "EarlyExitTimeFines", b2 => + { + b2.Property("CustomizeWorkshopGroupSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("FineMoney") + .HasColumnType("float") + .HasColumnName("EarlyExitTimeFines_FineMoney"); + + b2.Property("Minute") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)") + .HasColumnName("EarlyExitTimeFines_Minute"); + + b2.HasKey("CustomizeWorkshopGroupSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopGroupSettings_EarlyExitTimeFines"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsId"); + }); + + b1.Navigation("EarlyExitTimeFines"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FamilyAllowance", "FamilyAllowance", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("FamilyAllowanceType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FamilyAllowance_FamilyAllowanceType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FamilyAllowance_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDeduction", "FineAbsenceDeduction", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("FineAbsenceDeductionType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FineAbsenceDeduction_FineAbsenceDeductionType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FineAbsenceDeduction_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDayOfWeek", "FineAbsenceDayOfWeekCollection", b2 => + { + b2.Property("CustomizeWorkshopGroupSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("DayOfWeek") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FineAbsenceDayOfWeekCollection_DayOfWeek"); + + b2.HasKey("CustomizeWorkshopGroupSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopGroupSettings_FineAbsenceDayOfWeekCollection"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsId"); + }); + + b1.Navigation("FineAbsenceDayOfWeekCollection"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FridayPay", "FridayPay", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("FridayPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FridayPay_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.InsuranceDeduction", "InsuranceDeduction", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("InsuranceDeductionType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("InsuranceDeduction_InsuranceDeductionType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("InsuranceDeduction_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.IrregularShift", "IrregularShift", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.Property("WorkshopIrregularShifts") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWork", "LateToWork", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("LateToWorkType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("LateToWork_LateToWorkType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("LateToWork_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWorkTimeFine", "LateToWorkTimeFines", b2 => + { + b2.Property("CustomizeWorkshopGroupSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("FineMoney") + .HasColumnType("float") + .HasColumnName("LateToWorkTimeFines_FineMoney"); + + b2.Property("Minute") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)") + .HasColumnName("LateToWorkTimeFines_Minute"); + + b2.HasKey("CustomizeWorkshopGroupSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopGroupSettings_LateToWorkTimeFines"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsId"); + }); + + b1.Navigation("LateToWorkTimeFines"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LeavePay", "LeavePay", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("LeavePayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("LeavePay_LeavePayType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("LeavePay_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.MarriedAllowance", "MarriedAllowance", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("MarriedAllowanceType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("MarriedAllowance_MarriedAllowanceType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("MarriedAllowance_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.NightWorkPay", "NightWorkPay", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("NightWorkingType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("NightWorkPay_NightWorkingType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("NightWorkPay_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.OverTimePay", "OverTimePay", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("OverTimePayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("OverTimePay_OverTimePayType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("OverTimePay_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.ShiftPay", "ShiftPay", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("ShiftPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("ShiftPay_ShiftPayType"); + + b1.Property("ShiftType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("ShiftPay_ShiftType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("ShiftPay_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.Navigation("BaseYearsPay"); + + b.Navigation("BonusesPay"); + + b.Navigation("BreakTime"); + + b.Navigation("CustomizeRotatingShifts"); + + b.Navigation("CustomizeWorkshopGroupSettingsShifts"); + + b.Navigation("CustomizeWorkshopSettings"); + + b.Navigation("EarlyExit"); + + b.Navigation("FamilyAllowance"); + + b.Navigation("FineAbsenceDeduction"); + + b.Navigation("FridayPay"); + + b.Navigation("InsuranceDeduction"); + + b.Navigation("IrregularShift"); + + b.Navigation("LateToWork"); + + b.Navigation("LeavePay"); + + b.Navigation("MarriedAllowance"); + + b.Navigation("NightWorkPay"); + + b.Navigation("OverTimePay"); + + b.Navigation("ShiftPay"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithOne("CustomizeWorkshopSettings") + .HasForeignKey("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings", "WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettingsShift", "CustomizeWorkshopSettingsShifts", b1 => + { + b1.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("CustomizeWorkshopSettingsId") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("Placement") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("id"); + + b1.HasIndex("CustomizeWorkshopSettingsId"); + + b1.ToTable("CustomizeWorkshopSettingsShifts", (string)null); + + b1.WithOwner("CustomizeWorkshopSettings") + .HasForeignKey("CustomizeWorkshopSettingsId"); + + b1.Navigation("CustomizeWorkshopSettings"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BaseYearsPay", "BaseYearsPay", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("BaseYearsPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BaseYearsPay_BaseYearsPayType"); + + b1.Property("PaymentType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BaseYearsPay_PaymentType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("BaseYearsPay_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BonusesPay", "BonusesPay", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("BonusesPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BonusesPay_BonusesPayType"); + + b1.Property("PaymentType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BonusesPay_PaymentType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("BonusesPay_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExit", "EarlyExit", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("EarlyExitType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("EarlyExit_EarlyExitType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("EarlyExitTimeFines_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExitTimeFine", "EarlyExitTimeFines", b2 => + { + b2.Property("CustomizeWorkshopSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("FineMoney") + .HasColumnType("float") + .HasColumnName("EarlyExitTimeFines_FineMoney"); + + b2.Property("Minute") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)") + .HasColumnName("EarlyExitTimeFines_Minute"); + + b2.HasKey("CustomizeWorkshopSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopSettings_EarlyExitTimeFines"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsId"); + }); + + b1.Navigation("EarlyExitTimeFines"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FamilyAllowance", "FamilyAllowance", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("FamilyAllowanceType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FamilyAllowance_FamilyAllowanceType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FamilyAllowance_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDeduction", "FineAbsenceDeduction", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("FineAbsenceDeductionType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FineAbsenceDeduction_FineAbsenceDeductionType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FineAbsenceDeduction_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDayOfWeek", "FineAbsenceDayOfWeekCollection", b2 => + { + b2.Property("CustomizeWorkshopSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("DayOfWeek") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FineAbsenceDayOfWeekCollection_DayOfWeek"); + + b2.HasKey("CustomizeWorkshopSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopSettings_FineAbsenceDayOfWeekCollection"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsId"); + }); + + b1.Navigation("FineAbsenceDayOfWeekCollection"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FridayPay", "FridayPay", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("FridayPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FridayPay_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.InsuranceDeduction", "InsuranceDeduction", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("InsuranceDeductionType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("InsuranceDeduction_InsuranceDeductionType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("InsuranceDeduction_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWork", "LateToWork", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("LateToWorkType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("LateToWork_LateToWorkType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("LateToWork_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWorkTimeFine", "LateToWorkTimeFines", b2 => + { + b2.Property("CustomizeWorkshopSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("FineMoney") + .HasColumnType("float") + .HasColumnName("LateToWorkTimeFines_FineMoney"); + + b2.Property("Minute") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)") + .HasColumnName("LateToWorkTimeFines_Minute"); + + b2.HasKey("CustomizeWorkshopSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopSettings_LateToWorkTimeFines"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsId"); + }); + + b1.Navigation("LateToWorkTimeFines"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LeavePay", "LeavePay", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("LeavePayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("LeavePay_LeavePayType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("LeavePay_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.MarriedAllowance", "MarriedAllowance", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("MarriedAllowanceType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("MarriedAllowance_MarriedAllowanceType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("MarriedAllowance_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.NightWorkPay", "NightWorkPay", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("NightWorkingType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("NightWorkPay_NightWorkingType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("NightWorkPay_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.OverTimePay", "OverTimePay", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("OverTimePayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("OverTimePay_OverTimePayType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("OverTimePay_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.ShiftPay", "ShiftPay", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("ShiftPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("ShiftPay_ShiftPayType"); + + b1.Property("ShiftType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("ShiftPay_ShiftType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("ShiftPay_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.Navigation("BaseYearsPay"); + + b.Navigation("BonusesPay"); + + b.Navigation("CustomizeWorkshopSettingsShifts"); + + b.Navigation("EarlyExit"); + + b.Navigation("FamilyAllowance"); + + b.Navigation("FineAbsenceDeduction"); + + b.Navigation("FridayPay"); + + b.Navigation("InsuranceDeduction"); + + b.Navigation("LateToWork"); + + b.Navigation("LeavePay"); + + b.Navigation("MarriedAllowance"); + + b.Navigation("NightWorkPay"); + + b.Navigation("OverTimePay"); + + b.Navigation("ShiftPay"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.DateSalaryItemAgg.DateSalaryItem", b => + { + b.HasOne("Company.Domain.DateSalaryAgg.DateSalary", "DateSalary") + .WithMany("DateSalaryItemList") + .HasForeignKey("DateSalaryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.PercentageAgg.Percentage", "Percentage") + .WithMany("DateSalaryItemList") + .HasForeignKey("PercentageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DateSalary"); + + b.Navigation("Percentage"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeAccountAgg.EmployeeAccount", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany() + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeBankInformationAgg.EmployeeBankInformation", b => + { + b.HasOne("Company.Domain.BankAgg.Bank", "Bank") + .WithMany() + .HasForeignKey("BankId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("EmployeeBankInformationList") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Bank"); + + b.Navigation("Employee"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeChildrenAgg.EmployeeChildren", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("EmployeeChildrenList") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentItemAgg.EmployeeDocumentItem", b => + { + b.HasOne("Company.Domain.EmployeeDocumentsAgg.EmployeeDocuments", "EmployeeDocuments") + .WithMany("EmployeeDocumentItemCollection") + .HasForeignKey("EmployeeDocumentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.EmployeeDocumentsAdminSelectionAgg.EmployeeDocumentsAdminSelection", "EmployeeDocumentsAdminSelection") + .WithMany("SelectedEmployeeDocumentItems") + .HasForeignKey("EmployeeDocumentsAdminViewId"); + + b.OwnsMany("Company.Domain.EmployeeDocumentItemAgg.EmployeeDocumentItemLog", "ItemLogs", b1 => + { + b1.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); + + b1.Property("AdminMessage") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("EmployeeDocumentItemId") + .HasColumnType("bigint"); + + b1.Property("OperationType") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("OperatorId") + .HasColumnType("bigint"); + + b1.Property("OperatorType") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.HasKey("id"); + + b1.HasIndex("EmployeeDocumentItemId"); + + b1.ToTable("EmployeeDocumentItemLogs", (string)null); + + b1.WithOwner("EmployeeDocumentItem") + .HasForeignKey("EmployeeDocumentItemId"); + + b1.Navigation("EmployeeDocumentItem"); + }); + + b.Navigation("EmployeeDocuments"); + + b.Navigation("EmployeeDocumentsAdminSelection"); + + b.Navigation("ItemLogs"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAdminSelectionAgg.EmployeeDocumentsAdminSelection", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithOne("EmployeeDocumentsAdminSelection") + .HasForeignKey("Company.Domain.EmployeeDocumentsAdminSelectionAgg.EmployeeDocumentsAdminSelection", "EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAgg.EmployeeDocuments", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("EmployeeDocuments") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany() + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeInsuranceRecordAgg.EmployeeInsuranceRecord", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("EmployeeInsuranceRecords") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("EmployeeInsuranceRecords") + .HasForeignKey("WorkShopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.EmployerAccountAgg.EmployerAccount", b => + { + b.HasOne("Company.Domain.empolyerAgg.Employer", "Employer") + .WithMany() + .HasForeignKey("EmployerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employer"); + }); + + modelBuilder.Entity("Company.Domain.Evidence.Evidence", b => + { + b.HasOne("Company.Domain.BoardType.BoardType", "BoardType") + .WithMany("EvidencesList") + .HasForeignKey("BoardType_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.File1.File1", "File1") + .WithMany("EvidencesList") + .HasForeignKey("File_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("BoardType"); + + b.Navigation("File1"); + }); + + modelBuilder.Entity("Company.Domain.EvidenceDetail.EvidenceDetail", b => + { + b.HasOne("Company.Domain.Evidence.Evidence", "Evidence") + .WithMany("EvidenceDetailsList") + .HasForeignKey("Evidence_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Evidence"); + }); + + modelBuilder.Entity("Company.Domain.FileAlert.FileAlert", b => + { + b.HasOne("Company.Domain.FileState.FileState", "FileState") + .WithMany("FileAlertsList") + .HasForeignKey("FileState_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.File1.File1", "File") + .WithMany("FileAlertsList") + .HasForeignKey("File_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File"); + + b.Navigation("FileState"); + }); + + modelBuilder.Entity("Company.Domain.FileAndFileEmployerAgg.FileAndFileEmployer", b => + { + b.HasOne("Company.Domain.FileEmployerAgg.FileEmployer", "FileEmployer") + .WithMany("FileAndFileEmployers") + .HasForeignKey("FileEmployerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.File1.File1", "File1") + .WithMany("FileAndFileEmployers") + .HasForeignKey("FileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File1"); + + b.Navigation("FileEmployer"); + }); + + modelBuilder.Entity("Company.Domain.FileEmployeeAgg.FileEmployee", b => + { + b.HasOne("Company.Domain.RepresentativeAgg.Representative", "Representative") + .WithMany("FileEmployeeList") + .HasForeignKey("RepresentativeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Representative"); + }); + + modelBuilder.Entity("Company.Domain.FileEmployerAgg.FileEmployer", b => + { + b.HasOne("Company.Domain.RepresentativeAgg.Representative", "Representative") + .WithMany("FileEmployerList") + .HasForeignKey("RepresentativeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Representative"); + }); + + modelBuilder.Entity("Company.Domain.FileState.FileState", b => + { + b.HasOne("Company.Domain.FileTiming.FileTiming", "FileTiming") + .WithMany("FileStates") + .HasForeignKey("FileTiming_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileTiming"); + }); + + modelBuilder.Entity("Company.Domain.FinancialTransactionAgg.FinancialTransaction", b => + { + b.HasOne("Company.Domain.FinancialStatmentAgg.FinancialStatment", "FinancialStatment") + .WithMany("FinancialTransactionList") + .HasForeignKey("FinancialStatementId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FinancialStatment"); + }); + + modelBuilder.Entity("Company.Domain.GroupPlanAgg.GroupPlan", b => + { + b.HasOne("Company.Domain.WorkshopPlanAgg.WorkshopPlan", "WorkshopPlan") + .WithMany("GroupPlans") + .HasForeignKey("WorkshopPlanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("WorkshopPlan"); + }); + + modelBuilder.Entity("Company.Domain.GroupPlanJobItemAgg.GroupPlanJobItem", b => + { + b.HasOne("Company.Domain.GroupPlanAgg.GroupPlan", "GroupPlan") + .WithMany("GroupPlanJobItems") + .HasForeignKey("GroupPlanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("GroupPlan"); + }); + + modelBuilder.Entity("Company.Domain.HolidayItemAgg.HolidayItem", b => + { + b.HasOne("Company.Domain.HolidayAgg.Holiday", "Holidayss") + .WithMany("HolidayItems") + .HasForeignKey("HolidayId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Holidayss"); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractContactInfoAgg.InstitutionContractContactInfo", b => + { + b.HasOne("Company.Domain.InstitutionContractAgg.InstitutionContract", "InstitutionContracts") + .WithMany("ContactInfoList") + .HasForeignKey("InstitutionContractId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("InstitutionContracts"); + }); + + modelBuilder.Entity("Company.Domain.InsurancWorkshopInfoAgg.InsuranceWorkshopInfo", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithOne("InsuranceWorkshopInfo") + .HasForeignKey("Company.Domain.InsurancWorkshopInfoAgg.InsuranceWorkshopInfo", "WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceAgg.Insurance", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("Insurances") + .HasForeignKey("WorkShopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceEmployeeInfoAgg.InsuranceEmployeeInfo", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithOne("InsuranceEmployeeInfo") + .HasForeignKey("Company.Domain.InsuranceEmployeeInfoAgg.InsuranceEmployeeInfo", "EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceJobAndJobsAgg.InsuranceJobAndJobs", b => + { + b.HasOne("Company.Domain.InsuranceJobItemAgg.InsuranceJobItem", "InsuranceJobItem") + .WithMany("InsuranceJobAndJobs") + .HasForeignKey("InsuranceJobItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.JobAgg.Job", "Jobs") + .WithMany("InsuranceJobAndJobs") + .HasForeignKey("JobId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("InsuranceJobItem"); + + b.Navigation("Jobs"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceJobItemAgg.InsuranceJobItem", b => + { + b.HasOne("Company.Domain.InsurancJobAgg.InsuranceJob", "InsuranceJob") + .WithMany("InsuranceJobItemList") + .HasForeignKey("InsuranceJobId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("InsuranceJob"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceWorkshopAgg.InsuranceListWorkshop", b => + { + b.HasOne("Company.Domain.InsuranceListAgg.InsuranceList", "InsuranceList") + .WithMany("InsuranceListWorkshops") + .HasForeignKey("InsurancListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("InsuranceListWorkshops") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("InsuranceList"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.LeftWorkAgg.LeftWork", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("LeftWorks") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("LeftWorks") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.LeftWorkInsuranceAgg.LeftWorkInsurance", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("LeftWorkInsurances") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("LeftWorkInsurances") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.LoanAgg.Entities.Loan", b => + { + b.OwnsMany("Company.Domain.LoanAgg.Entities.LoanInstallment", "LoanInstallments", b1 => + { + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("AmountForMonth") + .HasColumnType("float"); + + b1.Property("InstallmentDate") + .HasColumnType("datetime2"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("LoanId") + .HasColumnType("bigint"); + + b1.Property("Month") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b1.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b1.HasKey("Id"); + + b1.HasIndex("LoanId"); + + b1.ToTable("LoanInstallment"); + + b1.WithOwner() + .HasForeignKey("LoanId"); + }); + + b.Navigation("LoanInstallments"); + }); + + modelBuilder.Entity("Company.Domain.MasterPenaltyTitle.MasterPenaltyTitle", b => + { + b.HasOne("Company.Domain.MasterPetition.MasterPetition", "MasterPetition") + .WithMany("MasterPenaltyTitlesList") + .HasForeignKey("MasterPetition_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MasterPetition"); + }); + + modelBuilder.Entity("Company.Domain.MasterPetition.MasterPetition", b => + { + b.HasOne("Company.Domain.BoardType.BoardType", "BoardType") + .WithMany("MasterPetitionsList") + .HasForeignKey("BoardType_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.File1.File1", "File1") + .WithMany("MasterPetitionsList") + .HasForeignKey("File_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("BoardType"); + + b.Navigation("File1"); + }); + + modelBuilder.Entity("Company.Domain.MasterWorkHistory.MasterWorkHistory", b => + { + b.HasOne("Company.Domain.MasterPetition.MasterPetition", "MasterPetition") + .WithMany("MasterWorkHistoriesList") + .HasForeignKey("MasterPetition_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MasterPetition"); + }); + + modelBuilder.Entity("Company.Domain.ModuleTextManagerAgg.EntityModuleTextManager", b => + { + b.HasOne("Company.Domain.ModuleAgg.EntityModule", "Module") + .WithMany("EntityModuleTextManagers") + .HasForeignKey("ModuleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.TextManagerAgg.EntityTextManager", "TextManager") + .WithMany("EntityModuleTextManagers") + .HasForeignKey("TextManagerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Module"); + + b.Navigation("TextManager"); + }); + + modelBuilder.Entity("Company.Domain.PaymentToEmployeeItemAgg.PaymentToEmployeeItem", b => + { + b.HasOne("Company.Domain.PaymentToEmployeeAgg.PaymentToEmployee", "PaymentToEmployee") + .WithMany("PaymentToEmployeeItemList") + .HasForeignKey("PaymentToEmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PaymentToEmployee"); + }); + + modelBuilder.Entity("Company.Domain.PenaltyTitle.PenaltyTitle", b => + { + b.HasOne("Company.Domain.Petition.Petition", "Petition") + .WithMany("PenaltyTitlesList") + .HasForeignKey("Petition_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Petition"); + }); + + modelBuilder.Entity("Company.Domain.PersonnelCodeAgg.PersonnelCodeDomain", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("PersonnelCodeList") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("PersonnelCodeList") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.Petition.Petition", b => + { + b.HasOne("Company.Domain.BoardType.BoardType", "BoardType") + .WithMany("PetitionsList") + .HasForeignKey("BoardType_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.File1.File1", "File1") + .WithMany("PetitionsList") + .HasForeignKey("File_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("BoardType"); + + b.Navigation("File1"); + }); + + modelBuilder.Entity("Company.Domain.ProceedingSession.ProceedingSession", b => + { + b.HasOne("Company.Domain.Board.Board", "Board") + .WithMany("ProceedingSessionsList") + .HasForeignKey("Board_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Board"); + }); + + modelBuilder.Entity("Company.Domain.RollCallEmployeeStatusAgg.RollCallEmployeeStatus", b => + { + b.HasOne("Company.Domain.RollCallEmployeeAgg.RollCallEmployee", "RollCallEmployee") + .WithMany("EmployeesStatus") + .HasForeignKey("RollCallEmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("RollCallEmployee"); + }); + + modelBuilder.Entity("Company.Domain.RollCallServiceAgg.RollCallService", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("RollCallServicesList") + .HasForeignKey("AccountId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.SubtitleAgg.EntitySubtitle", b => + { + b.HasOne("Company.Domain.SubtitleAgg.EntitySubtitle", null) + .WithMany("Subtitles") + .HasForeignKey("EntitySubtitleid"); + + b.HasOne("Company.Domain.OriginalTitleAgg.EntityOriginalTitle", "EntityOriginalTitle") + .WithMany("Subtitles") + .HasForeignKey("OriginalTitle_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("EntityOriginalTitle"); + }); + + modelBuilder.Entity("Company.Domain.TaxLeftWorkCategoryAgg.TaxLeftWorkCategory", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("TaxLeftWorkCategoryList") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.TaxLeftWorkItemAgg.TaxLeftWorkItem", b => + { + b.HasOne("Company.Domain.TaxLeftWorkCategoryAgg.TaxLeftWorkCategory", "TaxLeftWorkCategory") + .WithMany("TaxLeftWorkItemList") + .HasForeignKey("TaxLeftWorkCategoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("TaxLeftWorkCategory"); + }); + + modelBuilder.Entity("Company.Domain.WorkHistory.WorkHistory", b => + { + b.HasOne("Company.Domain.Petition.Petition", "Petition") + .WithMany("WorkHistoriesList") + .HasForeignKey("Petition_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Petition"); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursAgg.WorkingHours", b => + { + b.HasOne("Company.Domain.ContractAgg.Contract", "Contracts") + .WithMany("WorkingHoursList") + .HasForeignKey("ContractId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Contracts"); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursItemsAgg.WorkingHoursItems", b => + { + b.HasOne("Company.Domain.WorkingHoursAgg.WorkingHours", "WorkingHourses") + .WithMany("WorkingHoursItemsList") + .HasForeignKey("WorkingHoursId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("WorkingHourses"); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursTempItemAgg.WorkingHoursTempItem", b => + { + b.HasOne("Company.Domain.WorkingHoursTempAgg.WorkingHoursTemp", "WorkingHoursTemp") + .WithMany("WorkingHoursTempItemList") + .HasForeignKey("WorkingHoursTempId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("WorkingHoursTemp"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopAccountAgg.WorkshopAccount", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany() + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopEmployerAgg.WorkshopEmployer", b => + { + b.HasOne("Company.Domain.empolyerAgg.Employer", "Employer") + .WithMany("WorkshopEmployers") + .HasForeignKey("EmployerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("WorkshopEmployers") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employer"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopPlanEmployeeAgg.WorkshopPlanEmployee", b => + { + b.HasOne("Company.Domain.WorkshopPlanAgg.WorkshopPlan", "WorkshopPlan") + .WithMany("WorkshopPlanEmployees") + .HasForeignKey("WorkshopPlanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("WorkshopPlan"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopSubAccountAgg.WorkshopSubAccount", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("WorkshopSubAccounts") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.YearlySalaryItemsAgg.YearlySalaryItem", b => + { + b.HasOne("Company.Domain.YearlySalaryAgg.YearlySalary", "YearlySalary") + .WithMany("YearlySalaryItemsList") + .HasForeignKey("YearlySalaryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("YearlySalary"); + }); + + modelBuilder.Entity("Company.Domain.empolyerAgg.Employer", b => + { + b.HasOne("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", "ContractingParty") + .WithMany("Employers") + .HasForeignKey("ContractingPartyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ContractingParty"); + }); + + modelBuilder.Entity("EmployerWorkshop", b => + { + b.HasOne("Company.Domain.empolyerAgg.Employer", null) + .WithMany() + .HasForeignKey("EmployersListid") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", null) + .WithMany() + .HasForeignKey("WorkshopsListid") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Company.Domain.Board.Board", b => + { + b.Navigation("ProceedingSessionsList"); + }); + + modelBuilder.Entity("Company.Domain.BoardType.BoardType", b => + { + b.Navigation("BoardsList"); + + b.Navigation("EvidencesList"); + + b.Navigation("MasterPetitionsList"); + + b.Navigation("PetitionsList"); + }); + + modelBuilder.Entity("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", b => + { + b.Navigation("Employers"); + }); + + modelBuilder.Entity("Company.Domain.ContractAgg.Contract", b => + { + b.Navigation("WorkingHoursList"); + }); + + modelBuilder.Entity("Company.Domain.CrossJobAgg.CrossJob", b => + { + b.Navigation("CrossJobItemsList"); + }); + + modelBuilder.Entity("Company.Domain.CrossJobGuildAgg.CrossJobGuild", b => + { + b.Navigation("CrossJobList"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings", b => + { + b.Navigation("CustomizeWorkshopEmployeeSettingsCollection"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings", b => + { + b.Navigation("CustomizeWorkshopGroupSettingsCollection"); + }); + + modelBuilder.Entity("Company.Domain.DateSalaryAgg.DateSalary", b => + { + b.Navigation("DateSalaryItemList"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeAgg.Employee", b => + { + b.Navigation("ClientEmployeeWorkshopList"); + + b.Navigation("Contracts"); + + b.Navigation("CustomizeCheckouts"); + + b.Navigation("EmployeeBankInformationList"); + + b.Navigation("EmployeeChildrenList"); + + b.Navigation("EmployeeDocuments"); + + b.Navigation("EmployeeDocumentsAdminSelection"); + + b.Navigation("EmployeeInsuranceRecords"); + + b.Navigation("InsuranceEmployeeInfo"); + + b.Navigation("LeftWorkInsurances"); + + b.Navigation("LeftWorks"); + + b.Navigation("PersonnelCodeList"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAdminSelectionAgg.EmployeeDocumentsAdminSelection", b => + { + b.Navigation("SelectedEmployeeDocumentItems"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAgg.EmployeeDocuments", b => + { + b.Navigation("EmployeeDocumentItemCollection"); + }); + + modelBuilder.Entity("Company.Domain.Evidence.Evidence", b => + { + b.Navigation("EvidenceDetailsList"); + }); + + modelBuilder.Entity("Company.Domain.File1.File1", b => + { + b.Navigation("BoardsList"); + + b.Navigation("EvidencesList"); + + b.Navigation("FileAlertsList"); + + b.Navigation("FileAndFileEmployers"); + + b.Navigation("MasterPetitionsList"); + + b.Navigation("PetitionsList"); + }); + + modelBuilder.Entity("Company.Domain.FileEmployerAgg.FileEmployer", b => + { + b.Navigation("FileAndFileEmployers"); + }); + + modelBuilder.Entity("Company.Domain.FileState.FileState", b => + { + b.Navigation("FileAlertsList"); + }); + + modelBuilder.Entity("Company.Domain.FileTiming.FileTiming", b => + { + b.Navigation("FileStates"); + }); + + modelBuilder.Entity("Company.Domain.FinancialStatmentAgg.FinancialStatment", b => + { + b.Navigation("FinancialTransactionList"); + }); + + modelBuilder.Entity("Company.Domain.GroupPlanAgg.GroupPlan", b => + { + b.Navigation("GroupPlanJobItems"); + }); + + modelBuilder.Entity("Company.Domain.HolidayAgg.Holiday", b => + { + b.Navigation("HolidayItems"); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContract", b => + { + b.Navigation("ContactInfoList"); + }); + + modelBuilder.Entity("Company.Domain.InsurancJobAgg.InsuranceJob", b => + { + b.Navigation("InsuranceJobItemList"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceJobItemAgg.InsuranceJobItem", b => + { + b.Navigation("InsuranceJobAndJobs"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceListAgg.InsuranceList", b => + { + b.Navigation("InsuranceListWorkshops"); + }); + + modelBuilder.Entity("Company.Domain.JobAgg.Job", b => + { + b.Navigation("ContractsList"); + + b.Navigation("CrossJobItemsList"); + + b.Navigation("InsuranceJobAndJobs"); + }); + + modelBuilder.Entity("Company.Domain.MandatoryHoursAgg.MandatoryHours", b => + { + b.Navigation("Contracts"); + }); + + modelBuilder.Entity("Company.Domain.MasterPetition.MasterPetition", b => + { + b.Navigation("MasterPenaltyTitlesList"); + + b.Navigation("MasterWorkHistoriesList"); + }); + + modelBuilder.Entity("Company.Domain.ModuleAgg.EntityModule", b => + { + b.Navigation("EntityModuleTextManagers"); + }); + + modelBuilder.Entity("Company.Domain.OriginalTitleAgg.EntityOriginalTitle", b => + { + b.Navigation("Subtitles"); + }); + + modelBuilder.Entity("Company.Domain.PaymentToEmployeeAgg.PaymentToEmployee", b => + { + b.Navigation("PaymentToEmployeeItemList"); + }); + + modelBuilder.Entity("Company.Domain.PercentageAgg.Percentage", b => + { + b.Navigation("DateSalaryItemList"); + }); + + modelBuilder.Entity("Company.Domain.Petition.Petition", b => + { + b.Navigation("PenaltyTitlesList"); + + b.Navigation("WorkHistoriesList"); + }); + + modelBuilder.Entity("Company.Domain.RepresentativeAgg.Representative", b => + { + b.Navigation("ContractingParties"); + + b.Navigation("FileEmployeeList"); + + b.Navigation("FileEmployerList"); + }); + + modelBuilder.Entity("Company.Domain.RollCallEmployeeAgg.RollCallEmployee", b => + { + b.Navigation("EmployeesStatus"); + }); + + modelBuilder.Entity("Company.Domain.SubtitleAgg.EntitySubtitle", b => + { + b.Navigation("Chapters"); + + b.Navigation("Subtitles"); + }); + + modelBuilder.Entity("Company.Domain.TaxLeftWorkCategoryAgg.TaxLeftWorkCategory", b => + { + b.Navigation("TaxLeftWorkItemList"); + }); + + modelBuilder.Entity("Company.Domain.TextManagerAgg.EntityTextManager", b => + { + b.Navigation("EntityModuleTextManagers"); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursAgg.WorkingHours", b => + { + b.Navigation("WorkingHoursItemsList"); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursTempAgg.WorkingHoursTemp", b => + { + b.Navigation("WorkingHoursTempItemList"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopAgg.Workshop", b => + { + b.Navigation("Checkouts"); + + b.Navigation("ClientEmployeeWorkshopList"); + + b.Navigation("Contracts2"); + + b.Navigation("CustomizeCheckouts"); + + b.Navigation("CustomizeWorkshopSettings"); + + b.Navigation("EmployeeInsuranceRecords"); + + b.Navigation("InsuranceListWorkshops"); + + b.Navigation("InsuranceWorkshopInfo"); + + b.Navigation("Insurances"); + + b.Navigation("LeftWorkInsurances"); + + b.Navigation("LeftWorks"); + + b.Navigation("PersonnelCodeList"); + + b.Navigation("RollCallServicesList"); + + b.Navigation("TaxLeftWorkCategoryList"); + + b.Navigation("WorkshopEmployers"); + + b.Navigation("WorkshopSubAccounts"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopPlanAgg.WorkshopPlan", b => + { + b.Navigation("GroupPlans"); + + b.Navigation("WorkshopPlanEmployees"); + }); + + modelBuilder.Entity("Company.Domain.YearlySalaryAgg.YearlySalary", b => + { + b.Navigation("Contracts"); + + b.Navigation("YearlySalaryItemsList"); + }); + + modelBuilder.Entity("Company.Domain.empolyerAgg.Employer", b => + { + b.Navigation("Contracts"); + + b.Navigation("WorkshopEmployers"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/CompanyManagment.EFCore/Migrations/20250309154800_add employee by client tables.cs b/CompanyManagment.EFCore/Migrations/20250309154800_add employee by client tables.cs new file mode 100644 index 00000000..4f97b818 --- /dev/null +++ b/CompanyManagment.EFCore/Migrations/20250309154800_add employee by client tables.cs @@ -0,0 +1,75 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace CompanyManagment.EFCore.Migrations +{ + /// + public partial class addemployeebyclienttables : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "IsAuthorized", + table: "Employees", + type: "bit", + nullable: false, + defaultValue: false); + + migrationBuilder.CreateTable( + name: "EmployeeClientTemps", + columns: table => new + { + id = table.Column(type: "bigint", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + EmployeeFullName = table.Column(type: "nvarchar(max)", nullable: true), + WorkshopId = table.Column(type: "bigint", nullable: false), + EmployeeId = table.Column(type: "bigint", nullable: false), + StartWorkDate = table.Column(type: "datetime2", nullable: false), + MaritalStatus = table.Column(type: "nvarchar(max)", nullable: true), + CreationDate = table.Column(type: "datetime2", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_EmployeeClientTemps", x => x.id); + }); + + migrationBuilder.CreateTable( + name: "LeftWorkTemps", + columns: table => new + { + id = table.Column(type: "bigint", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + LeftWorkId = table.Column(type: "bigint", nullable: false), + StartWork = table.Column(type: "datetime2", nullable: false), + LeftWork = table.Column(type: "datetime2", nullable: false), + LastDayStanding = table.Column(type: "datetime2", nullable: false), + WorkshopId = table.Column(type: "bigint", nullable: false), + EmployeeId = table.Column(type: "bigint", nullable: false), + JobId = table.Column(type: "bigint", nullable: false), + LeftWorkType = table.Column(type: "int", nullable: false), + CreationDate = table.Column(type: "datetime2", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_LeftWorkTemps", x => x.id); + }); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "EmployeeClientTemps"); + + migrationBuilder.DropTable( + name: "LeftWorkTemps"); + + migrationBuilder.DropColumn( + name: "IsAuthorized", + table: "Employees"); + } + } +} diff --git a/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs b/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs index 2bc30d87..48669749 100644 --- a/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs +++ b/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs @@ -1487,6 +1487,9 @@ namespace CompanyManagment.EFCore.Migrations .HasMaxLength(10) .HasColumnType("nvarchar(10)"); + b.Property("IsAuthorized") + .HasColumnType("bit"); + b.Property("LName") .IsRequired() .HasMaxLength(255) @@ -1637,6 +1640,37 @@ namespace CompanyManagment.EFCore.Migrations b.ToTable("EmployeeChildren", (string)null); }); + modelBuilder.Entity("Company.Domain.EmployeeClientTempAgg.EmployeeClientTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeFullName") + .HasColumnType("nvarchar(max)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("MaritalStatus") + .HasColumnType("nvarchar(max)"); + + b.Property("StartWorkDate") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("EmployeeClientTemps"); + }); + modelBuilder.Entity("Company.Domain.EmployeeComputeOptionsAgg.EmployeeComputeOptions", b => { b.Property("id") @@ -3461,6 +3495,46 @@ namespace CompanyManagment.EFCore.Migrations b.ToTable("LeftWorkInsurances", (string)null); }); + modelBuilder.Entity("Company.Domain.LeftWorkTempAgg.LeftWorkTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("JobId") + .HasColumnType("bigint"); + + b.Property("LastDayStanding") + .HasColumnType("datetime2"); + + b.Property("LeftWork") + .HasColumnType("datetime2"); + + b.Property("LeftWorkId") + .HasColumnType("bigint"); + + b.Property("LeftWorkType") + .HasColumnType("int"); + + b.Property("StartWork") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("LeftWorkTemps"); + }); + modelBuilder.Entity("Company.Domain.LoanAgg.Entities.Loan", b => { b.Property("id") diff --git a/CompanyManagment.EFCore/Repository/CustomizeWorkshopEmployeeSettingsRepository.cs b/CompanyManagment.EFCore/Repository/CustomizeWorkshopEmployeeSettingsRepository.cs index 40ec0411..303da08f 100644 --- a/CompanyManagment.EFCore/Repository/CustomizeWorkshopEmployeeSettingsRepository.cs +++ b/CompanyManagment.EFCore/Repository/CustomizeWorkshopEmployeeSettingsRepository.cs @@ -168,4 +168,10 @@ public class CustomizeWorkshopEmployeeSettingsRepository(CompanyContext companyC }).ToList(); } + public void RemoveByWorkshopIdAndEmployeeId(long workshopId, long employeeId) + { + var entity = _companyContext.CustomizeWorkshopEmployeeSettings.FirstOrDefault(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId); + if (entity != null) + Remove(entity); + } } \ No newline at end of file diff --git a/CompanyManagment.EFCore/Repository/EmployeeClientTempRepository.cs b/CompanyManagment.EFCore/Repository/EmployeeClientTempRepository.cs new file mode 100644 index 00000000..17dae772 --- /dev/null +++ b/CompanyManagment.EFCore/Repository/EmployeeClientTempRepository.cs @@ -0,0 +1,35 @@ +using System.Linq; +using _0_Framework.Application; +using _0_Framework.InfraStructure; +using Company.Domain.EmployeeClientTempAgg; +using CompanyManagment.App.Contracts.EmployeeClientTemp; + +namespace CompanyManagment.EFCore.Repository; + +public class EmployeeClientTempRepository: RepositoryBase, IEmployeeClientTempRepository +{ + private readonly CompanyContext _context; + + public EmployeeClientTempRepository(CompanyContext context): base(context) + { + _context = context; + } + + public EmployeeClientTemp GetByEmployeeIdAndWorkshopId(long employeeId, long commandWorkshopId) + { + return _context.EmployeeClientTemps.FirstOrDefault(x => + x.EmployeeId == employeeId && x.WorkshopId == commandWorkshopId); + } + + public EmployeeClientTempGetDetailsViewModel GetDetails(long employeeId, long workshopId) + { + return _context.EmployeeClientTemps + .Where(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId) + .Select(x => new EmployeeClientTempGetDetailsViewModel + { + EmployeeId = x.EmployeeId, + StartWorkDate = x.StartWorkDate.ToFarsi(), + WorkshopId = x.WorkshopId + }).FirstOrDefault(); + } +} \ No newline at end of file diff --git a/CompanyManagment.EFCore/Repository/EmployeeDocumentsRepository.cs b/CompanyManagment.EFCore/Repository/EmployeeDocumentsRepository.cs index 354c105e..07ddf786 100644 --- a/CompanyManagment.EFCore/Repository/EmployeeDocumentsRepository.cs +++ b/CompanyManagment.EFCore/Repository/EmployeeDocumentsRepository.cs @@ -394,17 +394,19 @@ public class EmployeeDocumentsRepository : RepositoryBase workshops.Contains(x.WorkshopId) && x.LeftWorkDate.AddDays(-1) >= DateTime.Now) - .Select(x=>new{x.WorkshopId,x.EmployeeId}); + .Select(x => new { x.WorkshopId, x.EmployeeId }); + var employeeClientTemp = _companyContext.EmployeeClientTemps.Where(x => workshops.Contains(x.WorkshopId)); var query = _companyContext.EmployeeDocuments - .Where(x=> workshops.Contains(x.WorkshopId) && - activeEmployees.Any(y=>y.WorkshopId == x.WorkshopId && y.EmployeeId==x.EmployeeId)) - .Include(x=>x.Workshop).Include(x => x.EmployeeDocumentItemCollection) - .Where(x=> x.IsSentToChecker == false && - (x.EmployeeDocumentItemCollection.Any(y => - y.DocumentStatus == DocumentStatus.SubmittedByClient)) || x.HasRejectedItems) - .GroupBy(x=>x.WorkshopId).Select(x => new WorkshopWithEmployeeDocumentsViewModel() + .Where(x => workshops.Contains(x.WorkshopId) && + (activeEmployees.Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId) || + employeeClientTemp.Any(temp => x.EmployeeId == temp.EmployeeId && temp.WorkshopId == x.WorkshopId)) && x.IsConfirmed == false) + .Include(x => x.Workshop).Include(x => x.EmployeeDocumentItemCollection) + .Where(x => x.IsSentToChecker == false && + (x.EmployeeDocumentItemCollection.Any(y => + y.DocumentStatus == DocumentStatus.SubmittedByClient) || employeeClientTemp.Any(temp => x.EmployeeId == temp.EmployeeId && temp.WorkshopId == x.WorkshopId) || x.HasRejectedItems)) + .GroupBy(x => x.WorkshopId).Select(x => new WorkshopWithEmployeeDocumentsViewModel() { WorkshopId = x.Key, WorkshopFullName = x.FirstOrDefault().Workshop.WorkshopName, @@ -414,7 +416,7 @@ public class EmployeeDocumentsRepository : RepositoryBase x.Employer) - .Where(x => query.Any(y=>y.WorkshopId==x.WorkshopId)) + .Where(x => query.Any(y => y.WorkshopId == x.WorkshopId)) .GroupBy(x => x.WorkshopId).Select(x => x.FirstOrDefault()).ToList(); @@ -422,24 +424,27 @@ public class EmployeeDocumentsRepository : RepositoryBase { var employer = workshopEmployers.FirstOrDefault(y => y.WorkshopId == x.WorkshopId)?.Employer; x.EmployerName = employer.FullName; - + //x.SubmittedItems.ForEach(y=>y.PicturePath= medias.FirstOrDefault(z=>z.id == y.MediaId)?.Path ?? ""); }); - return result.Where(x=>x.EmployeesWithoutDocumentCount > 0).OrderByDescending(x => x.EmployeesWithoutDocumentCount).ToList(); + return result.Where(x => x.EmployeesWithoutDocumentCount > 0).OrderByDescending(x => x.EmployeesWithoutDocumentCount).ToList(); } + + + //ToDo آپلود مدارک و افزودن پرسنل //public List GetWorkshopsWithNewEmployeesWithoutDocuments(List workshops) //{ // var newEmployees = _companyContext.LeftWorkTemps.Where(x => workshops.Contains(x.WorkshopId)) // .Select(x => new { x.WorkshopId, x.EmployeeId }); - + // var query = _companyContext.EmployeeDocuments // .Where(x => workshops.Contains(x.WorkshopId) && // newEmployees.Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId)) @@ -472,62 +477,88 @@ public class EmployeeDocumentsRepository : RepositoryBase workshopId == x.WorkshopId && x.LeftWorkDate.AddDays(-1) >= DateTime.Today) - .Include(x=>x.Employee).ThenInclude(x=>x.EmployeeDocuments) - .Select(x => new {x.EmployeeId ,FullName= x.Employee.FName +" " +x.Employee.LName,x.Employee.Gender}); + .Include(x => x.Employee).ThenInclude(x => x.EmployeeDocuments) + .Select(x => new { x.EmployeeId, FullName = x.Employee.FName + " " + x.Employee.LName, x.Employee.Gender }); + + var EDItemsList = _companyContext.EmployeeDocumentItems .Where(x => x.WorkshopId == workshopId && x.DocumentStatus != DocumentStatus.Unsubmitted && activeEmployeesInWorkshop.Any(y => y.EmployeeId == x.EmployeeId)) - .Include(x => x.EmployeeDocuments).Where(x=> x.EmployeeDocuments.IsSentToChecker == false && - ( (x.DocumentStatus == DocumentStatus.SubmittedByClient) || x.EmployeeDocuments.HasRejectedItems) ) + .Include(x => x.EmployeeDocuments) + .Where(x => x.EmployeeDocuments.IsSentToChecker == false && + ((x.DocumentStatus == DocumentStatus.SubmittedByClient) || + x.EmployeeDocuments.HasRejectedItems)) .GroupBy(x => new { x.EmployeeId, x.DocumentLabel }) .Select(x => x.Select(y => new - { - y.EmployeeDocumentId, - Id = y.id, - y.EmployeeDocuments.Gender, - y.DocumentLabel, - y.DocumentStatus, - y.MediaId, - y.RejectionReason, - y.EmployeeId, - y.CreationDate, - IsSentToChecker = y.EmployeeDocuments.IsSentToChecker, - y.EmployeeDocuments.IsConfirmed - }) - .OrderByDescending(y => y.CreationDate).First()) + { + y.EmployeeDocumentId, + Id = y.id, + y.EmployeeDocuments.Gender, + y.DocumentLabel, + y.DocumentStatus, + y.MediaId, + y.RejectionReason, + y.EmployeeId, + y.CreationDate, + IsSentToChecker = y.EmployeeDocuments.IsSentToChecker, + y.EmployeeDocuments.IsConfirmed + }).OrderByDescending(y => y.CreationDate).First()).ToList(); + var employeeClientTemp = _companyContext.EmployeeClientTemps.Where(x => x.WorkshopId == workshopId); + var tempEmployees = _companyContext.Employees.Where(x => employeeClientTemp.Any(a => a.EmployeeId == x.id)) + .Select(x => new { EmployeeId = x.id, FullName = x.FName + " " + x.LName, x.Gender }).ToList(); + + var tempEmployeeDocuments = _companyContext.EmployeeDocuments + .Where(x => x.WorkshopId == workshopId && employeeClientTemp.Any(e => e.EmployeeId == x.EmployeeId) && + x.IsSentToChecker == false && x.IsConfirmed == false) + .SelectMany(x => x.EmployeeDocumentItemCollection.DefaultIfEmpty(), // اگر خالی بود، مقدار پیش‌فرض ایجاد کن + (documents, y) => new + { + EmployeeDocumentId = documents.id, // اگر null بود مقدار نداشته باشد + Id = y != null ? y.id : 0, + documents.Gender, + DocumentLabel = y != null ? y.DocumentLabel : default, + DocumentStatus = y != null ? y.DocumentStatus : default, + MediaId = y != null ? y.MediaId : 0, + RejectionReason = y != null ? y.RejectionReason : default, + EmployeeId = y != null ? y.EmployeeId : documents.EmployeeId, // اگر مقدار نداشت از EmployeeDocuments پر کن + CreationDate = y != null ? y.CreationDate : documents.CreationDate, + IsSentToChecker = documents.IsSentToChecker, + IsConfirmed = documents.IsConfirmed + }) .ToList(); - var activeEmployeesInWorkshopList = activeEmployeesInWorkshop.ToList(); + var enumerable = EDItemsList.Concat(tempEmployeeDocuments); + var activeEmployeesInWorkshopList = activeEmployeesInWorkshop.ToList().Concat(tempEmployees); //get medias for current documents of employees - var mediaIds = EDItemsList.Select(x => x.MediaId).ToList(); + var mediaIds = enumerable.Select(x => x.MediaId).ToList(); var mediasList = _accountContext.Medias.Where(x => mediaIds.Contains(x.id)) - .Select(x => new MediaViewModel() { Id= x.id, Path = x.Path }).ToList(); + .Select(x => new MediaViewModel() { Id = x.id, Path = x.Path }).ToList(); - return EDItemsList.GroupBy(x=>x.EmployeeId) + var result = enumerable.GroupBy(x => x.EmployeeId) .Select(x => { //var requiredDocs = EmployeeDocumentRequiredItems.GetByGender(x.Gender); var employeeLatestConfirmedDocuments = x - - .Where(y => y.EmployeeId == x.Key &&(y.DocumentStatus == DocumentStatus.SubmittedByClient || y.DocumentStatus == DocumentStatus.SubmittedByAdmin || y.DocumentStatus == DocumentStatus.Rejected)) - .Select(y=>new EmployeeDocumentItemViewModel() - { - Status = y.DocumentStatus, - MediaId = y.MediaId, - DocumentItemLabel = y.DocumentLabel, - Id = y.Id, - RejectionMessage = y.RejectionReason, - StatusString = y.DocumentStatus.ToString() - }).ToList(); + + .Where(y => y.EmployeeId == x.Key && (y.DocumentStatus == DocumentStatus.SubmittedByClient || y.DocumentStatus == DocumentStatus.SubmittedByAdmin || y.DocumentStatus == DocumentStatus.Rejected)) + .Select(y => new EmployeeDocumentItemViewModel() + { + Status = y.DocumentStatus, + MediaId = y.MediaId, + DocumentItemLabel = y.DocumentLabel, + Id = y.Id, + RejectionMessage = y.RejectionReason, + StatusString = y.DocumentStatus.ToString() + }).ToList(); //var requiredItemsUploaded = employeeLatestConfirmedDocuments @@ -542,7 +573,7 @@ public class EmployeeDocumentsRepository : RepositoryBasey.EmployeeId==x.Key).FullName, + EmployeeFullName = activeEmployeesInWorkshopList.First(y => y.EmployeeId == x.Key).FullName, NationalCardFront = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.NationalCardFront), NationalCardRear = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.NationalCardRear), MilitaryServiceCard = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.MilitaryServiceCard), @@ -552,6 +583,8 @@ public class EmployeeDocumentsRepository : RepositoryBase GetWorkshopsWithUploadedDocuments() { var itemsQuery = _companyContext.EmployeeDocumentItems - .Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted && x.DocumentStatus != DocumentStatus.SubmittedByClient) + .Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted) .Include(x => x.EmployeeDocuments) .ThenInclude(x => x.Workshop).ThenInclude(x=>x.WorkshopEmployers).ThenInclude(x=>x.Employer) .GroupBy(x=>x.WorkshopId).Select(x => new WorkshopWithEmployeeDocumentsViewModel() { - SubmittedItemsCount = x.Count(y => y.DocumentStatus == DocumentStatus.SubmittedByAdmin), + SubmittedItemsCount = x.Count(y => y.DocumentStatus == DocumentStatus.SubmittedByAdmin || y.DocumentStatus == DocumentStatus.SubmittedByClient), WorkshopId = x.Key, WorkshopFullName = x.First().EmployeeDocuments.Workshop.WorkshopName, EmployerName = x.First().EmployeeDocuments.Workshop.WorkshopEmployers.First().Employer.FullName @@ -633,7 +666,7 @@ public class EmployeeDocumentsRepository : RepositoryBase x.WorkshopId == workshopId) .Include(x => x.EmployeeDocumentItemCollection) .Where(x=>x.EmployeeDocumentItemCollection.Any(y => - y.DocumentStatus != DocumentStatus.Unsubmitted && y.DocumentStatus != DocumentStatus.SubmittedByClient)); + y.DocumentStatus != DocumentStatus.Unsubmitted)); var employeesList = _companyContext.Employees.Where(x => workshopDocuments.Any(y => y.EmployeeId == x.id)) @@ -655,8 +688,7 @@ public class EmployeeDocumentsRepository : RepositoryBase new { EmployeeDocuments = x, - EmployeeDocumentItemCollection = x.EmployeeDocumentItemCollection.Where(y=> y.DocumentStatus != DocumentStatus.Unsubmitted && - y.DocumentStatus != DocumentStatus.SubmittedByClient) + EmployeeDocumentItemCollection = x.EmployeeDocumentItemCollection.Where(y=> y.DocumentStatus != DocumentStatus.Unsubmitted) .GroupBy(y => y.DocumentLabel) .Select(y => y.MaxBy(z => z.CreationDate)) . ToList() @@ -676,8 +708,8 @@ public class EmployeeDocumentsRepository : RepositoryBase y.DocumentStatus != DocumentStatus.SubmittedByAdmin)).ToList(); else workshopDocumentsListWithConfirmed = workshopDocumentsListWithConfirmed.Where(x => - x.EmployeeDocumentItemCollection.Any(y => y.DocumentStatus == DocumentStatus.SubmittedByAdmin)).ToList(); - + x.EmployeeDocumentItemCollection.Any(y => y.DocumentStatus is DocumentStatus.SubmittedByAdmin or DocumentStatus.SubmittedByClient)).ToList(); + return workshopDocumentsListWithConfirmed.Select(x => new EmployeeDocumentsViewModel() { Id=x.EmployeeDocuments.id, @@ -704,7 +736,7 @@ public class EmployeeDocumentsRepository : RepositoryBasey.DocumentStatus==DocumentStatus.SubmittedByAdmin), + SubmittedItemsCount = x.EmployeeDocumentItemCollection.Count(y=>y.DocumentStatus is DocumentStatus.SubmittedByAdmin or DocumentStatus.SubmittedByClient), RejectedItemsCount = x.EmployeeDocumentItemCollection.Count(y => y.DocumentStatus == DocumentStatus.Rejected), ConfirmedItemsCount = x.EmployeeDocumentItemCollection.Count(y => y.DocumentStatus == DocumentStatus.Confirmed), EmployerFullName = employerName, @@ -717,30 +749,30 @@ public class EmployeeDocumentsRepository : RepositoryBase GetCheckerWorkFlowCount() { - return _companyContext.EmployeeDocumentItems.Include(x => x.EmployeeDocuments) - .Count(x => x.DocumentStatus == DocumentStatus.SubmittedByAdmin); + return await _companyContext.EmployeeDocumentItems.Include(x => x.EmployeeDocuments) + .CountAsync(x => x.DocumentStatus == DocumentStatus.SubmittedByAdmin || x.DocumentStatus == DocumentStatus.SubmittedByClient); } - //ToDo آپلود مدارک و افزدن پرسنل - //public int GetAdminWorkFlowCountForNewEmployees(List workshopIds) - //{ - // //New employees created by client should have their documents uploaded or confirmed - // var newEmployeesInWorkshop = _companyContext.LeftWorkTemps.Where(x => workshopIds.Contains(x.WorkshopId)); - // var duty = _companyContext.EmployeeDocuments - // .Count(x => workshopIds.Contains(x.WorkshopId) && - // newEmployeesInWorkshop.Any(y => - // y.EmployeeId == x.EmployeeId) - // && x.IsSentToChecker == false && x.IsConfirmed == false); + public async Task GetAdminWorkFlowCountForNewEmployees(List workshopIds) + { + //New employees created by client should have their documents uploaded or confirmed + var newEmployeesInWorkshop = _companyContext.EmployeeClientTemps.Where(x => workshopIds.Contains(x.WorkshopId)); + + var duty = _companyContext.EmployeeDocuments + .CountAsync(x => workshopIds.Contains(x.WorkshopId) && + newEmployeesInWorkshop.Any(y => + y.EmployeeId == x.EmployeeId) + && x.IsSentToChecker == false && x.IsConfirmed == false); - // return duty; - //} + return await duty; + } - public int GetAdminWorkFlowCountForSubmittedAndRejectedDocuments(List workshopIds) + public async Task GetAdminWorkFlowCountForSubmittedAndRejectedDocuments(List workshopIds) { @@ -748,12 +780,12 @@ public class EmployeeDocumentsRepository : RepositoryBase workshopIds.Contains(x.WorkshopId) && x.LeftWorkDate.AddDays(-1) >= DateTime.Today); var dutyCount = _companyContext.EmployeeDocuments - .Count(x => workshopIds.Contains(x.WorkshopId) && - activeEmployeesInWorkshop.Any(y => y.EmployeeId == x.EmployeeId) && - x.IsSentToChecker == false && - (x.EmployeeDocumentItemCollection.Any(y => y.DocumentStatus == DocumentStatus.SubmittedByClient) || x.HasRejectedItems)); + .CountAsync(x => workshopIds.Contains(x.WorkshopId) && + activeEmployeesInWorkshop.Any(y => y.EmployeeId == x.EmployeeId) && + x.IsSentToChecker == false && + (x.EmployeeDocumentItemCollection.Any(y => y.DocumentStatus == DocumentStatus.SubmittedByClient) || x.HasRejectedItems)); - return dutyCount; + return await dutyCount; } public List GetDocumentsAwaitingReviewByWorkshopIdForCheckerWorkFlow(long workshopId) @@ -800,7 +832,7 @@ public class EmployeeDocumentsRepository : RepositoryBase new MediaViewModel() { Id = x.id, Path = x.Path }).ToList(); workshopDocumentsListWithConfirmed = workshopDocumentsListWithConfirmed.Where(x => - x.EmployeeDocumentItemCollection.Any(y => y.DocumentStatus == DocumentStatus.SubmittedByAdmin)).ToList(); + x.EmployeeDocumentItemCollection.Any(y => y.DocumentStatus is DocumentStatus.SubmittedByAdmin or DocumentStatus.SubmittedByClient)).ToList(); return workshopDocumentsListWithConfirmed.Select(x => new EmployeeDocumentsViewModel() { diff --git a/CompanyManagment.EFCore/Repository/EmployeeRepository .cs b/CompanyManagment.EFCore/Repository/EmployeeRepository .cs index c1b63abc..d3a67eb8 100644 --- a/CompanyManagment.EFCore/Repository/EmployeeRepository .cs +++ b/CompanyManagment.EFCore/Repository/EmployeeRepository .cs @@ -14,6 +14,8 @@ using CompanyManagment.App.Contracts.EmployeeInsuranceRecord; using Microsoft.Data.SqlClient; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; +using CompanyManagment.App.Contracts.Employee.DTO; +using CompanyManagment.App.Contracts.LeftWorkTemp; namespace CompanyManagment.EFCore.Repository; @@ -742,6 +744,64 @@ public class EmployeeRepository : RepositoryBase, IEmployeeRepos EmployeeFullName = x.FullName }).ToList(); } + public Employee GetByNationalCodeIgnoreQueryFilter(string nationalCode) + { + return _context.Employees.IgnoreQueryFilters().FirstOrDefault(x => x.NationalCode == nationalCode); + } + + public async Task> GetClientEmployeesStartWork(long workshopId) + { + var res = await _context.Employees + .GroupJoin(_context.LeftWorkTemps.Where(x => x.WorkshopId == workshopId && x.LeftWorkType == LeftWorkTempType.StartWork), + employees => employees.id, + leftWorkTemp => leftWorkTemp.EmployeeId, + (employee, leftWorkTemps) => new { employee, leftWorkTemps }) + .GroupJoin(_context.EmployeeDocuments.Where(x => x.WorkshopId == workshopId), + (query) => query.employee.id, + (employeeDoc) => employeeDoc.EmployeeId, + (query, employeeDoc) => new + { query, employeeDoc }).SelectMany(x => x.employeeDoc.DefaultIfEmpty(), + (q, doc) => new + { + q.query, + EmployeeDoc = doc + }).Where(x => x.query.leftWorkTemps.Any(l => l.WorkshopId == workshopId && l.LeftWorkType == LeftWorkTempType.StartWork)).Select( + x => new ClientStartedWorkEmployeesDto() + { + WorkshopId = workshopId, + EmployeeId = x.query.employee.id, + EmployeeName = x.query.employee.FName + " " + x.query.employee.LName, + // ReSharper disable once SimplifyConditionalTernaryExpression + HasCompleteEmployeeDocument = x.EmployeeDoc == null ? false : x.EmployeeDoc.IsConfirmed + }).ToListAsync(); + + return res; + } + + public async Task> GetEmployeesForLeftWorkTemp(long workshopId) + { + var res = await _context.Employees + .Join(_context.LeftWorkTemps.Where(x => x.WorkshopId == workshopId && x.LeftWorkType == LeftWorkTempType.LeftWork), + employees => employees.id, + leftWorkTemp => leftWorkTemp.EmployeeId, + (employee, leftWorkTemps) => new { employee, leftWorkTemps }) + .Select( + x => new ClientLeftWorkWorkEmployeesDto() + { + WorkshopId = workshopId, + EmployeeId = x.employee.id, + EmployeeName = x.employee.FName + " " + x.employee.LName, + LeftWorkDateTime = x.leftWorkTemps.LeftWork.ToFarsi() + }).ToListAsync(); + + + return res; + } + + public Employee GetIgnoreQueryFilter(long id) + { + return _context.Employees.IgnoreQueryFilters().FirstOrDefault(x => x.id == id); + } #endregion #region Pooya @@ -776,6 +836,38 @@ public class EmployeeRepository : RepositoryBase, IEmployeeRepos }).ToList(); } + + public async Task GetEmployeeEditInEmployeeDocumentWorkFlow(long employeeId, long workshopId) + { + var employee = await _context.Employees.Where(x => x.id == employeeId).Select(x => new GetEditEmployeeInEmployeeDocumentViewModel() + { + EmployeeId = x.id, + LName = x.LName, + BirthDate = x.DateOfBirth.ToFarsi(), + FName = x.FName, + FatherName = x.FatherName, + MaritalStatus = x.MaritalStatus, + MilitaryService = x.MilitaryService, + NationalCode = x.NationalCode, + IdNumber = x.IdNumber, + Nationality = x.Nationality, + Gender = x.Gender, + IsAuthorized = x.IsAuthorized + }).FirstOrDefaultAsync(); + + var employeeClientTemp = + await _context.EmployeeClientTemps.FirstOrDefaultAsync(x => + x.EmployeeId == employeeId && x.WorkshopId == workshopId); + + if (employeeClientTemp != null) + { + employee.MaritalStatus = employeeClientTemp.MaritalStatus; + } + + return employee; + } + + public List<(long Id, string Name)> SimpleGetRangeByIds(IEnumerable newEmployeeIds) { return _context.Employees.Where(x => newEmployeeIds.Contains(x.id)).Select(x => new @@ -799,5 +891,18 @@ public class EmployeeRepository : RepositoryBase, IEmployeeRepos Phone = x.Phone }).ToList(); } + public List GetWorkedEmployeesByWorkshopIdsAndNationalCodeAndDate(List workshopIds, string nationalCode, DateTime date) + { + return _context.Employees.Where(x => x.NationalCode.Contains(nationalCode)).Include(x => x.LeftWorks).Include(x => x.LeftWorkInsurances) + .Where(x => x.LeftWorks.Any(y => workshopIds.Contains(y.WorkshopId)) || x.LeftWorkInsurances.Any(y => workshopIds.Contains(y.WorkshopId))) + .Select(x => new EmployeeViewModel() + { + NationalCode = x.NationalCode, + FName = x.FName, + LName = x.LName, + Phone = x.Phone + }).ToList(); + } + #endregion } \ No newline at end of file diff --git a/CompanyManagment.EFCore/Repository/JobRepository.cs b/CompanyManagment.EFCore/Repository/JobRepository.cs index 20a4002a..db38dd80 100644 --- a/CompanyManagment.EFCore/Repository/JobRepository.cs +++ b/CompanyManagment.EFCore/Repository/JobRepository.cs @@ -91,7 +91,13 @@ public class JobRepository: RepositoryBase, IJobRepository Id = x.id, JobName = x.JobName, JobCode = x.JobCode - }).Where(x=>x.JobName.Contains(searchtText)).Take(100); + }); + + + if (!string.IsNullOrWhiteSpace(searchtText)) + { + query = query.Where(x => x.JobName.Contains(searchtText)); + } //if (!string.IsNullOrWhiteSpace(searchtText)) // query = query.Where(x => (x.JobName + " " + x.JobCode).Contains(searchtText)); //return query.OrderBy(x => x.Id).ToList(); @@ -107,7 +113,7 @@ public class JobRepository: RepositoryBase, IJobRepository //var jobList = _context.Jobs.FromSqlInterpolated($"SelectQuery_AllJobs {searchtText}").AsNoTracking().ToList(); - var jobViewModelList = query.Select(x => new JobViewModel + var jobViewModelList = query.Take(100).Select(x => new JobViewModel { Id = x.Id, JobName = x.JobName+ " " + '-' + " " + x.JobCode, diff --git a/CompanyManagment.EFCore/Repository/LeftWorkRepository.cs b/CompanyManagment.EFCore/Repository/LeftWorkRepository.cs index 3d0b9a41..718dbf04 100644 --- a/CompanyManagment.EFCore/Repository/LeftWorkRepository.cs +++ b/CompanyManagment.EFCore/Repository/LeftWorkRepository.cs @@ -210,6 +210,8 @@ public class LeftWorkRepository : RepositoryBase, ILeftWorkRepos return leftWorks.Concat(insuranceLeftWork).Distinct().ToList(); } + + public List GetLeftPersonelByWorkshopId(List workshopIds) { return _context.LeftWorkList.Select(x => new LeftWorkViewModel() @@ -633,6 +635,12 @@ public class LeftWorkRepository : RepositoryBase, ILeftWorkRepos HasLeft = entity.HasLeft }; } + public LeftWork GetLastLeftWorkByEmployeeIdAndWorkshopId(long workshopId, long employeeId) + { + return _context.LeftWorkList.Where(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId) + .OrderByDescending(x => x.StartWorkDate).FirstOrDefault(); + } + private bool HasActiveRollCallStatus(long workshopId, long employeeId) { diff --git a/CompanyManagment.EFCore/Repository/LeftWorkTempRepository.cs b/CompanyManagment.EFCore/Repository/LeftWorkTempRepository.cs new file mode 100644 index 00000000..a9c58423 --- /dev/null +++ b/CompanyManagment.EFCore/Repository/LeftWorkTempRepository.cs @@ -0,0 +1,82 @@ +using System; +using System.Linq; +using System.Security.Cryptography.X509Certificates; +using System.Threading.Tasks; +using _0_Framework.Application; +using _0_Framework.InfraStructure; +using Company.Domain.LeftWorkAgg; +using Company.Domain.LeftWorkTempAgg; +using CompanyManagment.App.Contracts.LeftWorkTemp; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.ChangeTracking.Internal; + +namespace CompanyManagment.EFCore.Repository; + +public class LeftWorkTempRepository : RepositoryBase, ILeftWorkTempRepository +{ + private readonly CompanyContext _companyContext; + + public LeftWorkTempRepository(CompanyContext companyContext) : base(companyContext) + { + _companyContext = companyContext; + } + + public async Task GetStartAndLeftWorkDetails(long employeeId, long workshopId) + { + var employee = await _companyContext.Employees.FindAsync(employeeId); + var workshop = await _companyContext.Workshops.FindAsync(workshopId); + + var leftWorkTemp = + await _companyContext.LeftWorkTemps.FirstOrDefaultAsync(x => + x.WorkshopId == workshopId && x.EmployeeId == employeeId); + + if (employee == null || workshop == null || leftWorkTemp == null) + { + return new GetStartWorkTempDetails(); + } + + var job = await _companyContext.Jobs.FindAsync(leftWorkTemp.JobId); + + + var previousLeftWorks = _companyContext.LeftWorkList + .Where(x => leftWorkTemp.EmployeeId == x.EmployeeId && leftWorkTemp.WorkshopId == x.WorkshopId).ToList(); + + + + if (leftWorkTemp.LeftWorkType == LeftWorkTempType.LeftWork) + { + previousLeftWorks = previousLeftWorks.Where(x => x.id != leftWorkTemp.LeftWorkId).ToList(); + + + } + + var personnelCode = + _companyContext.PersonnelCodeSet.FirstOrDefault(x => + x.EmployeeId == employeeId && x.WorkshopId == workshopId)?.PersonnelCode; + + return new GetStartWorkTempDetails + { + WorkshopId = leftWorkTemp.WorkshopId, + EmployeeId = leftWorkTemp.EmployeeId, + WorkshopFullName = workshop.WorkshopFullName, + EmployeeFullName = employee.FullName, + JobId = leftWorkTemp.JobId, + JobName = job?.JobName, + PersonnelCode = personnelCode ?? 0, + LeftWorkTemp = new LeftWorkTempDetailsViewModel() + { + Id = leftWorkTemp.id, + LastDayStanding = leftWorkTemp.LastDayStanding == new DateTime() ? "" : leftWorkTemp.LastDayStanding.ToFarsi(), + LeftWork = leftWorkTemp.LeftWork == new DateTime() ? "" : leftWorkTemp.LeftWork.ToFarsi(), + StartWork = leftWorkTemp.StartWork.ToFarsi() + }, + PreviousLeftWorks = previousLeftWorks.Select(x => new LeftWorkTempDetailsViewModel() + { + Id = x.id, + LastDayStanding = x.LeftWorkDate.AddDays(-1).ToFarsi(), + LeftWork = x.LeftWorkDate.ToFarsi(), + StartWork = x.StartWorkDate.ToFarsi() + }).ToList() + }; + } +} \ No newline at end of file diff --git a/CompanyManagment.EFCore/Repository/PersonnelCodeRepository.cs b/CompanyManagment.EFCore/Repository/PersonnelCodeRepository.cs index 30465658..48adbbe5 100644 --- a/CompanyManagment.EFCore/Repository/PersonnelCodeRepository.cs +++ b/CompanyManagment.EFCore/Repository/PersonnelCodeRepository.cs @@ -90,4 +90,12 @@ public class PersonnelCodeRepository : RepositoryBase return res.EmployeeId; return 0; } + + #region Mahan + public long GetLastPersonnelCodeByWorkshop(long workshopId) + { + return _context.PersonnelCodeSet.Where(x => x.WorkshopId == workshopId).Max(x => x.PersonnelCode); + } + + #endregion } \ No newline at end of file diff --git a/CompanyManagment.EFCore/Repository/RollCallEmployeeRepository.cs b/CompanyManagment.EFCore/Repository/RollCallEmployeeRepository.cs index 28ceb56f..2f290277 100644 --- a/CompanyManagment.EFCore/Repository/RollCallEmployeeRepository.cs +++ b/CompanyManagment.EFCore/Repository/RollCallEmployeeRepository.cs @@ -6,6 +6,7 @@ using System.Linq; using _0_Framework.Application; using _0_Framework.InfraStructure; using Company.Domain.RollCallEmployeeAgg; +using CompanyManagment.App.Contracts.LeftWorkTemp; using CompanyManagment.App.Contracts.RollCallEmployee; using CompanyManagment.App.Contracts.RollCallEmployeeStatus; using Microsoft.AspNetCore.Hosting; @@ -78,7 +79,7 @@ public class RollCallEmployeeRepository : RepositoryBase public List GetPersonnelRollCallListPaginate(RollCallEmployeeSearchModel command) { var dateNow = DateTime.Now; - var employeeQuery = _context.Employees.AsQueryable(); + var employeeQuery = _context.Employees.IgnoreQueryFilters().AsQueryable(); //if (!string.IsNullOrWhiteSpace(command.Name)) //{ @@ -94,39 +95,59 @@ public class RollCallEmployeeRepository : RepositoryBase //} var rawQuery = employeeQuery.Include(x => x.LeftWorks).Include(x => x.LeftWorkInsurances) - .Where(x => x.LeftWorks.Any(y => - (y.WorkshopId == command.WorkshopId && y.StartWorkDate <= dateNow && - y.LeftWorkDate > dateNow) || (y.WorkshopId == command.WorkshopId && y.StartWorkDate > dateNow)) || - x.LeftWorkInsurances.Any(y => + .GroupJoin(_context.LeftWorkTemps.Where(x => x.WorkshopId == command.WorkshopId), + employee => employee.id, + leftWorkTemp => leftWorkTemp.EmployeeId, + ((employee, temp) => new { employee, temp })) + .SelectMany(x => x.temp.DefaultIfEmpty(), + (x, temp) => new { x.employee, temp }) + .Where(x => x.employee.LeftWorks.Any(y => y.WorkshopId == command.WorkshopId && y.StartWorkDate <= dateNow && - (y.LeftWorkDate > dateNow || y.LeftWorkDate == null))).OrderByDescending(x => x.id) + y.LeftWorkDate > dateNow || (y.WorkshopId == command.WorkshopId && y.StartWorkDate > dateNow)) || + x.temp != null).OrderByDescending(x => x.employee.id) .Select(x => new { - Id = x.id, - FullName = x.FName + " " + x.LName, - x.NationalCode, + Id = x.employee.id, + FullName = x.employee.FName + " " + x.employee.LName, + x.employee.NationalCode, + workshopTemp = x.temp }).AsSplitQuery(); var rollCallEmployees = _context.RollCallEmployees.Where(x => x.WorkshopId == command.WorkshopId); - + + var employeeClient = _context.EmployeeClientTemps.Where(x => x.WorkshopId == command.WorkshopId); + var joinedQuery = from employee in rawQuery - join rollCallEmployee in rollCallEmployees - on employee.Id equals rollCallEmployee.EmployeeId into grp - from joinedRollCall in grp.DefaultIfEmpty() - select new RollCallEmployeeViewModel() - { - WorkshopId = command.WorkshopId, - EmployeeId = employee.Id, - Id = joinedRollCall == null ? 0 : joinedRollCall.id, - EmployeeFullName = joinedRollCall == null ? employee.FullName : joinedRollCall.EmployeeFullName, - NationalCode = employee.NationalCode, - IsActiveString = joinedRollCall.EmployeesStatus.Any(y => y.StartDate.Date <= dateNow.Date && y.EndDate.Date > dateNow.Date) ? "true" : "false", - HasUploadedImage = joinedRollCall == null ? "false" : joinedRollCall.HasUploadedImage - }; + join rollCallEmployee in rollCallEmployees + on employee.Id equals rollCallEmployee.EmployeeId into grp + from joinedRollCall in grp.DefaultIfEmpty() + join employeeClientT in employeeClient on employee.Id equals employeeClientT.EmployeeId into employeeCT + from clientTemp in employeeCT.DefaultIfEmpty() + select new RollCallEmployeeViewModel() + { + WorkshopId = command.WorkshopId, + EmployeeId = employee.Id, + Id = joinedRollCall == null ? 0 : joinedRollCall.id, + EmployeeFullName = joinedRollCall == null ? employee.FullName : joinedRollCall.EmployeeFullName, + NationalCode = employee.NationalCode, + IsActiveString = + joinedRollCall.EmployeesStatus.Any(y => + y.StartDate.Date <= dateNow.Date && y.EndDate.Date > dateNow.Date) + ? "true" + : "false", + HasUploadedImage = joinedRollCall == null ? "false" : joinedRollCall.HasUploadedImage, + CreatedByClient = clientTemp != null || (employee.workshopTemp != null &&employee.workshopTemp.LeftWorkType == LeftWorkTempType.StartWork) + }; + + + + + + if (!string.IsNullOrWhiteSpace(command.Name)) @@ -135,9 +156,9 @@ public class RollCallEmployeeRepository : RepositoryBase } var firstlist = joinedQuery.AsSplitQuery(); - - var list = firstlist.OrderByDescending(x => x.IsActiveString == "true" ? 1 : 0) + + var list = firstlist.OrderByDescending(x => x.CreatedByClient).ThenByDescending(x => x.IsActiveString == "true" ? 1 : 0) .ThenByDescending(x => x.HasUploadedImage == "true" ? 1 : 0) .Skip(command.PageIndex).Take(30).ToList(); var watch = new Stopwatch(); @@ -243,19 +264,6 @@ public class RollCallEmployeeRepository : RepositoryBase ; } - public bool HasEmployees(long workshopId) - { - var dateNow = DateTime.Now; - return _context.Employees.Include(x => x.LeftWorks).Include(x => x.LeftWorkInsurances) - .Any(x => x.LeftWorks.Any(y => - y.WorkshopId == workshopId && y.StartWorkDate <= dateNow && - y.LeftWorkDate > dateNow) || - x.LeftWorkInsurances.Any(y => - y.WorkshopId == workshopId && y.StartWorkDate <= dateNow && - (y.LeftWorkDate > dateNow || y.LeftWorkDate == null))); - - } - public List GetActivePersonnelByWorkshopId(long workshopId) { var dateNow = DateTime.Now.Date; @@ -332,46 +340,14 @@ public class RollCallEmployeeRepository : RepositoryBase return new(); } + #endregion + + #region Farokhi&Mahan + public (int activeEmployees, int deActiveEmployees) GetActiveAndDeActiveRollCallEmployees(long workshopId) { var dateNow = DateTime.Now; - //var employeeQuery = _context.Employees.AsQueryable(); - - //var rawQuery = employeeQuery.Include(x => x.LeftWorks).Include(x => x.LeftWorkInsurances) - // .Where(x => x.LeftWorks.Any(y => - // y.WorkshopId == command.WorkshopId && y.StartWorkDate <= dateNow && - // y.LeftWorkDate > dateNow) || - // x.LeftWorkInsurances.Any(y => - // y.WorkshopId == command.WorkshopId && y.StartWorkDate <= dateNow && - // (y.LeftWorkDate > dateNow || y.LeftWorkDate == null))).OrderByDescending(x => x.id) - // .Select(x => new - // { - // Id = x.id, - // x.FullName, - // x.NationalCode, - - // }).AsSplitQuery(); - - - - //var rollCallEmployees = _context.RollCallEmployees.Where(x => x.WorkshopId == command.WorkshopId); - - - //var joinedQuery = from employee in rawQuery - // join rollCallEmployee in rollCallEmployees - // on employee.Id equals rollCallEmployee.EmployeeId into grp - // from joinedRollCall in grp.DefaultIfEmpty() - // select new RollCallEmployeeViewModel() - // { - // WorkshopId = command.WorkshopId, - // EmployeeId = employee.Id, - // Id = joinedRollCall == null ? 0 : joinedRollCall.id, - // EmployeeFullName = joinedRollCall == null ? employee.FullName : joinedRollCall.EmployeeFullName, - // NationalCode = employee.NationalCode, - // IsActiveString = joinedRollCall == null ? "false" : joinedRollCall.IsActiveString, - // HasUploadedImage = joinedRollCall == null ? "false" : joinedRollCall.HasUploadedImage - // }; var rawQuery = _context.Employees.Include(x => x.LeftWorks).Include(x => x.LeftWorkInsurances) .Where(x => x.LeftWorks.Any(y => y.WorkshopId == workshopId && y.StartWorkDate <= dateNow && @@ -384,20 +360,41 @@ public class RollCallEmployeeRepository : RepositoryBase Id = x.id, }).Distinct(); - var rollCallEmployees = _context.RollCallEmployees.Where(x => x.WorkshopId == workshopId); + var rollCallEmployees = _context.RollCallEmployees.Include(x => x.EmployeesStatus).Where(x => x.WorkshopId == workshopId); var joinedQuery = from employee in rawQuery - join rollCallEmployee in rollCallEmployees - on employee.Id equals rollCallEmployee.EmployeeId into grp - from joinedRollCall in grp.DefaultIfEmpty() - select new RollCallEmployeeViewModel() - { - IsActiveString = joinedRollCall == null ? "false" : joinedRollCall.IsActiveString, - }; + join rollCallEmployee in rollCallEmployees + on employee.Id equals rollCallEmployee.EmployeeId into grp + from joinedRollCall in grp.DefaultIfEmpty() + select new RollCallEmployeeViewModel() + { + IsActiveString = joinedRollCall.EmployeesStatus.Any(y => y.StartDate.Date <= dateNow.Date && y.EndDate.Date > dateNow.Date) ? "true" : "false", + + }; var deActiveCount = joinedQuery.Count(x => x.IsActiveString == "false"); var ActiveCount = joinedQuery.Count(x => x.IsActiveString == "true"); return (ActiveCount, deActiveCount); - #endregion } + + public bool HasEmployees(long workshopId) + { + var dateNow = DateTime.Now; + return _context.Employees.Include(x => x.LeftWorks).Include(x => x.LeftWorkInsurances) + .Any(x => x.LeftWorks.Any(y => + y.WorkshopId == workshopId && y.StartWorkDate <= dateNow && + y.LeftWorkDate > dateNow) || + x.LeftWorkInsurances.Any(y => + y.WorkshopId == workshopId && y.StartWorkDate <= dateNow && + (y.LeftWorkDate > dateNow || y.LeftWorkDate == null))); + + } + + public RollCallEmployee GetBy(long employeeId, long workshopId) + { + return _context.RollCallEmployees.FirstOrDefault(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId); + } + + #endregion + } \ No newline at end of file diff --git a/CompanyManagment.EFCore/Repository/RollCallServiceRepository.cs b/CompanyManagment.EFCore/Repository/RollCallServiceRepository.cs index a9d5a430..26335fa1 100644 --- a/CompanyManagment.EFCore/Repository/RollCallServiceRepository.cs +++ b/CompanyManagment.EFCore/Repository/RollCallServiceRepository.cs @@ -123,4 +123,9 @@ public class RollCallServiceRepository : RepositoryBase, }).Where(x => x.AccountId == accountId).ToList(); } + + public bool IsExistActiveServiceByWorkshopId(long workshopId) + { + return _context.RollCallServices.AsSplitQuery().Any(x => x.WorkshopId == workshopId && x.IsActiveString == "true"); + } } \ No newline at end of file diff --git a/CompanyManagment.EFCore/Repository/WorkshopRepository.cs b/CompanyManagment.EFCore/Repository/WorkshopRepository.cs index c2381301..8640a479 100644 --- a/CompanyManagment.EFCore/Repository/WorkshopRepository.cs +++ b/CompanyManagment.EFCore/Repository/WorkshopRepository.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Linq; +using System.Threading.Tasks; using _0_Framework.Application; using _0_Framework.InfraStructure; using AccountManagement.Application.Contracts.Account; @@ -15,9 +16,12 @@ using Company.Domain.WorkshopAgg; using Company.Domain.WorkshopEmployerAgg; using CompanyManagment.App.Contracts.Contract; using CompanyManagment.App.Contracts.Employee; +using CompanyManagment.App.Contracts.EmployeeChildren; using CompanyManagment.App.Contracts.Employer; +using CompanyManagment.App.Contracts.LeftWorkTemp; using CompanyManagment.App.Contracts.PersonalContractingParty; using CompanyManagment.App.Contracts.Workshop; +using CompanyManagment.App.Contracts.Workshop.DTOs; using Microsoft.EntityFrameworkCore; using Microsoft.Identity.Client; using static Microsoft.EntityFrameworkCore.DbLoggerCategory; @@ -31,7 +35,7 @@ public class WorkshopRepository : RepositoryBase GetWorkshopAll() { - return _context.Workshops.Where(x=>x.IsActive) + return _context.Workshops.Where(x => x.IsActive) .Select(x => new WorkshopViewModel { Id = x.id, @@ -108,14 +112,14 @@ public class WorkshopRepository : RepositoryBase GetWorkshopAccount() { - var cornometr = new Stopwatch(); - cornometr.Start(); - var acountId = _authHelper.CurrentAccountId(); - var workshopIds = _context.WorkshopAccounts.Where(x => x.AccountId == acountId).Select(x => x.WorkshopId); - + var cornometr = new Stopwatch(); + cornometr.Start(); + var acountId = _authHelper.CurrentAccountId(); + var workshopIds = _context.WorkshopAccounts.Where(x => x.AccountId == acountId).Select(x => x.WorkshopId); + var result = _context.Workshops.Where(x => workshopIds.Contains(x.id) && x.IsActiveString == "true") - .Include(x => x.WorkshopEmployers).ThenInclude(x=>x.Employer) + .Include(x => x.WorkshopEmployers).ThenInclude(x => x.Employer) .Select(x => new WorkshopViewModel { Id = x.id, @@ -150,7 +154,7 @@ public class WorkshopRepository : RepositoryBase left.Contains(p.Id)).ToList(); } - + var work = _context.Workshops - .Include(x => x.WorkshopEmployers).ThenInclude(x => x.Employer).FirstOrDefault(x=>x.id == id); + .Include(x => x.WorkshopEmployers).ThenInclude(x => x.Employer).FirstOrDefault(x => x.id == id); var results = new WorkshopViewModel { Id = work.id, @@ -302,13 +306,17 @@ public class WorkshopRepository : RepositoryBase new EmployerViewModel() { - Id = y.EmployerId, FullName = y.Employer.FullName, NationalId = y.Employer.NationalId, - Nationalcode = y.Employer.Nationalcode, IdNumber = y.Employer.IdNumber, RegisterId = y.Employer.RegisterId + Id = y.EmployerId, + FullName = y.Employer.FullName, + NationalId = y.Employer.NationalId, + Nationalcode = y.Employer.Nationalcode, + IdNumber = y.Employer.IdNumber, + RegisterId = y.Employer.RegisterId }).ToList(), EmployeeList = employees, }; - + return results; } @@ -420,7 +428,7 @@ public class WorkshopRepository : RepositoryBase x.Id == searchModel.Id); + query = query.Where(x => x.Id == searchModel.Id); if (searchModel.IsActiveString == null) { @@ -445,7 +453,7 @@ public class WorkshopRepository : RepositoryBase emloyerIds.Contains(x.EmployerId)).ToList(); + }).Where(x => emloyerIds.Contains(x.EmployerId)).ToList(); var ids = workshopIds.Select(x => x.WorkshopId).ToList(); var workshops = _context.Workshops.Select(x => new WorkshopViewModel() { @@ -1028,7 +1036,6 @@ public class WorkshopRepository : RepositoryBase x.Employer) @@ -1044,16 +1051,87 @@ public class WorkshopRepository : RepositoryBase> GetWorkshopsForEmployeeStartWork(long accountId) + { + var workshopWithStartedEmployeesDtos = await _context.WorkshopAccounts.Where(x => x.AccountId == accountId) + .Include(x => x.Workshop) + .ThenInclude(x => x.WorkshopEmployers).ThenInclude(x => x.Employer) + .GroupJoin(_context.LeftWorkTemps.Where(x => x.LeftWorkType == LeftWorkTempType.StartWork), + workshopAccounts => workshopAccounts.Workshop.id, + leftWorkTemp => leftWorkTemp.WorkshopId, + (workshopAccount, leftWorkTemp) => new { workshopAccount, leftWorkTemp }) + .Where(x => x.leftWorkTemp.Any()) + .Select(x => new WorkshopWithStartedEmployeesDto + { + AddedEmployeesCount = x.leftWorkTemp.GroupBy(l => l.EmployeeId).Count(), + EmployerName = x.workshopAccount.Workshop.WorkshopEmployers.First().Employer.FullName, + WorkshopId = x.workshopAccount.WorkshopId, + WorkshopName = x.workshopAccount.Workshop.WorkshopFullName + }).ToListAsync(); + + + return workshopWithStartedEmployeesDtos; + } + + public async Task GetWorkshopsForEmployeeStartWorkCount(long accountId) + { + var count = await _context.WorkshopAccounts.Where(x => x.AccountId == accountId) + .Include(x => x.Workshop) + .ThenInclude(x => x.WorkshopEmployers).ThenInclude(x => x.Employer) + .GroupJoin(_context.LeftWorkTemps.Where(x => x.LeftWorkType == LeftWorkTempType.StartWork), + workshopAccounts => workshopAccounts.Workshop.id, + leftWorkTemp => leftWorkTemp.WorkshopId, + (workshopAccount, leftWorkTemp) => new { workshopAccount, leftWorkTemp }) + .CountAsync(x => x.leftWorkTemp.Any()); + return count; + } + + public async Task> GetWorkshopsForLeftWorkTemp(long accountId) + { + var workshopWithLeftEmployeesDtos = await _context.WorkshopAccounts.Where(x => x.AccountId == accountId) + .Include(x => x.Workshop) + .ThenInclude(x => x.WorkshopEmployers).ThenInclude(x => x.Employer) + .GroupJoin(_context.LeftWorkTemps.Where(x => x.LeftWorkType == LeftWorkTempType.LeftWork), + workshopAccounts => workshopAccounts.Workshop.id, + leftWorkTemp => leftWorkTemp.WorkshopId, + (workshopAccount, leftWorkTemp) => new { workshopAccount, leftWorkTemp }) + .Where(x => x.leftWorkTemp.Any()) + .Select(x => new WorkshopWithLeftWorkTempEmployeesDto + { + LeftWorkEmployees = x.leftWorkTemp.GroupBy(l => l.EmployeeId).Count(), + EmployerName = x.workshopAccount.Workshop.WorkshopEmployers.First().Employer.FullName, + WorkshopId = x.workshopAccount.WorkshopId, + WorkshopName = x.workshopAccount.Workshop.WorkshopFullName + }).ToListAsync(); + + return workshopWithLeftEmployeesDtos; + } + + public async Task GetWorkshopsForLeftWorkTempCount(long accountId) + { + var count + = await _context.WorkshopAccounts.Where(x => x.AccountId == accountId) + .Include(x => x.Workshop) + .ThenInclude(x => x.WorkshopEmployers).ThenInclude(x => x.Employer) + .GroupJoin(_context.LeftWorkTemps.Where(x => x.LeftWorkType == LeftWorkTempType.LeftWork), + workshopAccounts => workshopAccounts.Workshop.id, + leftWorkTemp => leftWorkTemp.WorkshopId, + (workshopAccount, leftWorkTemp) => new { workshopAccount, leftWorkTemp }) + .CountAsync(x => x.leftWorkTemp.Any()); + return count; + } + + public List GetWorkshopsByClientAccountId(long clientAccountId) { var workshops = _context.ContractingPartyAccounts.Where(x => x.AccountId == clientAccountId) .Include(x => x.PersonalContractingParty) .ThenInclude(x => x.Employers).ThenInclude(x => x.WorkshopEmployers).ThenInclude(x => x.Workshop).SelectMany(x => x.PersonalContractingParty.Employers.SelectMany(e => e.WorkshopEmployers).Select(e => e.Workshop)).Distinct().Select(x => new WorkshopViewModel() - { - Id = x.id, - WorkshopFullName = x.WorkshopFullName, - }).ToList(); + { + Id = x.id, + WorkshopFullName = x.WorkshopFullName, + }).ToList(); workshops = workshops.Select(x => new WorkshopViewModel() { @@ -1118,7 +1196,7 @@ public class WorkshopRepository : RepositoryBase x.AccountId == acountID).Select(x => x.WorkshopId).ToList(); if (workshopIds != null && workshopIds.Count > 0) { - return _context.Workshops.Where(x => workshopIds.Contains(x.id) && (x.WorkshopFullName.Contains(searchText)|| x.ArchiveCode.Contains(searchText))).Select(x=>new WorkshopViewModel + return _context.Workshops.Where(x => workshopIds.Contains(x.id) && (x.WorkshopFullName.Contains(searchText) || x.ArchiveCode.Contains(searchText))).Select(x => new WorkshopViewModel { Id = x.id, WorkshopName = x.WorkshopName, @@ -1143,143 +1221,143 @@ public class WorkshopRepository : RepositoryBase SearchForMain(WorkshopSearchModel searchModel) { - var leftWorkInsuranceList = _context.LeftWorkInsuranceList.Select(x => x.WorkshopId).ToList(); - var leftWorkList = _context.LeftWorkList.Select(x => x.WorkshopId).ToList(); - var AcountID = _authHelper.CurrentAccountId(); - var workshopIds = _context.WorkshopAccounts.Where(x => x.AccountId == AcountID).ToList(); + var leftWorkInsuranceList = _context.LeftWorkInsuranceList.Select(x => x.WorkshopId).ToList(); + var leftWorkList = _context.LeftWorkList.Select(x => x.WorkshopId).ToList(); + var AcountID = _authHelper.CurrentAccountId(); + var workshopIds = _context.WorkshopAccounts.Where(x => x.AccountId == AcountID).ToList(); - if (searchModel.AccountIds != null && searchModel.AccountIds.Any()) - workshopIds = workshopIds.Where(x => searchModel.AccountIds.Contains(x.AccountId)).ToList(); + if (searchModel.AccountIds != null && searchModel.AccountIds.Any()) + workshopIds = workshopIds.Where(x => searchModel.AccountIds.Contains(x.AccountId)).ToList(); - var blockContractingPartyIds = _context.PersonalContractingParties.Where(x => x.IsBlock == "true").Select(x => x.id).ToList(); - var query = _context.Workshops.Include(x => x.WorkshopEmployers) - .Select(x => new WorkshopViewModel - { - Id = x.id, - WorkshopName = x.WorkshopName, - InsuranceCode = x.InsuranceCode, - //EmployerName = x.WorkshopEmployers. - WorkshopSureName = x.WorkshopSureName, - WorkshopFullName = x.WorkshopFullName, - TypeOfOwnership = x.TypeOfOwnership, - ArchiveCode = x.ArchiveCode, - AgentName = x.AgentName, - AgentPhone = x.AgentPhone, - State = x.State, - City = x.City, - Address = x.Address, - TypeOfInsuranceSend = x.TypeOfInsuranceSend, - TypeOfContract = x.TypeOfContract, - IsActiveString = x.IsActiveString, - ContractTerm = x.ContractTerm, - AgreementNumber = x.AgreementNumber, - FixedSalary = x.FixedSalary, - Population = x.Population, - InsuranceJobId = x.InsuranceJobId, - ZoneName = x.ZoneName, - TotalPaymentHide = x.TotalPaymentHide, - HasBlockContractingParty = false, - IsClassified = x.IsClassified, - HasLeftwork = (leftWorkInsuranceList.Contains(x.id) || leftWorkList.Contains(x.id)), - EmpList = x.WorkshopEmployers.Select(y => new EmployerViewModel() - { - Id = y.EmployerId, - FullName = y.Employer.FullName, - ContractingPartyID = y.Employer.ContractingPartyId - }).ToList(), - }).Where(e => workshopIds.Select(a => a.WorkshopId).Contains(e.Id)); - if (searchModel.AccountId > 0) - { - var res = _workshopAccountRepository.GetList(searchModel.AccountId).Select(x => x.WorkshopId).ToList(); - query = query.Where(x => res.Contains(x.Id)); - } - - - - - - if (!string.IsNullOrWhiteSpace(searchModel.WorkshopName)) - query = query.Where(x => x.WorkshopName.Contains(searchModel.WorkshopName)); - - if (!string.IsNullOrWhiteSpace(searchModel.InsuranceCode)) - query = query.Where(x => x.InsuranceCode.Contains(searchModel.InsuranceCode)); - - if (!string.IsNullOrWhiteSpace(searchModel.ArchiveCode)) - query = query.Where(x => x.ArchiveCode == searchModel.ArchiveCode); - - if (!string.IsNullOrWhiteSpace(searchModel.WorkshopName)) - query = query.Where(x => x.WorkshopName.Contains(searchModel.WorkshopName)); - - if (!string.IsNullOrWhiteSpace(searchModel.ContractTerm)) - query = query.Where(x => x.ContractTerm == searchModel.ContractTerm); - - if (!string.IsNullOrWhiteSpace(searchModel.TypeOfContract)) - query = query.Where(x => x.TypeOfContract == searchModel.TypeOfContract); - - if (searchModel.EmployerId != 0) - { - var emp = _context.WorkshopEmployers.Where(x => x.EmployerId == searchModel.EmployerId) - .Select(x => x.WorkshopId).ToList(); - query = query.Where(x => emp.Contains(x.Id)); - - } - - #region NewByHeydari - if (!string.IsNullOrEmpty(searchModel.EmployerLName)) - { - var employerIds = _context.Employers.Where(x => - (!string.IsNullOrEmpty(x.FName) && x.FName.Contains(searchModel.EmployerLName)) || - (!string.IsNullOrEmpty(x.LName) && x.LName.Contains(searchModel.EmployerLName))).Select(x => x.id); - var workshopIds2 = _context.WorkshopEmployers.Where(x => employerIds.Contains(x.EmployerId)).Select(x => x.WorkshopId).ToList(); - - query = query.Where(x => workshopIds2.Contains(x.Id)); - } - - if (!string.IsNullOrEmpty(searchModel.State)) - { - query = query.Where(x => x.State == searchModel.State); - } - if (!string.IsNullOrEmpty(searchModel.City)) - { - query = query.Where(x => x.City == searchModel.City); - } - if (!string.IsNullOrWhiteSpace(searchModel.WorkshopFullName)) - query = query.Where(x => x.WorkshopFullName.Contains(searchModel.WorkshopFullName) || x.ArchiveCode.Contains(searchModel.WorkshopFullName)); - #endregion - - if (searchModel.Id != 0) - query = query.Where(x => x.Id == searchModel.Id); - - if (searchModel.IsActiveString == null) - { - query = query.Where(x => x.IsActiveString == "true"); - } - - if (searchModel.IsActiveString == "false") - { - query = query.Where(x => x.IsActiveString == "false"); - } - else if (searchModel.IsActiveString == "both") - { - query = query.Where(x => x.IsActiveString == "false" || x.IsActiveString == "true"); - } - - var list = query.OrderByDescending(x => x.Id).ToList(); - foreach (var item in list) - { - var empContractingPartyIds = item.EmpList.Select(x => x.ContractingPartyID).ToList(); - item.HasBlockContractingParty = blockContractingPartyIds.Intersect(empContractingPartyIds).Any(); - } + var blockContractingPartyIds = _context.PersonalContractingParties.Where(x => x.IsBlock == "true").Select(x => x.id).ToList(); + var query = _context.Workshops.Include(x => x.WorkshopEmployers) + .Select(x => new WorkshopViewModel + { + Id = x.id, + WorkshopName = x.WorkshopName, + InsuranceCode = x.InsuranceCode, + //EmployerName = x.WorkshopEmployers. + WorkshopSureName = x.WorkshopSureName, + WorkshopFullName = x.WorkshopFullName, + TypeOfOwnership = x.TypeOfOwnership, + ArchiveCode = x.ArchiveCode, + AgentName = x.AgentName, + AgentPhone = x.AgentPhone, + State = x.State, + City = x.City, + Address = x.Address, + TypeOfInsuranceSend = x.TypeOfInsuranceSend, + TypeOfContract = x.TypeOfContract, + IsActiveString = x.IsActiveString, + ContractTerm = x.ContractTerm, + AgreementNumber = x.AgreementNumber, + FixedSalary = x.FixedSalary, + Population = x.Population, + InsuranceJobId = x.InsuranceJobId, + ZoneName = x.ZoneName, + TotalPaymentHide = x.TotalPaymentHide, + HasBlockContractingParty = false, + IsClassified = x.IsClassified, + HasLeftwork = (leftWorkInsuranceList.Contains(x.id) || leftWorkList.Contains(x.id)), + EmpList = x.WorkshopEmployers.Select(y => new EmployerViewModel() + { + Id = y.EmployerId, + FullName = y.Employer.FullName, + ContractingPartyID = y.Employer.ContractingPartyId + }).ToList(), + }).Where(e => workshopIds.Select(a => a.WorkshopId).Contains(e.Id)); + if (searchModel.AccountId > 0) + { + var res = _workshopAccountRepository.GetList(searchModel.AccountId).Select(x => x.WorkshopId).ToList(); + query = query.Where(x => res.Contains(x.Id)); + } - return list; - } + + + + if (!string.IsNullOrWhiteSpace(searchModel.WorkshopName)) + query = query.Where(x => x.WorkshopName.Contains(searchModel.WorkshopName)); + + if (!string.IsNullOrWhiteSpace(searchModel.InsuranceCode)) + query = query.Where(x => x.InsuranceCode.Contains(searchModel.InsuranceCode)); + + if (!string.IsNullOrWhiteSpace(searchModel.ArchiveCode)) + query = query.Where(x => x.ArchiveCode == searchModel.ArchiveCode); + + if (!string.IsNullOrWhiteSpace(searchModel.WorkshopName)) + query = query.Where(x => x.WorkshopName.Contains(searchModel.WorkshopName)); + + if (!string.IsNullOrWhiteSpace(searchModel.ContractTerm)) + query = query.Where(x => x.ContractTerm == searchModel.ContractTerm); + + if (!string.IsNullOrWhiteSpace(searchModel.TypeOfContract)) + query = query.Where(x => x.TypeOfContract == searchModel.TypeOfContract); + + if (searchModel.EmployerId != 0) + { + var emp = _context.WorkshopEmployers.Where(x => x.EmployerId == searchModel.EmployerId) + .Select(x => x.WorkshopId).ToList(); + query = query.Where(x => emp.Contains(x.Id)); + + } + + #region NewByHeydari + if (!string.IsNullOrEmpty(searchModel.EmployerLName)) + { + var employerIds = _context.Employers.Where(x => + (!string.IsNullOrEmpty(x.FName) && x.FName.Contains(searchModel.EmployerLName)) || + (!string.IsNullOrEmpty(x.LName) && x.LName.Contains(searchModel.EmployerLName))).Select(x => x.id); + var workshopIds2 = _context.WorkshopEmployers.Where(x => employerIds.Contains(x.EmployerId)).Select(x => x.WorkshopId).ToList(); + + query = query.Where(x => workshopIds2.Contains(x.Id)); + } + + if (!string.IsNullOrEmpty(searchModel.State)) + { + query = query.Where(x => x.State == searchModel.State); + } + if (!string.IsNullOrEmpty(searchModel.City)) + { + query = query.Where(x => x.City == searchModel.City); + } + if (!string.IsNullOrWhiteSpace(searchModel.WorkshopFullName)) + query = query.Where(x => x.WorkshopFullName.Contains(searchModel.WorkshopFullName) || x.ArchiveCode.Contains(searchModel.WorkshopFullName)); + #endregion + + if (searchModel.Id != 0) + query = query.Where(x => x.Id == searchModel.Id); + + if (searchModel.IsActiveString == null) + { + query = query.Where(x => x.IsActiveString == "true"); + } + + if (searchModel.IsActiveString == "false") + { + query = query.Where(x => x.IsActiveString == "false"); + } + else if (searchModel.IsActiveString == "both") + { + query = query.Where(x => x.IsActiveString == "false" || x.IsActiveString == "true"); + } + + var list = query.OrderByDescending(x => x.Id).ToList(); + foreach (var item in list) + { + var empContractingPartyIds = item.EmpList.Select(x => x.ContractingPartyID).ToList(); + item.HasBlockContractingParty = blockContractingPartyIds.Intersect(empContractingPartyIds).Any(); + } + + + return list; + } public OperationResult DeActiveAll(long id) { @@ -1288,10 +1366,10 @@ public class WorkshopRepository : RepositoryBasex.id==id); + var workshops = _context.Workshops.FirstOrDefault(x => x.id == id); workshops.DeActive(workshops.ArchiveCode); - var contracts = _context.Contracts.Where(x=>x.WorkshopIds == id).ToList(); + var contracts = _context.Contracts.Where(x => x.WorkshopIds == id).ToList(); contracts.ForEach(x => x.DeActive()); var contractIds = contracts.Select(x => x.id).ToList(); @@ -1339,208 +1417,208 @@ public class WorkshopRepository : RepositoryBase PrintWorkshopList(WorkshopSearchModel searchModel) - { - var leftWorkInsuranceList = _context.LeftWorkInsuranceList.Select(x => x.WorkshopId).ToList(); - var leftWorkList = _context.LeftWorkList.Select(x => x.WorkshopId).ToList(); - var AcountID = _authHelper.CurrentAccountId(); - var workshopIds = _context.WorkshopAccounts.Where(x => x.AccountId == AcountID).ToList(); + public List PrintWorkshopList(WorkshopSearchModel searchModel) + { + var leftWorkInsuranceList = _context.LeftWorkInsuranceList.Select(x => x.WorkshopId).ToList(); + var leftWorkList = _context.LeftWorkList.Select(x => x.WorkshopId).ToList(); + var AcountID = _authHelper.CurrentAccountId(); + var workshopIds = _context.WorkshopAccounts.Where(x => x.AccountId == AcountID).ToList(); - if (searchModel.AccountIds != null && searchModel.AccountIds.Any()) - workshopIds = workshopIds.Where(x => searchModel.AccountIds.Contains(x.AccountId)).ToList(); + if (searchModel.AccountIds != null && searchModel.AccountIds.Any()) + workshopIds = workshopIds.Where(x => searchModel.AccountIds.Contains(x.AccountId)).ToList(); - var blockContractingPartyIds = _context.PersonalContractingParties.Where(x => x.IsBlock == "true").Select(x => x.id).ToList(); - var query = _context.Workshops.Include(x => x.WorkshopEmployers) - .Select(x => new WorkshopViewModel - { - Id = x.id, - WorkshopName = x.WorkshopName, - InsuranceCode = x.InsuranceCode, - //EmployerName = x.WorkshopEmployers. - WorkshopSureName = x.WorkshopSureName, - WorkshopFullName = x.WorkshopFullName, - TypeOfOwnership = x.TypeOfOwnership, - ArchiveCode = x.ArchiveCode, - AgentName = x.AgentName, - AgentPhone = x.AgentPhone, - State = x.State, - City = x.City, - Address = x.Address, - TypeOfInsuranceSend = x.TypeOfInsuranceSend, - TypeOfContract = x.TypeOfContract, - IsActiveString = x.IsActiveString, - ContractTerm = x.ContractTerm, - AgreementNumber = x.AgreementNumber, - FixedSalary = x.FixedSalary, - Population = x.Population, - InsuranceJobId = x.InsuranceJobId, - ZoneName = x.ZoneName, - TotalPaymentHide = x.TotalPaymentHide, - HasBlockContractingParty = false, - IsClassified = x.IsClassified, - HasLeftwork = (leftWorkInsuranceList.Contains(x.id) || leftWorkList.Contains(x.id)), - EmpList = x.WorkshopEmployers.Select(y => new EmployerViewModel() - { - Id = y.EmployerId, - FullName = y.Employer.FullName, - ContractingPartyID = y.Employer.ContractingPartyId - }).ToList(), - }).Where(e => workshopIds.Select(a => a.WorkshopId).Contains(e.Id)); - if (searchModel.AccountId > 0) - { - var res = _workshopAccountRepository.GetList(searchModel.AccountId).Select(x => x.WorkshopId).ToList(); - query = query.Where(x => res.Contains(x.Id)); - } + var blockContractingPartyIds = _context.PersonalContractingParties.Where(x => x.IsBlock == "true").Select(x => x.id).ToList(); + var query = _context.Workshops.Include(x => x.WorkshopEmployers) + .Select(x => new WorkshopViewModel + { + Id = x.id, + WorkshopName = x.WorkshopName, + InsuranceCode = x.InsuranceCode, + //EmployerName = x.WorkshopEmployers. + WorkshopSureName = x.WorkshopSureName, + WorkshopFullName = x.WorkshopFullName, + TypeOfOwnership = x.TypeOfOwnership, + ArchiveCode = x.ArchiveCode, + AgentName = x.AgentName, + AgentPhone = x.AgentPhone, + State = x.State, + City = x.City, + Address = x.Address, + TypeOfInsuranceSend = x.TypeOfInsuranceSend, + TypeOfContract = x.TypeOfContract, + IsActiveString = x.IsActiveString, + ContractTerm = x.ContractTerm, + AgreementNumber = x.AgreementNumber, + FixedSalary = x.FixedSalary, + Population = x.Population, + InsuranceJobId = x.InsuranceJobId, + ZoneName = x.ZoneName, + TotalPaymentHide = x.TotalPaymentHide, + HasBlockContractingParty = false, + IsClassified = x.IsClassified, + HasLeftwork = (leftWorkInsuranceList.Contains(x.id) || leftWorkList.Contains(x.id)), + EmpList = x.WorkshopEmployers.Select(y => new EmployerViewModel() + { + Id = y.EmployerId, + FullName = y.Employer.FullName, + ContractingPartyID = y.Employer.ContractingPartyId + }).ToList(), + }).Where(e => workshopIds.Select(a => a.WorkshopId).Contains(e.Id)); + if (searchModel.AccountId > 0) + { + var res = _workshopAccountRepository.GetList(searchModel.AccountId).Select(x => x.WorkshopId).ToList(); + query = query.Where(x => res.Contains(x.Id)); + } - if (!string.IsNullOrWhiteSpace(searchModel.WorkshopName)) - query = query.Where(x => x.WorkshopName.Contains(searchModel.WorkshopName)); + if (!string.IsNullOrWhiteSpace(searchModel.WorkshopName)) + query = query.Where(x => x.WorkshopName.Contains(searchModel.WorkshopName)); - if (!string.IsNullOrWhiteSpace(searchModel.InsuranceCode)) - query = query.Where(x => x.InsuranceCode.Contains(searchModel.InsuranceCode)); + if (!string.IsNullOrWhiteSpace(searchModel.InsuranceCode)) + query = query.Where(x => x.InsuranceCode.Contains(searchModel.InsuranceCode)); - if (!string.IsNullOrWhiteSpace(searchModel.ArchiveCode)) - query = query.Where(x => x.ArchiveCode == searchModel.ArchiveCode); + if (!string.IsNullOrWhiteSpace(searchModel.ArchiveCode)) + query = query.Where(x => x.ArchiveCode == searchModel.ArchiveCode); - if (!string.IsNullOrWhiteSpace(searchModel.WorkshopName)) - query = query.Where(x => x.WorkshopName.Contains(searchModel.WorkshopName)); + if (!string.IsNullOrWhiteSpace(searchModel.WorkshopName)) + query = query.Where(x => x.WorkshopName.Contains(searchModel.WorkshopName)); - if (!string.IsNullOrWhiteSpace(searchModel.ContractTerm)) - query = query.Where(x => x.ContractTerm == searchModel.ContractTerm); + if (!string.IsNullOrWhiteSpace(searchModel.ContractTerm)) + query = query.Where(x => x.ContractTerm == searchModel.ContractTerm); - if (!string.IsNullOrWhiteSpace(searchModel.TypeOfContract)) - query = query.Where(x => x.TypeOfContract == searchModel.TypeOfContract); + if (!string.IsNullOrWhiteSpace(searchModel.TypeOfContract)) + query = query.Where(x => x.TypeOfContract == searchModel.TypeOfContract); - if (searchModel.EmployerId != 0) - { - var emp = _context.WorkshopEmployers.Where(x => x.EmployerId == searchModel.EmployerId) - .Select(x => x.WorkshopId).ToList(); - query = query.Where(x => emp.Contains(x.Id)); + if (searchModel.EmployerId != 0) + { + var emp = _context.WorkshopEmployers.Where(x => x.EmployerId == searchModel.EmployerId) + .Select(x => x.WorkshopId).ToList(); + query = query.Where(x => emp.Contains(x.Id)); - } + } - #region NewByHeydari - if (!string.IsNullOrEmpty(searchModel.EmployerLName)) - { - var employerIds = _context.Employers.Where(x => - (!string.IsNullOrEmpty(x.FName) && x.FName.Contains(searchModel.EmployerLName)) || - (!string.IsNullOrEmpty(x.LName) && x.LName.Contains(searchModel.EmployerLName))).Select(x => x.id); - var workshopIds2 = _context.WorkshopEmployers.Where(x => employerIds.Contains(x.EmployerId)).Select(x => x.WorkshopId).ToList(); + #region NewByHeydari + if (!string.IsNullOrEmpty(searchModel.EmployerLName)) + { + var employerIds = _context.Employers.Where(x => + (!string.IsNullOrEmpty(x.FName) && x.FName.Contains(searchModel.EmployerLName)) || + (!string.IsNullOrEmpty(x.LName) && x.LName.Contains(searchModel.EmployerLName))).Select(x => x.id); + var workshopIds2 = _context.WorkshopEmployers.Where(x => employerIds.Contains(x.EmployerId)).Select(x => x.WorkshopId).ToList(); - query = query.Where(x => workshopIds2.Contains(x.Id)); - } + query = query.Where(x => workshopIds2.Contains(x.Id)); + } - if (!string.IsNullOrEmpty(searchModel.State)) - { - query = query.Where(x => x.State == searchModel.State); - } - if (!string.IsNullOrEmpty(searchModel.City)) - { - query = query.Where(x => x.City == searchModel.City); - } - if (!string.IsNullOrWhiteSpace(searchModel.WorkshopFullName)) - query = query.Where(x => x.WorkshopFullName.Contains(searchModel.WorkshopFullName) || x.ArchiveCode.Contains(searchModel.WorkshopFullName)); - #endregion + if (!string.IsNullOrEmpty(searchModel.State)) + { + query = query.Where(x => x.State == searchModel.State); + } + if (!string.IsNullOrEmpty(searchModel.City)) + { + query = query.Where(x => x.City == searchModel.City); + } + if (!string.IsNullOrWhiteSpace(searchModel.WorkshopFullName)) + query = query.Where(x => x.WorkshopFullName.Contains(searchModel.WorkshopFullName) || x.ArchiveCode.Contains(searchModel.WorkshopFullName)); + #endregion - if (searchModel.Id != 0) - query = query.Where(x => x.Id == searchModel.Id); + if (searchModel.Id != 0) + query = query.Where(x => x.Id == searchModel.Id); - if (searchModel.IsActiveString == null) - { - query = query.Where(x => x.IsActiveString == "true"); - } + if (searchModel.IsActiveString == null) + { + query = query.Where(x => x.IsActiveString == "true"); + } - if (searchModel.IsActiveString == "false") - { - query = query.Where(x => x.IsActiveString == "false"); - } - else if (searchModel.IsActiveString == "both") - { - query = query.Where(x => x.IsActiveString == "false" || x.IsActiveString == "true"); - } + if (searchModel.IsActiveString == "false") + { + query = query.Where(x => x.IsActiveString == "false"); + } + else if (searchModel.IsActiveString == "both") + { + query = query.Where(x => x.IsActiveString == "false" || x.IsActiveString == "true"); + } - var rawList = query.OrderByDescending(x => x.Id).ToList(); - var list = rawList.Select(x => new PrintListWorkshop() - { - Id = x.Id, - WorkshopName = x.WorkshopName, - InsuranceCode = x.InsuranceCode, - WorkshopSureName = x.WorkshopSureName, - WorkshopFullName = x.WorkshopFullName, - TypeOfOwnership = x.TypeOfOwnership, - ArchiveCode = x.ArchiveCode, - AgentName = x.AgentName, - AgentPhone = x.AgentPhone, - State = x.State, - City = x.City, - Address = x.Address, - TypeOfInsuranceSend = x.TypeOfInsuranceSend, - TypeOfContract = x.TypeOfContract, - IsActiveString = x.IsActiveString, - ContractTerm = x.ContractTerm, - AgreementNumber = x.AgreementNumber, - FixedSalary = x.FixedSalary, - Population = x.Population, - InsuranceJobId = x.InsuranceJobId, - ZoneName = x.ZoneName, - TotalPaymentHide = x.TotalPaymentHide, - HasBlockContractingParty = false, - IsClassified = x.IsClassified, - HasLeftwork = x.HasLeftwork, - EmpList = x.EmpList, - AccountFullName = searchModel.AccountId != 0 ? _accountContext.Accounts.FirstOrDefault(oneAc => oneAc.id == searchModel.AccountId)?.Fullname : "", - AccountsFullName = (searchModel.AccountIds != null && searchModel.AccountIds.Any()) - ? _accountContext.Accounts - .Where(ac => searchModel.AccountIds.Contains(ac.id)) - .Select(account => new AccountViewModel - { - Id = account.id, - Fullname = account.Fullname - }).ToList() - : new List(), - }).ToList(); + var rawList = query.OrderByDescending(x => x.Id).ToList(); + var list = rawList.Select(x => new PrintListWorkshop() + { + Id = x.Id, + WorkshopName = x.WorkshopName, + InsuranceCode = x.InsuranceCode, + WorkshopSureName = x.WorkshopSureName, + WorkshopFullName = x.WorkshopFullName, + TypeOfOwnership = x.TypeOfOwnership, + ArchiveCode = x.ArchiveCode, + AgentName = x.AgentName, + AgentPhone = x.AgentPhone, + State = x.State, + City = x.City, + Address = x.Address, + TypeOfInsuranceSend = x.TypeOfInsuranceSend, + TypeOfContract = x.TypeOfContract, + IsActiveString = x.IsActiveString, + ContractTerm = x.ContractTerm, + AgreementNumber = x.AgreementNumber, + FixedSalary = x.FixedSalary, + Population = x.Population, + InsuranceJobId = x.InsuranceJobId, + ZoneName = x.ZoneName, + TotalPaymentHide = x.TotalPaymentHide, + HasBlockContractingParty = false, + IsClassified = x.IsClassified, + HasLeftwork = x.HasLeftwork, + EmpList = x.EmpList, + AccountFullName = searchModel.AccountId != 0 ? _accountContext.Accounts.FirstOrDefault(oneAc => oneAc.id == searchModel.AccountId)?.Fullname : "", + AccountsFullName = (searchModel.AccountIds != null && searchModel.AccountIds.Any()) + ? _accountContext.Accounts + .Where(ac => searchModel.AccountIds.Contains(ac.id)) + .Select(account => new AccountViewModel + { + Id = account.id, + Fullname = account.Fullname + }).ToList() + : new List(), + }).ToList(); - foreach (var item in list) - { - var empContractingPartyIds = item.EmpList.Select(x => x.ContractingPartyID).ToList(); - item.HasBlockContractingParty = blockContractingPartyIds.Intersect(empContractingPartyIds).Any(); - } + foreach (var item in list) + { + var empContractingPartyIds = item.EmpList.Select(x => x.ContractingPartyID).ToList(); + item.HasBlockContractingParty = blockContractingPartyIds.Intersect(empContractingPartyIds).Any(); + } - return list; - } + return list; + } - #endregion + #endregion - #region Insurance + #region Insurance - public List GetWorkshopSelectListInsuransce() - { - var cornometr = new Stopwatch(); - cornometr.Start(); - var acountId = _authHelper.CurrentAccountId(); - var workshopIds = _context.WorkshopAccounts.Where(x => x.AccountId == acountId).Select(x => x.WorkshopId); + public List GetWorkshopSelectListInsuransce() + { + var cornometr = new Stopwatch(); + cornometr.Start(); + var acountId = _authHelper.CurrentAccountId(); + var workshopIds = _context.WorkshopAccounts.Where(x => x.AccountId == acountId).Select(x => x.WorkshopId); - var res = _context.Workshops - .Where(x=> workshopIds.Contains(x.id) && !string.IsNullOrWhiteSpace(x.TypeOfInsuranceSend) && x.TypeOfInsuranceSend != "false" && x.IsActiveString == "true") - .Select(x=> new WorkshopViewModel() - { - Id = x.id, - WorkshopFullName = x.WorkshopFullName, - }); + var res = _context.Workshops + .Where(x => workshopIds.Contains(x.id) && !string.IsNullOrWhiteSpace(x.TypeOfInsuranceSend) && x.TypeOfInsuranceSend != "false" && x.IsActiveString == "true") + .Select(x => new WorkshopViewModel() + { + Id = x.id, + WorkshopFullName = x.WorkshopFullName, + }); - Console.WriteLine("Optimized list Time : " + cornometr.Elapsed); - cornometr.Stop(); + Console.WriteLine("Optimized list Time : " + cornometr.Elapsed); + cornometr.Stop(); return res.ToList(); - } + } public OperationResult CreateAccountLeftWorkAndWorkshopAccounts(List accountIds, long workshopId) { @@ -1563,13 +1641,13 @@ public class WorkshopRepository : RepositoryBase accountIds.Contains(x.id)).ToList(); - + foreach (var item in toBeCreateAccountLeftWork) { _accountContext.AccountLeftWorks.Add(new AccountLeftWork(startGr, continueWorking, item.id, workshopId, item.RoleId)); @@ -1736,5 +1814,154 @@ public class WorkshopRepository : RepositoryBase GetPersonnelInfoRemastered(long workshopId) + { + var leftDate = Tools.GetUndefinedDateTime(); + + var personnelCodes = _context.PersonnelCodeSet.Include(x => x.Employee) + .ThenInclude(x => x.EmployeeChildrenList).IgnoreQueryFilters().Where(x => x.WorkshopId == workshopId).ToList(); + + var contractLeftWork = + _context.LeftWorkList.Where(x => x.WorkshopId == workshopId) + .Select(x => new PersonnelInfoViewModel() + { + WorkshopId = x.WorkshopId, + EmployeeId = x.EmployeeId, + FullName = x.EmployeeFullName, + PersonnelCode = 0, + ContractPerson = true, + ContractLeft = x.LeftWorkDate != leftDate, + StartWork = x.StartWorkDate, + LeftWork = x.LeftWorkDate, + LastStartContractWork = x.StartWorkDate.ToFarsi(), + LastLeftContractWork = x.LeftWorkDate != leftDate ? x.LeftWorkDate.ToFarsi() : "-", + LastStartInsuranceWork = "-", + LastLeftInsuranceWork = "-", + }).GroupBy(x => x.EmployeeId).Select(x => x.OrderByDescending(y => y.LeftWork).First()).ToList(); + + + + + var insuranceLeftWork = _context.LeftWorkInsuranceList.Where(x => x.WorkshopId == workshopId).Select(x => new PersonnelInfoViewModel() + { + WorkshopId = x.WorkshopId, + EmployeeId = x.EmployeeId, + FullName = x.EmployeeFullName, + PersonnelCode = 0, + InsurancePerson = true, + InsuranceLeft = x.LeftWorkDate != null, + StartWork = x.StartWorkDate, + LeftWork = x.LeftWorkDate ?? leftDate, + LastStartInsuranceWork = x.StartWorkDate.ToFarsi(), + LastLeftInsuranceWork = x.LeftWorkDate != null ? x.LeftWorkDate.ToFarsi() : "-", + LastStartContractWork = "-", + LastLeftContractWork = "-" + }).GroupBy(x => x.EmployeeId).Select(x => x.OrderByDescending(y => y.LeftWork).First()).ToList(); + + var leftWorkTemp = _context.LeftWorkTemps.Where(x => x.WorkshopId == workshopId).Select(x => new PersonnelInfoViewModel() + { + WorkshopId = x.WorkshopId, + EmployeeId = x.EmployeeId, + PersonnelCode = 0, + ContractPerson = true, + ContractLeft = x.LeftWork != leftDate, + StartWork = x.StartWork, + LeftWork = x.LeftWork, + LastStartContractWork = x.StartWork.ToFarsi(), + LastLeftContractWork = x.LeftWork != leftDate ? x.LeftWork.ToFarsi() : "-", + LastStartInsuranceWork = "-", + LastLeftInsuranceWork = "-", + LefWorkTemp = x.LeftWorkType == LeftWorkTempType.LeftWork, + CreatedByClient = x.LeftWorkType == LeftWorkTempType.StartWork + }).ToList(); + + + var employeeClientTemp = _context.EmployeeClientTemps.Where(x => x.WorkshopId == workshopId).Select(x => new PersonnelInfoViewModel() + { + WorkshopId = x.WorkshopId, + EmployeeId = x.EmployeeId, + PersonnelCode = 0, + CreatedByClient = true, + ContractPerson = true + }).ToList(); + + var resultTemp = employeeClientTemp.Concat(leftWorkTemp).ToList().GroupBy(x => x.EmployeeId); + + + + var result = contractLeftWork.Concat(insuranceLeftWork).GroupBy(x => x.EmployeeId).ToList(); + + result = result.Concat(resultTemp).GroupBy(x => x.First().EmployeeId).Select(x => x.First()).ToList(); + + var employeeClientTempList = employeeClientTemp.ToList(); + var startWorkTempsForWorkshop = leftWorkTemp.Where(x => x.CreatedByClient).ToList(); + var leftWorkTempsForWorkshop = leftWorkTemp.Where(x => x.LefWorkTemp).ToList(); + + return result.Select(x => + { + var insurance = x.FirstOrDefault(y => y.InsurancePerson); + var contract = x.FirstOrDefault(y => y.ContractPerson); + var personnelCode = personnelCodes.FirstOrDefault(y => y.EmployeeId == x.Key); + var employee = personnelCode.Employee; + var employeeClient = employeeClientTempList.FirstOrDefault(t => t.EmployeeId == x.First().EmployeeId); + var startWorkTemp = startWorkTempsForWorkshop.FirstOrDefault(s => s.EmployeeId == x.First().EmployeeId); + var leftWorkTemp = leftWorkTempsForWorkshop.FirstOrDefault(s => s.EmployeeId == x.First().EmployeeId); + + + return new PersonnelInfoViewModel() + { + WorkshopId = workshopId, + EmployeeId = x.Key, + FullName = employee.FullName, + PersonnelCode = personnelCode?.PersonnelCode ?? 0, + + InsurancePerson = insurance != null, + ContractPerson = contract != null, + + InsuranceLeft = insurance?.InsuranceLeft ?? false, + ContractLeft = contract?.ContractLeft ?? false, + + StartWork = contract?.StartWork ?? insurance.StartWork, + LeftWork = contract?.LeftWork ?? insurance.LeftWork, + + LastStartInsuranceWork = insurance != null ? insurance.LastStartInsuranceWork : "-", + LastLeftInsuranceWork = insurance != null ? insurance.LastLeftInsuranceWork : "-", + LastStartContractWork = contract != null ? contract.LastStartContractWork : "-", + LastLeftContractWork = contract != null ? contract.LastLeftContractWork : "-", + + Name = employee.FName, + LastName = employee.LName, + NationalCode = employee.NationalCode, + IdNumber = employee.IdNumber, + MaritalStatus = employee.MaritalStatus, + DateOfBirthFa = employee.DateOfBirth.ToFarsi(), + FatherName = employee.FatherName, + State = employee.State, + City = employee.City, + Address = employee.Address, + + CreatedByClient = employeeClient != null || startWorkTemp != null, + + LefWorkTemp = leftWorkTemp != null, + + ChildrenList = employee.EmployeeChildrenList.Select(y => new EmployeeChildernViewModel() + { + DateOfBirth = y.DateOfBirth.ToFarsi(), + EmployeeId = y.EmployeeId, + FName = y.FName, + Id = y.id, + ParentNationalCode = y.ParentNationalCode + }).ToList() + + }; + }).OrderByDescending(x => x.StartWork).ToList(); + + } #endregion } \ No newline at end of file diff --git a/PersonalContractingParty.Config/PersonalBootstrapper.cs b/PersonalContractingParty.Config/PersonalBootstrapper.cs index a9c701e4..356ac2e0 100644 --- a/PersonalContractingParty.Config/PersonalBootstrapper.cs +++ b/PersonalContractingParty.Config/PersonalBootstrapper.cs @@ -197,6 +197,10 @@ using Company.Domain.EmployeeDocumentsAgg; using CompanyManagement.Infrastructure.Excel.SalaryAid; using CompanyManagment.App.Contracts.EmployeeDocuments; using CompanyManagment.App.Contracts.EmployeeDocumentsAdminSelection; +using Company.Domain.EmployeeClientTempAgg; +using Company.Domain.LeftWorkTempAgg; +using CompanyManagment.App.Contracts.EmployeeClientTemp; +using CompanyManagment.App.Contracts.LeftWorkTemp; namespace PersonalContractingParty.Config; @@ -409,6 +413,12 @@ public class PersonalBootstrapper services.AddTransient(); services.AddTransient(); + + services.AddTransient(); + services.AddTransient(); + + services.AddTransient(); + services.AddTransient(); #endregion #region Pooya diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/Checker/Index.cshtml.cs b/ServiceHost/Areas/AdminNew/Pages/Company/Checker/Index.cshtml.cs index 975a0509..c8fa5a22 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Company/Checker/Index.cshtml.cs +++ b/ServiceHost/Areas/AdminNew/Pages/Company/Checker/Index.cshtml.cs @@ -15,9 +15,10 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.Checker _adminWorkFlowApplication = adminWorkFlowApplication; } - public void OnGet() + + public async System.Threading.Tasks.Task OnGet() { - UploadDocumentCheckerCount = _adminWorkFlowApplication.GetWorkFlowCountForChecker(); + UploadDocumentCheckerCount = await _adminWorkFlowApplication.GetWorkFlowCountForChecker(); } } } diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/EmployeesDocuments.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/EmployeesDocuments.cshtml index 0c1338e0..b397fd03 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/EmployeesDocuments.cshtml +++ b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/EmployeesDocuments.cshtml @@ -112,7 +112,7 @@ - - @* *@ + + + + -@*
+ @*
@@ -148,16 +163,57 @@
+ @section Script { + $(document).ready(function () { + workFlowStartAndLeftWorkCountMenu(); + + $('.loadingButton').on('click', function (e) { + if (e.ctrlKey || e.metaKey) { + return; + } + + var button = $(this); + var loadingDiv = button.find('.loading'); + loadingDiv.show(); + }); + }); + + function workFlowStartAndLeftWorkCountMenu() { + $.ajax({ + async: true, + dataType: 'json', + url: `@Url.Page("./Index", "StartAndLeftWorkCount")`, + headers: { "RequestVerificationToken": antiForgeryTokenLayout }, + type: 'GET', + success: function (response) { + if (response.success) { + if (response.dataStartWorkCount === 0) { + $('#StartWorkCount').hide(); + } else { + $('#StartWorkCount').show(); + var startWorkCount = response.dataStartWorkCount > 99 ? "+99" : response.dataStartWorkCount; + $('#StartWorkCount span').text(startWorkCount); + } + + if (response.dataLeftWorkCount === 0) { + $('#leftWorkCount').hide(); + } else { + $('#leftWorkCount').show(); + var leftWorkCount = response.dataLeftWorkCount > 99 ? "+99" : response.dataLeftWorkCount; + $('#leftWorkCount span').text(leftWorkCount); + } + } + }, + error: function (xhr, status, error) { + console.error(xhr.responseText); + } + }); + } + } diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/Index.cshtml.cs b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/Index.cshtml.cs index d93657aa..b75c7603 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/Index.cshtml.cs +++ b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/Index.cshtml.cs @@ -5,6 +5,7 @@ using CompanyManagment.App.Contracts.Workshop; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.Extensions.Configuration.UserSecrets; +using Microsoft.Identity.Client; using Query.AdminReports.Handlers; using WorkFlow.Application.Contracts.AdminWorkFlow; using WorkFlow.Application.Contracts.WorkFlow; @@ -25,11 +26,25 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.WorkFlow _workshopAccountRepository = workshopAccountRepository; } - public void OnGet() + public async System.Threading.Tasks.Task OnGet() { var accountId = _authHelper.CurrentAccountId(); var accountWorkshops = _workshopAccountRepository.GetList(accountId).Select(x => x.WorkshopId).ToList(); - EmployeeDocumentsAwaitingSubmitCount = _adminWorkFlowApplication.GetWorkFlowCountsForAdmin(accountWorkshops).EmployeeDocumentsAwaitingSubmit; + EmployeeDocumentsAwaitingSubmitCount = await _adminWorkFlowApplication.GetEmployeeDocumentWorkFlowCountsForAdmin(accountWorkshops); + } + + public async Task OnGetStartAndLeftWorkCount() + { + var accountId = _authHelper.CurrentAccountId(); + var resultStartWorkCount = await _adminWorkFlowApplication.GetWorkshopsForEmployeeStartWorkCount(accountId); + var resultLeftWorkCount = await _adminWorkFlowApplication.GetWorkshopsForLeftWorkTempCount(accountId); + + return new JsonResult(new + { + success = true, + dataStartWorkCount = resultStartWorkCount, + dataLeftWorkCount = resultLeftWorkCount, + }); } } } diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeDocuments/ModalEmployeeEdit.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeDocuments/ModalEmployeeEdit.cshtml new file mode 100644 index 00000000..b257396c --- /dev/null +++ b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeDocuments/ModalEmployeeEdit.cshtml @@ -0,0 +1,188 @@ +@using Microsoft.AspNetCore.Mvc.TagHelpers +@model CompanyManagment.App.Contracts.Employee.GetEditEmployeeInEmployeeDocumentViewModel + +@{ + string adminVersion = _0_Framework.Application.Version.AdminVersion; + + + +} + + +
+ + +
+ +
+
+
+ + +
+
+
+ + +
+
+ + +
+
+
+
+
+ + +
+
+
+ + +
+
+ + +
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+ + +
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ +
+ + +
+ + + + \ No newline at end of file diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeDocuments/ModalUploadDocument.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeDocuments/ModalUploadDocument.cshtml index eb76765f..d2b6005b 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeDocuments/ModalUploadDocument.cshtml +++ b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeDocuments/ModalUploadDocument.cshtml @@ -7,6 +7,8 @@ @{ string adminVersion = _0_Framework.Application.Version.AdminVersion; + + +} + + + + +@Html.AntiForgeryToken() + + + +
+
+ + + +@* *@ + + + + + diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeNew/StartWork.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeNew/StartWork.cshtml new file mode 100644 index 00000000..c414ce65 --- /dev/null +++ b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeNew/StartWork.cshtml @@ -0,0 +1,300 @@ +@model CompanyManagment.App.Contracts.LeftWorkTemp.GetStartWorkTempDetails + +@{ + int i = 1; + string adminVersion = _0_Framework.Application.Version.AdminVersion; + + + + + +} + + +
+
+ + + +@* *@ + + + diff --git a/ServiceHost/Areas/AdminNew/Pages/Index.cshtml.cs b/ServiceHost/Areas/AdminNew/Pages/Index.cshtml.cs index f8f1445f..1f3ff29d 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Index.cshtml.cs +++ b/ServiceHost/Areas/AdminNew/Pages/Index.cshtml.cs @@ -87,11 +87,11 @@ namespace ServiceHost.Areas.AdminNew.Pages }); } - public IActionResult OnGetLayoutCountWorkFlow() + public async Task OnGetLayoutCountWorkFlow() { var currentAccountId = _authHelper.CurrentAccountId(); var accountWorkshops = _workshopAccountRepository.GetList(currentAccountId).Select(x => x.WorkshopId).ToList(); - int workFlowCount = _adminWorkFlowApplication.GetWorkFlowCountsForAdmin(accountWorkshops).EmployeeDocumentsAwaitingSubmit; + int workFlowCount = await _adminWorkFlowApplication.GetWorkFlowCountsForAdmin(accountWorkshops,currentAccountId); return new JsonResult(new { @@ -100,9 +100,9 @@ namespace ServiceHost.Areas.AdminNew.Pages }); } - public IActionResult OnGetLayoutCountChecker() + public async Task OnGetLayoutCountChecker() { - int checkerCount = _adminWorkFlowApplication.GetWorkFlowCountForChecker(); + int checkerCount = await _adminWorkFlowApplication.GetWorkFlowCountForChecker(); return new JsonResult(new { diff --git a/ServiceHost/Areas/Client/Pages/Company/Employees/CreateEmployeeModal.cshtml b/ServiceHost/Areas/Client/Pages/Company/Employees/CreateEmployeeModal.cshtml new file mode 100644 index 00000000..ba2364f1 --- /dev/null +++ b/ServiceHost/Areas/Client/Pages/Company/Employees/CreateEmployeeModal.cshtml @@ -0,0 +1,289 @@ +@model CompanyManagment.App.Contracts.Employee.CreateEmployeeByClient +@{ + string clientVersion = _0_Framework.Application.Version.StyleVersion; + + + + + var rollCallPath = Context.Request.Path.Value; + +} + +
+
+ +
+ + +
+ + +@* Camera Modal *@ +
+
+
+
+ @**@ + @*
*@ + @*
*@ +
+ @*
*@ + + +
+ +
+ + +
+
+
+ + +
+
+ +
+ + + + + + + + + diff --git a/ServiceHost/Areas/Client/Pages/Company/Employees/EmployeeList.cshtml b/ServiceHost/Areas/Client/Pages/Company/Employees/EmployeeList.cshtml index 3a4bae75..412b0ed7 100644 --- a/ServiceHost/Areas/Client/Pages/Company/Employees/EmployeeList.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/Employees/EmployeeList.cshtml @@ -1,324 +1,390 @@ -@model List +@page +@model ServiceHost.Areas.Client.Pages.Company.Employees.EmployeeListModel + @{ + Layout = "Shared/_ClientLayout"; + ViewData["title"] = " - لیست کل پرسنل"; + string clintVersion = _0_Framework.Application.Version.StyleVersion; } - - - - - - - @**@ - - - - - - - @if (Model != null) - { - int i = 1; - @foreach (var item in Model) - { - - - - @* - *@ - - - - @{ - i++; - } -
#نام و نام خانوادگی نام خانوادگیعملیات
@i -
-

- @item.FName -

- - @item.FName - -
-
-
-

- @item.LName -

- - @item.LName - -
-
-
-

- @item.EmployeeFullName -

- - @item.EmployeeFullName - -
-
-
- - +@section Styles { + + + + + + + + } - \ No newline at end of file + +
+
+
+
+
+ +
+

لیست کل پرسنل

+
@Model.WorkshopFullName
+
+
+ +
+
+
+ + +
+
+ + +
+
+ +
+ + +
+
+ +
+
+ + +
+ +
+ +
+ +
+
+
+ + +
+ +
+

لیست پرسنل

+
+ +
+
+ + +
+
+
+
+ +
+ +
+
ردیف
+
نام پرسنل
+
شماره پرسنلی
+
وضعیت تاهل
+
شماره ملی
+
شماره شناسنامه
+
تاریخ تولد
+
نام پدر
+
تعداد فرزند
+
آخرین تاریخ شروع بکار قرارداد
+
تاریخ ترک کار قرارداد
+
آخرین تاریخ شروع بکار بیمه
+
تاریخ ترک کار بیمه
+
دارای قرارداد
+
دارای بیمه
+
+
+ +
+ +
+
+
+
+ +
+
+
+ + + + + + + + + +
- diff --git a/ServiceHost/Areas/Client/Pages/Index.cshtml b/ServiceHost/Areas/Client/Pages/Index.cshtml index 57d44754..dae56b38 100644 --- a/ServiceHost/Areas/Client/Pages/Index.cshtml +++ b/ServiceHost/Areas/Client/Pages/Index.cshtml @@ -1,9 +1,12 @@ @page @using _0_Framework.Application -@using Version = _0_Framework.Application.Version @model ServiceHost.Areas.Client.Pages.IndexModel @{ -