diff --git a/0_Framework/Application/AuthHelper.cs b/0_Framework/Application/AuthHelper.cs index c30d148a..80e9aae1 100644 --- a/0_Framework/Application/AuthHelper.cs +++ b/0_Framework/Application/AuthHelper.cs @@ -245,21 +245,24 @@ public class AuthHelper : IAuthHelper #region Pooya - public (long Id, UserType userType) GetUserTypeWithId() + public (long Id, UserType userType, long roleId) GetUserTypeWithId() { if (!IsAuthenticated()) - return (0, UserType.Anonymous); + return (0, UserType.Anonymous, 0); var claims = _contextAccessor.HttpContext.User.Claims.ToList(); var subAccountId = long.Parse(claims.FirstOrDefault(x => x.Type == "SubAccountId")?.Value ?? "0"); if (subAccountId > 0) - return (subAccountId, UserType.SubAccount); + return (subAccountId, UserType.SubAccount, 0); var id = long.Parse(_contextAccessor.HttpContext.User.Claims.First(x => x.Type == "AccountId")?.Value); if (claims.FirstOrDefault(x => x.Type == "AdminAreaPermission")?.Value == "true") - return (id, UserType.Admin); + { + var roleId = long.Parse(claims.FirstOrDefault(x => x.Type == ClaimTypes.Role)?.Value ?? "0"); + return (id, UserType.Admin, roleId); + } - return (id, UserType.Client); + return (id, UserType.Client, 0); } #endregion diff --git a/0_Framework/Application/IAuthHelper.cs b/0_Framework/Application/IAuthHelper.cs index b7271c4d..281755aa 100644 --- a/0_Framework/Application/IAuthHelper.cs +++ b/0_Framework/Application/IAuthHelper.cs @@ -23,5 +23,5 @@ public interface IAuthHelper long CurrentSubAccountId(); string GetWorkshopSlug(); string GetWorkshopName(); - (long Id, UserType userType) GetUserTypeWithId(); + (long Id, UserType userType, long roleId) GetUserTypeWithId(); } \ No newline at end of file diff --git a/Company.Domain/EmployeeDocumentItemAgg/EmployeeDocumentItem.cs b/Company.Domain/EmployeeDocumentItemAgg/EmployeeDocumentItem.cs index e79b64ed..0d9f4193 100644 --- a/Company.Domain/EmployeeDocumentItemAgg/EmployeeDocumentItem.cs +++ b/Company.Domain/EmployeeDocumentItemAgg/EmployeeDocumentItem.cs @@ -7,100 +7,105 @@ using System.Collections.Generic; using _0_Framework.Application; using Microsoft.AspNetCore.JsonPatch.Operations; -namespace Company.Domain.EmployeeDocumentItemAgg +namespace Company.Domain.EmployeeDocumentItemAgg; + +public class EmployeeDocumentItem : EntityBase { - public class EmployeeDocumentItem : EntityBase + private EmployeeDocumentItem() { } + public long WorkshopId { get; private set; } + public long EmployeeId { get; private set; } + + public long UploaderId { get; private set; } + public UserType UploaderType { get; private set; } + public long UploaderRoleId { get; set; } + + + public long ReviewedById { get; private set; } + public string RejectionReason { get; private set; } + public DocumentStatus DocumentStatus { get; private set; } + public long MediaId { get; private set; } + + public DateTime? ConfirmationDateTime { get; private set; } + public DocumentItemLabel DocumentLabel { get; private set; } + + public long EmployeeDocumentId { get; private set; } + public virtual EmployeeDocuments EmployeeDocuments { get; private set; } + + public long? EmployeeDocumentsAdminViewId { get; private set; } + public EmployeeDocumentsAdminSelection EmployeeDocumentsAdminSelection { get; private set; } + + public List ItemLogs { get; private set; } + + + public EmployeeDocumentItem(long workshopId, long employeeId, long mediaId, long employeeDocumentId, DocumentItemLabel documentLabel, long uploaderId, + UserType uploaderType, long roleId, DocumentStatus documentStatus = DocumentStatus.Unsubmitted) { - - public long WorkshopId { get; private set; } - public long EmployeeId { get; private set; } - - public long UploaderId { get; private set; } - public UserType UploaderType { get; private set; } - - - public long ReviewedById { get; private set; } - public string RejectionReason { get; private set; } - public DocumentStatus DocumentStatus { get; private set; } - public long MediaId { get; private set; } - - public DateTime? ConfirmationDateTime { get; private set; } - public DocumentItemLabel DocumentLabel { get; private set; } - - public long EmployeeDocumentId { get; private set; } - public virtual EmployeeDocuments EmployeeDocuments { get; private set; } - - public long? EmployeeDocumentsAdminViewId { get; private set; } - public EmployeeDocumentsAdminSelection EmployeeDocumentsAdminSelection { get; private set; } - - public List ItemLogs { get; private set; } - - - public EmployeeDocumentItem(long workshopId,long employeeId, long mediaId, long employeeDocumentId, DocumentItemLabel documentLabel, long uploaderId, - UserType uploaderType, DocumentStatus documentStatus = DocumentStatus.Unsubmitted) - { - MediaId = mediaId; - UploaderId = uploaderId; - UploaderType = uploaderType; - EmployeeId = employeeId; - WorkshopId = workshopId; - DocumentStatus = documentStatus; - if (documentStatus == DocumentStatus.Confirmed) - ConfirmationDateTime = DateTime.Now; - DocumentLabel = documentLabel; - EmployeeDocumentId = employeeDocumentId; - ItemLogs = - [ - new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.CreatedNewItem, uploaderId, uploaderType) - ]; - } - - - public void Confirm(long operatorId, UserType userType) - { - ReviewedById = operatorId; - DocumentStatus = DocumentStatus.Confirmed; + MediaId = mediaId; + UploaderId = uploaderId; + UploaderType = uploaderType; + UploaderRoleId = uploaderType == UserType.Admin ? roleId : -1; + EmployeeId = employeeId; + WorkshopId = workshopId; + DocumentStatus = documentStatus; + if (documentStatus == DocumentStatus.Confirmed) ConfirmationDateTime = DateTime.Now; - ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.ConfirmedItem, operatorId, userType)); - } - - public void Reject(long operatorId, string rejectionReason, UserType userType) - { - RejectionReason = rejectionReason; - DocumentStatus = DocumentStatus.Rejected; - EmployeeDocuments.UpdateHasRejectedItems(); - ReviewedById = operatorId; - ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.RejectedItem, operatorId, userType, rejectionReason)); - } - - public void Delete(long operatorId, UserType operatorType) - { - DocumentStatus = DocumentStatus.Deleted; - ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.DeletedItem, operatorId, operatorType)); - } - - public void AdminSelect(long adminViewId) - { - EmployeeDocumentsAdminViewId = adminViewId; - } - - public void AdminDeselect() - { - EmployeeDocumentsAdminViewId = 0; - } - public void SubmitByClient(long operatorId,UserType operatorType) - { - DocumentStatus = DocumentStatus.SubmittedByClient; - ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.SubmittedItems, operatorId, operatorType)); - EmployeeDocuments.UpdateHasRejectedItems(); - } - - public void SubmitByAdmin(long operatorId, UserType operatorType) - { - DocumentStatus = DocumentStatus.SubmittedByAdmin; - ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.SubmittedItems, operatorId, operatorType)); - EmployeeDocuments.UpdateHasRejectedItems(); - } + DocumentLabel = documentLabel; + EmployeeDocumentId = employeeDocumentId; + ItemLogs = + [ + new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.CreatedNewItem, uploaderId, uploaderType) + ]; } -} + + public void Confirm(long operatorId, UserType userType) + { + ReviewedById = operatorId; + DocumentStatus = DocumentStatus.Confirmed; + ConfirmationDateTime = DateTime.Now; + ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.ConfirmedItem, operatorId, userType)); + } + + public void Reject(long operatorId, string rejectionReason, UserType userType) + { + RejectionReason = rejectionReason; + DocumentStatus = DocumentStatus.Rejected; + EmployeeDocuments.UpdateHasRejectedItems(); + ReviewedById = operatorId; + ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.RejectedItem, operatorId, userType, rejectionReason)); + } + + public void Delete(long operatorId, UserType operatorType) + { + DocumentStatus = DocumentStatus.Deleted; + ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.DeletedItem, operatorId, operatorType)); + } + + public void AdminSelect(long adminViewId) + { + EmployeeDocumentsAdminViewId = adminViewId; + } + + public void AdminDeselect() + { + EmployeeDocumentsAdminViewId = 0; + } + public void SubmitByClient(long operatorId, UserType operatorType) + { + DocumentStatus = DocumentStatus.SubmittedByClient; + ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.SubmittedItems, operatorId, operatorType)); + EmployeeDocuments.UpdateHasRejectedItems(); + } + + public void SubmitByAdmin(long operatorId, UserType operatorType) + { + DocumentStatus = DocumentStatus.SubmittedByAdmin; + ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.SubmittedItems, operatorId, operatorType)); + EmployeeDocuments.UpdateHasRejectedItems(); + } + + public void SetRoleId(long roleId) + { + UploaderRoleId = roleId; + } +} \ No newline at end of file diff --git a/Company.Domain/EmployeeDocumentsAgg/EmployeeDocumentRequiredItems.cs b/Company.Domain/EmployeeDocumentsAgg/EmployeeDocumentRequiredItems.cs index d263c3e3..9c23bc54 100644 --- a/Company.Domain/EmployeeDocumentsAgg/EmployeeDocumentRequiredItems.cs +++ b/Company.Domain/EmployeeDocumentsAgg/EmployeeDocumentRequiredItems.cs @@ -9,12 +9,12 @@ namespace Company.Domain.EmployeeDocumentsAgg { List requiredDocuments = [ - DocumentItemLabel.IdCardPage1, DocumentItemLabel.IdCardPage2, DocumentItemLabel.IdCardPage3, DocumentItemLabel.NationalCardRear, - DocumentItemLabel.NationalCardFront,DocumentItemLabel.EmployeePicture + DocumentItemLabel.IdCardPage1,/* DocumentItemLabel.IdCardPage2, DocumentItemLabel.IdCardPage3, DocumentItemLabel.NationalCardRear,*/ + DocumentItemLabel.NationalCardFront,/*DocumentItemLabel.EmployeePicture*/ ]; - if (gender == "مرد") - requiredDocuments.Add(DocumentItemLabel.MilitaryServiceCard); + //if (gender == "مرد") + // requiredDocuments.Add(DocumentItemLabel.MilitaryServiceCard); return requiredDocuments; } diff --git a/Company.Domain/EmployeeDocumentsAgg/IEmployeeDocumentsRepository.cs b/Company.Domain/EmployeeDocumentsAgg/IEmployeeDocumentsRepository.cs index edd7afaa..778cbd17 100644 --- a/Company.Domain/EmployeeDocumentsAgg/IEmployeeDocumentsRepository.cs +++ b/Company.Domain/EmployeeDocumentsAgg/IEmployeeDocumentsRepository.cs @@ -9,7 +9,7 @@ using CompanyManagment.App.Contracts.Workshop; namespace Company.Domain.EmployeeDocumentsAgg { public interface IEmployeeDocumentsRepository : IRepository - { + { EmployeeDocuments GetByEmployeeIdWorkshopId(long employeeId, long workshopId); EmployeeDocumentsViewModel GetViewModelByEmployeeIdWorkshopId(long employeeId, long workshopId); List SearchForClient(SearchEmployeeDocuments cmd); @@ -30,5 +30,76 @@ namespace Company.Domain.EmployeeDocumentsAgg Task GetAdminWorkFlowCountForNewEmployees(List workshopIds); Task GetAdminWorkFlowCountForSubmittedAndRejectedDocuments(List workshopIds); List GetDocumentsAwaitingReviewByWorkshopIdForCheckerWorkFlow(long workshopId); + + #region Mahan + /// + /// کارگاهی که افزودن پرسنل کرده اند. بر اساس نقش فیلتر میشوند + /// + /// + /// + /// + Task> GetWorkshopDocumentCreatedEmployeeForAdmin( + List workshops, long roleId); + + /// + ///کارگاه های مدارک های برگشت خورده براساس دسترسی افراد و نقششان. یک مدرک برگشت خورده به تمامی کسانی که به آن کارگاه دسترسی دارند و تمامی کسانی که هم نقش آپلود کننده بوده اند نمایش داده میشود + /// + /// + /// + /// + Task> GetWorkshopDocumentRejectedForAdmin( + List workshops, long roleId); + + /// + /// مدارک های برگشت خورده براساس دسترسی افراد و نقششان. یک مدرک برگشت خورده به تمامی کسانی که به آن کارگاه دسترسی دارند و تمامی کسانی که هم نقش آپلود کننده بوده اند نمایش داده میشود + /// + /// + /// + /// + Task> GetRejectedItemsByWorkshopIdAndRoleForAdminWorkFlow(long workshopId, + long roleId); + + /// + /// کارگاه هایی که افزودن پرسنل کرده اند و مدارک آنها ناقص است + /// + /// + /// + /// + Task> GetCreatedEmployeesWorkshopDocumentForAdmin( + List workshops,long roleId); + + /// + /// پرسنلی که افزوده شده اند در کارگاه و آپلود مدارک آنها ناقص است + /// + /// + /// + Task> GetCreatedEmployeesDocumentByWorkshopIdForAdmin(long workshopId); + + /// + /// لیست کارگاه هایی که مدارک آپلود شده توسط کلاینت برگشت خورده است در کارپوشه ادمین + /// + /// + /// + /// + Task> GetClientRejectedDocumentWorkshopsForAdmin( + List workshops, long roleId); + + /// + /// مدارک های آپلود شده توسط کلاینت در کارگاه که برگشت خورده اند در کارپوشه ادمین + /// + /// + /// + Task> GetClientRejectedDocumentByWorkshopIdForAdmin(long workshopId); + + /// + /// مدارک های برگشت خورده برای کلاینت + /// + /// + /// + /// + Task> GetClientRejectedDocumentForClient(long workshopId, long accountId); + + #endregion + } } diff --git a/CompanyManagment.App.Contracts/Employee/GetEditEmployeeInEmployeeDocumentViewModel.cs b/CompanyManagment.App.Contracts/Employee/GetEditEmployeeInEmployeeDocumentViewModel.cs index 2017623b..c8d40287 100644 --- a/CompanyManagment.App.Contracts/Employee/GetEditEmployeeInEmployeeDocumentViewModel.cs +++ b/CompanyManagment.App.Contracts/Employee/GetEditEmployeeInEmployeeDocumentViewModel.cs @@ -1,4 +1,6 @@ -namespace CompanyManagment.App.Contracts.Employee; +using AccountManagement.Application.Contracts.Media; + +namespace CompanyManagment.App.Contracts.Employee; public class GetEditEmployeeInEmployeeDocumentViewModel { @@ -14,4 +16,5 @@ public class GetEditEmployeeInEmployeeDocumentViewModel public string Nationality { get; set; } = string.Empty; public string Gender { get; set; } = string.Empty; public bool IsAuthorized { get; set; } + public MediaViewModel Media { 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 29d99e89..c6999a8c 100644 --- a/CompanyManagment.App.Contracts/EmployeeDocuments/IEmployeeDocumentsApplication.cs +++ b/CompanyManagment.App.Contracts/EmployeeDocuments/IEmployeeDocumentsApplication.cs @@ -59,6 +59,77 @@ namespace CompanyManagment.App.Contracts.EmployeeDocuments /// OperationResult AddRangeEmployeeDocumentItemsByAdmin(long workshopId, long employeeId, List command); + + #region Mahan + /// + /// کارگاهی که افزودن پرسنل کرده اند. بر اساس نقش فیلتر میشوند + /// + /// + /// + /// + Task> GetWorkshopDocumentCreatedEmployeeForAdmin( + List workshops, long roleId); + + /// + /// مدارک های برگشت خورده براساس دسترسی افراد و نقششان. یک مدرک برگشت خورده به تمامی کسانی که به آن کارگاه دسترسی دارند و تمامی کسانی که هم نقش آپلود کننده بوده اند نمایش داده میشود + /// + /// + /// + /// + Task> GetWorkshopDocumentRejectedForAdmin( + List workshops, long roleId); + + /// + /// مدارک های برگشت خورده براساس دسترسی افراد و نقششان. یک مدرک برگشت خورده به تمامی کسانی که به آن کارگاه دسترسی دارند و تمامی کسانی که هم نقش آپلود کننده بوده اند نمایش داده میشود + /// + /// + /// + /// + Task> GetRejectedItemsByWorkshopIdAndRoleForAdminWorkFlow(long workshopId, + long roleId); + + /// + /// کارگاه هایی که افزودن پرسنل کرده اند و مدارک آنها ناقص است + /// + /// + /// + /// + Task> GetCreatedEmployeesWorkshopDocumentForAdmin( + List workshops, long roleId); + + /// + /// پرسنلی که افزوده شده اند در کارگاه و آپلود مدارک آنها ناقص است + /// + /// + /// + Task> GetCreatedEmployeesDocumentByWorkshopIdForAdmin(long workshopId); + + /// + /// لیست کارگاه هایی که مدارک آپلود شده توسط کلاینت برگشت خورده است در کارپوشه ادمین + /// + /// + /// + /// + Task> GetClientRejectedDocumentWorkshopsForAdmin( + List workshops, long roleId); + + /// + /// مدارک های آپلود شده توسط کلاینت در کارگاه که برگشت خورده اند در کارپوشه ادمین + /// + /// + /// + Task> GetClientRejectedDocumentByWorkshopIdForAdmin(long workshopId); + + /// + /// مدارک های برگشت خورده برای کلاینت + /// + /// + /// + /// + Task> GetClientRejectedDocumentForClient(long workshopId, long accountId); + + #endregion + EmployeeDocumentItemViewModel GetOneDocumentItemDetailsForAdmin(long employeeId, long workshopId,long documentItemId); } } diff --git a/CompanyManagment.Application/EmployeeDocumentsApplication.cs b/CompanyManagment.Application/EmployeeDocumentsApplication.cs index 96963bcc..a84392b8 100644 --- a/CompanyManagment.Application/EmployeeDocumentsApplication.cs +++ b/CompanyManagment.Application/EmployeeDocumentsApplication.cs @@ -88,7 +88,7 @@ namespace CompanyManagment.Application { OperationResult op = new(); - var (uploaderId, uploaderType) = _authHelper.GetUserTypeWithId(); + var (uploaderId, uploaderType,roleId) = _authHelper.GetUserTypeWithId(); if (!_employeeRepository.Exists(x => x.id == employeeId)) @@ -133,7 +133,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,roleId); newEntities.Add(newEntity); } @@ -206,7 +206,7 @@ namespace CompanyManagment.Application public OperationResult DeleteUnsubmittedItems(long workshopId, long employeeId) { OperationResult op = new(); - (_, UserType userType) = _authHelper.GetUserTypeWithId(); + (_, UserType userType,_) = _authHelper.GetUserTypeWithId(); var entity = _employeeDocumentsRepository.GetByEmployeeIdWorkshopIdWithItems(employeeId, workshopId); var items = entity.EmployeeDocumentItemCollection.Where(x => @@ -244,7 +244,7 @@ namespace CompanyManagment.Application { OperationResult op = new(); - var (uploaderId, uploaderType) = _authHelper.GetUserTypeWithId(); + var (uploaderId, uploaderType, roleId) = _authHelper.GetUserTypeWithId(); if (!_employeeRepository.Exists(x => x.id == command.EmployeeId)) return op.Failed("پرسنل یافت نشد"); @@ -289,7 +289,7 @@ namespace CompanyManagment.Application if (_employeeDocumentItemRepository.Exists(x => x.MediaId == mediaOpResult.SendId)) return op.Failed("امکان ثبت رکورد تکراری وجود ندارد"); - var newEntity = new EmployeeDocumentItem(command.WorkshopId, command.EmployeeId, mediaOpResult.SendId, entity.id, command.Label, uploaderId, uploaderType); + var newEntity = new EmployeeDocumentItem(command.WorkshopId, command.EmployeeId, mediaOpResult.SendId, entity.id, command.Label, uploaderId, uploaderType, roleId); _employeeDocumentItemRepository.Create(newEntity); _employeeDocumentItemRepository.SaveChanges(); @@ -311,7 +311,7 @@ namespace CompanyManagment.Application .ToList(); - var (userId, userType) = _authHelper.GetUserTypeWithId(); + var (userId, userType,_) = _authHelper.GetUserTypeWithId(); var unsubmittedDocs = currentDocs.Where(x => x.DocumentStatus == DocumentStatus.Unsubmitted && x.UploaderType == UserType.Client).ToList(); @@ -356,7 +356,7 @@ namespace CompanyManagment.Application if (!HasRequiredDocuments(notRejectedDocs, entity.Gender)) return op.Failed("مدارک الزامی بارگذاری نشده اند"); - var (userId, userType) = _authHelper.GetUserTypeWithId(); + var (userId, userType, roleId) = _authHelper.GetUserTypeWithId(); var unsubmittedDocs = notRejectedDocs.Where(x => x.DocumentStatus == DocumentStatus.Unsubmitted).ToList(); @@ -386,10 +386,9 @@ namespace CompanyManagment.Application { OperationResult op = new(); - var (uploaderId, uploaderType) = _authHelper.GetUserTypeWithId(); + var (uploaderId, uploaderType,roleId) = _authHelper.GetUserTypeWithId(); if (!_employeeRepository.Exists(x => x.id == employeeId)) - return op.Failed("پرسنل یافت نشد"); @@ -430,11 +429,12 @@ 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, DocumentStatus.SubmittedByClient); + var newEntity = new EmployeeDocumentItem(workshopId, employeeId, mediaOpResult.SendId, entity.id, item.Label, uploaderId, uploaderType, roleId,DocumentStatus.SubmittedByClient); 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! @@ -660,6 +660,12 @@ namespace CompanyManagment.Application return result; } + + public Task> GetClientRejectedDocumentForClient(long workshopId, long accountId) + { + return _employeeDocumentsRepository.GetClientRejectedDocumentForClient(workshopId, accountId); + } + #endregion #region Admin Only Methods @@ -670,7 +676,7 @@ namespace CompanyManagment.Application { OperationResult op = new(); - var (uploaderId, uploaderType) = _authHelper.GetUserTypeWithId(); + var (uploaderId, uploaderType, roleId) = _authHelper.GetUserTypeWithId(); if (!_employeeRepository.Exists(x => x.id == employeeId)) @@ -725,7 +731,7 @@ namespace CompanyManagment.Application { OperationResult op = new(); - var (uploaderId, uploaderType) = _authHelper.GetUserTypeWithId(); + var (uploaderId, uploaderType,roleId) = _authHelper.GetUserTypeWithId(); if (!_employeeRepository.Exists(x => x.id == employeeId)) @@ -778,7 +784,7 @@ namespace CompanyManagment.Application { OperationResult op = new(); - var (uploaderId, uploaderType) = _authHelper.GetUserTypeWithId(); + var (uploaderId, uploaderType, roleId) = _authHelper.GetUserTypeWithId(); //ToDo: add check for leftwork if (!_employeeRepository.Exists(x => x.id == command.EmployeeId)) @@ -834,7 +840,7 @@ namespace CompanyManagment.Application if (_employeeDocumentItemRepository.Exists(x => x.MediaId == mediaOpResult.SendId)) return op.Failed("امکان ثبت رکورد تکراری وجود ندارد"); - var newEntity = new EmployeeDocumentItem(command.WorkshopId, command.EmployeeId, mediaOpResult.SendId, entity.id, command.Label, uploaderId, uploaderType); + var newEntity = new EmployeeDocumentItem(command.WorkshopId, command.EmployeeId, mediaOpResult.SendId, entity.id, command.Label, uploaderId, uploaderType, roleId); _employeeDocumentItemRepository.Create(newEntity); _employeeDocumentItemRepository.SaveChanges(); @@ -856,7 +862,7 @@ namespace CompanyManagment.Application //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(); @@ -895,7 +901,7 @@ namespace CompanyManagment.Application //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(); @@ -1131,7 +1137,7 @@ namespace CompanyManagment.Application OperationResult op = new(); var entity = _employeeDocumentItemRepository.Get(documentItemId); - (long operatorId, _) = _authHelper.GetUserTypeWithId(); + (long operatorId, _,_) = _authHelper.GetUserTypeWithId(); if (entity == null) return op.Failed(ApplicationMessages.RecordNotFound); @@ -1165,6 +1171,45 @@ namespace CompanyManagment.Application return await _employeeDocumentsRepository.GetAdminWorkFlowCountForNewEmployees(workshopIds); } + public async Task> GetWorkshopDocumentCreatedEmployeeForAdmin(List workshops, long roleId) + { + return await _employeeDocumentsRepository.GetWorkshopDocumentCreatedEmployeeForAdmin(workshops, roleId); + } + + public async Task> GetWorkshopDocumentRejectedForAdmin(List workshops, long roleId) + { + return await _employeeDocumentsRepository.GetWorkshopDocumentRejectedForAdmin(workshops, roleId); + } + + public async Task> GetRejectedItemsByWorkshopIdAndRoleForAdminWorkFlow(long workshopId, long roleId) + { + return await _employeeDocumentsRepository.GetRejectedItemsByWorkshopIdAndRoleForAdminWorkFlow(workshopId, + roleId); + } + + public Task> GetCreatedEmployeesWorkshopDocumentForAdmin( + List workshops, long roleId) + { + return _employeeDocumentsRepository.GetCreatedEmployeesWorkshopDocumentForAdmin(workshops, roleId); + } + + public Task> GetCreatedEmployeesDocumentByWorkshopIdForAdmin(long workshopId) + { + return _employeeDocumentsRepository.GetCreatedEmployeesDocumentByWorkshopIdForAdmin(workshopId); + } + + public Task> GetClientRejectedDocumentWorkshopsForAdmin( + List workshops, long roleId) + { + return _employeeDocumentsRepository.GetClientRejectedDocumentWorkshopsForAdmin(workshops,roleId); + } + + public Task> GetClientRejectedDocumentByWorkshopIdForAdmin(long workshopId) + { + return _employeeDocumentsRepository.GetClientRejectedDocumentByWorkshopIdForAdmin(workshopId); + } + + #endregion #region Checker Only Methods @@ -1189,7 +1234,7 @@ namespace CompanyManagment.Application return op.Failed("رکورد مورد نظر یافت نشد"); } - (long operatorId, UserType userType) = _authHelper.GetUserTypeWithId(); + (long operatorId, UserType userType,long roleId) = _authHelper.GetUserTypeWithId(); if ((item.DocumentStatus is DocumentStatus.SubmittedByAdmin or DocumentStatus.SubmittedByClient) == false) return op.Failed("امکان بررسی رکورد مورد نظر وجود ندارد"); @@ -1390,7 +1435,7 @@ namespace CompanyManagment.Application { OperationResult op = new(); - var (uploaderId, uploaderType) = _authHelper.GetUserTypeWithId(); + var (uploaderId, uploaderType,roleId) = _authHelper.GetUserTypeWithId(); if (!_employeeRepository.Exists(x => x.id == employeeId)) @@ -1449,7 +1494,7 @@ namespace CompanyManagment.Application mediaId = mediaOpResult.SendId; } - var newEntity = new EmployeeDocumentItem(workshopId, employeeId, mediaId, entity.id, item.Label, uploaderId, uploaderType, DocumentStatus.SubmittedByAdmin); + var newEntity = new EmployeeDocumentItem(workshopId, employeeId, mediaId, entity.id, item.Label, uploaderId, uploaderType,roleId ,DocumentStatus.SubmittedByAdmin); newEntities.Add(newEntity); } @@ -1474,6 +1519,24 @@ namespace CompanyManagment.Application return op.Succcedded(entity.id); } + public EmployeeDocumentItemViewModel GetOneDocumentItemDetailsForAdmin(long employeeId, long workshopId,long documentItemId) + { + var documentItem = _employeeDocumentItemRepository.GetWithEmployeeDocumentsByItemId(documentItemId); + var viewModel = new EmployeeDocumentItemViewModel() + { + CreationDateTime = documentItem.CreationDate, + DocumentItemLabel = documentItem.DocumentLabel, + EmployeeDocumentsId = documentItem.EmployeeDocumentId, + Gender = documentItem.EmployeeDocuments.Gender, + Id = documentItem.id, + Status = documentItem.DocumentStatus, + MediaId = documentItem.MediaId, + RejectionMessage = documentItem.RejectionReason, + UploaderType = documentItem.UploaderType + }; + return viewModel; + } + #endregion @@ -1800,8 +1863,9 @@ namespace CompanyManagment.Application StatusString = item.DocumentStatus.ToString().ToLower(), PicturePath = medias.FirstOrDefault(x => x.Id == item.MediaId)?.Path ?? "", RejectionMessage = item.RejectionReason, - UploaderType = item.UploaderType - }; + UploaderType = item.UploaderType, + MediaId = medias.FirstOrDefault(x => x.Id == item.MediaId)?.Id ?? 0, + }; } diff --git a/CompanyManagment.Application/FineApplication.cs b/CompanyManagment.Application/FineApplication.cs index 39c19008..ffb5908d 100644 --- a/CompanyManagment.Application/FineApplication.cs +++ b/CompanyManagment.Application/FineApplication.cs @@ -147,7 +147,7 @@ public class FineApplication : IFineApplication #endregion DateTime date = command.FineDate.ToGeorgianDateTime(); - var (userId, userType) = _authHelper.GetUserTypeWithId(); + var (userId, userType,_) = _authHelper.GetUserTypeWithId(); foreach (var employeeId in command.EmployeeIds) { Fine entity = new Fine(employeeId, command.WorkshopId, command.Title, command.Amount.MoneyToDouble(), date, @@ -218,7 +218,7 @@ public class FineApplication : IFineApplication } DateTime date = command.FineDate.ToGeorgianDateTime(); - var (userId, userType) = _authHelper.GetUserTypeWithId(); + var (userId, userType,_) = _authHelper.GetUserTypeWithId(); entity.Edit(command.EmployeeId, command.WorkshopId, command.Title, command.Amount.MoneyToDouble(), date, diff --git a/CompanyManagment.Application/LoanApplication.cs b/CompanyManagment.Application/LoanApplication.cs index 1457faa3..10c1cfdc 100644 --- a/CompanyManagment.Application/LoanApplication.cs +++ b/CompanyManagment.Application/LoanApplication.cs @@ -91,7 +91,7 @@ public class LoanApplication : ILoanApplication #endregion - var (userId, userType) = _authHelper.GetUserTypeWithId(); + var (userId, userType, _) = _authHelper.GetUserTypeWithId(); foreach (var employeeId in command.EmployeeIds) { diff --git a/CompanyManagment.Application/RewardApplication.cs b/CompanyManagment.Application/RewardApplication.cs index 946e2b52..97dec4e8 100644 --- a/CompanyManagment.Application/RewardApplication.cs +++ b/CompanyManagment.Application/RewardApplication.cs @@ -120,7 +120,7 @@ public class RewardApplication : IRewardApplication #endregion - var (userId, userType) = _authHelper.GetUserTypeWithId(); + var (userId, userType, _) = _authHelper.GetUserTypeWithId(); foreach (var employeeId in command.EmployeeIds) { @@ -164,7 +164,7 @@ public class RewardApplication : IRewardApplication { return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی صادر شده است پاداشی دهید"); } - var (userId, userType) = _authHelper.GetUserTypeWithId(); + var (userId, userType, _) = _authHelper.GetUserTypeWithId(); if (_customizeCheckoutTempRepository.Exists(x => x.WorkshopId == command.WorkshopId && entity.EmployeeId == x.EmployeeId && x.YearInt == year && x.MonthInt == month && x.ContractStart <= grantDate && x.ContractEnd >= grantDate)) diff --git a/CompanyManagment.Application/SalaryAidApplication.cs b/CompanyManagment.Application/SalaryAidApplication.cs index 3cd9f16d..367f04eb 100644 --- a/CompanyManagment.Application/SalaryAidApplication.cs +++ b/CompanyManagment.Application/SalaryAidApplication.cs @@ -76,7 +76,7 @@ public class SalaryAidApplication : ISalaryAidApplication { return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی موقت صادر شده است مساعده ای دهید"); } - var (userId, userType) = _authHelper.GetUserTypeWithId(); + var (userId, userType, _) = _authHelper.GetUserTypeWithId(); foreach (var employeeId in command.EmployeeIds) { @@ -122,7 +122,7 @@ public class SalaryAidApplication : ISalaryAidApplication { return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی موقت صادر شده است مساعده ای دهید"); } - var (userId, userType) = _authHelper.GetUserTypeWithId(); + var (userId, userType, _) = _authHelper.GetUserTypeWithId(); entity.Edit(Tools.MoneyToDouble(command.Amount),startDate,userId,userType); _salaryAidRepository.SaveChanges(); @@ -193,7 +193,7 @@ public class SalaryAidApplication : ISalaryAidApplication { return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی صادر شده است مساعده ای دهید"); } - var (userId, userType) = _authHelper.GetUserTypeWithId(); + var (userId, userType, _) = _authHelper.GetUserTypeWithId(); foreach (var employeeId in command.EmployeeIds) { var id = employeeId; diff --git a/CompanyManagment.EFCore/Migrations/20250505140611_add uploaderRoleId to EmployeeDocumentItems.Designer.cs b/CompanyManagment.EFCore/Migrations/20250505140611_add uploaderRoleId to EmployeeDocumentItems.Designer.cs new file mode 100644 index 00000000..999331f2 --- /dev/null +++ b/CompanyManagment.EFCore/Migrations/20250505140611_add uploaderRoleId to EmployeeDocumentItems.Designer.cs @@ -0,0 +1,9474 @@ +// +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("20250505140611_add uploaderRoleId to EmployeeDocumentItems")] + partial class adduploaderRoleIdtoEmployeeDocumentItems + { + /// + 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("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("FName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FatherName") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("Gender") + .IsRequired() + .HasMaxLength(6) + .HasColumnType("nvarchar(6)"); + + b.Property("IdNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("IdNumberSeri") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IdNumberSerial") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("IsActiveString") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsAuthenticated") + .HasColumnType("bit"); + + b.Property("IsBlock") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsLegal") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("LName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("NationalId") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("Nationalcode") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("RegisterId") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("RepresentativeFullName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("RepresentativeId") + .HasColumnType("bigint"); + + b.Property("State") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SureName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Zone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.HasIndex("RepresentativeId"); + + b.ToTable("PersonalContractingParties", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ContractAgg.Contract", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AgreementSalary") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ArchiveCode") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("ConsumableItems") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ContarctStart") + .HasColumnType("datetime2"); + + b.Property("ContractEnd") + .HasColumnType("datetime2"); + + b.Property("ContractNo") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("ContractPeriod") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("ContractType") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DayliWage") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EmployerId") + .HasColumnType("bigint"); + + b.Property("FamilyAllowance") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("GetWorkDate") + .HasColumnType("datetime2"); + + b.Property("HousingAllowance") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsActiveString") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("JobType") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("JobTypeId") + .HasColumnType("bigint"); + + b.Property("MandatoryHoursid") + .HasColumnType("bigint"); + + b.Property("PersonnelCode") + .HasColumnType("bigint"); + + b.Property("SetContractDate") + .HasColumnType("datetime2"); + + b.Property("Signature") + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("WorkingHoursWeekly") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("WorkshopAddress1") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("WorkshopAddress2") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("WorkshopIds") + .HasColumnType("bigint"); + + b.Property("YearlySalaryId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("EmployerId"); + + b.HasIndex("JobTypeId"); + + b.HasIndex("MandatoryHoursid"); + + b.HasIndex("WorkshopIds"); + + b.HasIndex("YearlySalaryId"); + + b.ToTable("Contracts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ContractingPartyAccountAgg.ContractingPartyAccount", b => + { + b.Property("PersonalContractingPartyId") + .HasColumnType("bigint"); + + b.Property("AccountId") + .HasColumnType("bigint"); + + b.HasKey("PersonalContractingPartyId", "AccountId"); + + b.ToTable("ContractingPartyAccount", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CrossJobAgg.CrossJob", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CrossJobGuildId") + .HasColumnType("bigint"); + + b.Property("EquivalentRialOver") + .HasColumnType("bigint"); + + b.Property("EquivalentRialUnder") + .HasColumnType("bigint"); + + b.Property("SalaryRatioOver") + .HasColumnType("float"); + + b.Property("SalaryRatioUnder") + .HasColumnType("float"); + + b.HasKey("id"); + + b.HasIndex("CrossJobGuildId"); + + b.ToTable("CrossJobs", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CrossJobGuildAgg.CrossJobGuild", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EconomicCode") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("CrossJobGuilds", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CrossJobItemsAgg.CrossJobItems", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CrossJobId") + .HasColumnType("bigint"); + + b.Property("JobId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("CrossJobId"); + + b.HasIndex("JobId"); + + b.ToTable("CrossJobItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CustomizeCheckoutAgg.CustomizeCheckout", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BaseYearsPay") + .HasColumnType("float"); + + b.Property("BonusesPay") + .HasColumnType("float"); + + b.Property("ContractEnd") + .HasColumnType("datetime2"); + + b.Property("ContractId") + .HasColumnType("bigint"); + + b.Property("ContractNo") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("ContractStart") + .HasColumnType("datetime2"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DailyWage") + .HasColumnType("float"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("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("SettingSalary") + .HasColumnType("float"); + + b.Property("ShiftPay") + .HasColumnType("float"); + + b.Property("ShiftStatus") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + 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("DailyWage") + .HasColumnType("float"); + + 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("SettingSalary") + .HasColumnType("float"); + + b.Property("ShiftPay") + .HasColumnType("float"); + + b.Property("ShiftStatus") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + 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("IdNumberSeri") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("IdNumberSerial") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + 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.EmployeeAuthorizeTempAgg.EmployeeAuthorizeTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BirthDate") + .HasColumnType("datetime2"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("FName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FatherName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Gender") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("IdNumber") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("IdNumberSeri") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("IdNumberSerial") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("LName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("NationalCode") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.HasKey("id"); + + b.HasIndex("NationalCode") + .IsUnique() + .HasFilter("[NationalCode] IS NOT NULL"); + + b.ToTable("EmployeeAuthorizeTemps", (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("UploaderRoleId") + .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("CreatedByAccountId") + .HasColumnType("bigint"); + + b.Property("CreatedByUserType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + 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("LastModifiedByAccountId") + .HasColumnType("bigint"); + + b.Property("LastModifiedByUserType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + 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") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + 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.InstitutionPlanAgg.PlanPercentage", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ContractAndCheckoutInPersonPercent") + .HasColumnType("int"); + + b.Property("ContractAndCheckoutPercent") + .HasColumnType("int"); + + b.Property("CustomizeCheckoutPercent") + .HasColumnType("int"); + + b.Property("InsuranceInPersonPercent") + .HasColumnType("int"); + + b.Property("InsurancePercent") + .HasColumnType("int"); + + b.Property("RollCallPercent") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("PlanPercentage", (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("HasShiftDuration") + .HasColumnType("bit"); + + 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("ShiftDuration") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + 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("CreatedByAccountId") + .HasColumnType("bigint"); + + b.Property("CreatedByUserType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + 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("CreatedByAccountId") + .HasColumnType("bigint"); + + b.Property("CreatedByUserType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + 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("LastModifiedByAccountId") + .HasColumnType("bigint"); + + b.Property("LastModifiedByUserType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("RewardType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + 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("WorkshopId"); + + 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("CreatedByAccountId") + .HasColumnType("bigint"); + + b.Property("CreatedByUserType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("LastModifiedByAccountId") + .HasColumnType("bigint"); + + b.Property("LastModifiedByUserType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + 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.TemporaryClientRegistrationAgg.ContractingPartyTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("City") + .HasMaxLength(35) + .HasColumnType("nvarchar(35)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("FName") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("FatherName") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("Gender") + .IsRequired() + .HasMaxLength(6) + .HasColumnType("nvarchar(6)"); + + b.Property("IdNumber") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IdNumberSeri") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IdNumberSerial") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("LName") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("NationalCode") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("Phone") + .HasMaxLength(12) + .HasColumnType("nvarchar(12)"); + + b.Property("State") + .HasMaxLength(35) + .HasColumnType("nvarchar(35)"); + + b.HasKey("id"); + + b.ToTable("ContractingPartyTemp", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TemporaryClientRegistrationAgg.InstitutionContractTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ContractEndGr") + .HasColumnType("datetime2"); + + b.Property("ContractStartGr") + .HasColumnType("datetime2"); + + b.Property("ContractingPartyTempId") + .HasColumnType("bigint"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("MessageId") + .HasColumnType("int"); + + b.Property("OfficialCompany") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("PaymentModel") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("PeriodModel") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("RegistrationStatus") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("SendVerifyCodeTime") + .HasColumnType("datetime2"); + + b.Property("TotalPayment") + .HasColumnType("float"); + + b.Property("ValueAddedTax") + .HasColumnType("float"); + + b.Property("VerifyCode") + .HasMaxLength(6) + .HasColumnType("nvarchar(6)"); + + b.Property("VerifyCodeEndTime") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.ToTable("InstitutionContractTemps", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TemporaryClientRegistrationAgg.WorkshopServicesTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CountPerson") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("ServiceName") + .HasMaxLength(40) + .HasColumnType("nvarchar(40)"); + + b.Property("WorkshopTempId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("WorkshopTempId"); + + b.ToTable("WorkshopServicesTemps", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TemporaryClientRegistrationAgg.WorkshopTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ContractingPartyTempId") + .HasColumnType("bigint"); + + b.Property("CountPerson") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("WorkshopName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopServicesAmount") + .HasColumnType("float"); + + b.HasKey("id"); + + b.ToTable("WorkshopTemps", (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("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.CustomizeRotatingShift", "CustomizeRotatingShifts", b1 => + { + b1.Property("CustomizeCheckoutid") + .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("CustomizeCheckoutid", "Id"); + + b1.ToTable("CustomizeCheckouts_CustomizeRotatingShifts"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.IrregularShift", "IrregularShift", b1 => + { + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.Property("WorkshopIrregularShifts") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.HasKey("CustomizeCheckoutid"); + + b1.ToTable("CustomizeCheckouts"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutRegularShift", "RegularShifts", b1 => + { + b1.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("CustomizeCheckoutid") + .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("CustomizeCheckoutid"); + + b1.ToTable("CustomizeCheckouts_RegularShifts"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + 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("CustomizeRotatingShifts"); + + b.Navigation("Employee"); + + b.Navigation("IrregularShift"); + + b.Navigation("RegularShifts"); + + 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("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.CustomizeRotatingShift", "CustomizeRotatingShifts", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .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("CustomizeCheckoutTempid", "Id"); + + b1.ToTable("CustomizeCheckoutTemps_CustomizeRotatingShifts"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.IrregularShift", "IrregularShift", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.Property("WorkshopIrregularShifts") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.HasKey("CustomizeCheckoutTempid"); + + b1.ToTable("CustomizeCheckoutTemps"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutRegularShift", "RegularShifts", b1 => + { + b1.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("CustomizeCheckoutTempid") + .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("CustomizeCheckoutTempid"); + + b1.ToTable("CustomizeCheckoutTemps_RegularShifts"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + 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("CustomizeRotatingShifts"); + + b.Navigation("Employee"); + + b.Navigation("IrregularShift"); + + b.Navigation("RegularShifts"); + + 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("WorkshopId") + .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.TemporaryClientRegistrationAgg.WorkshopServicesTemp", b => + { + b.HasOne("Company.Domain.TemporaryClientRegistrationAgg.WorkshopTemp", "WorkshopTemp") + .WithMany("WorkshopServicesTemps") + .HasForeignKey("WorkshopTempId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("WorkshopTemp"); + }); + + 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.TemporaryClientRegistrationAgg.WorkshopTemp", b => + { + b.Navigation("WorkshopServicesTemps"); + }); + + 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/20250505140611_add uploaderRoleId to EmployeeDocumentItems.cs b/CompanyManagment.EFCore/Migrations/20250505140611_add uploaderRoleId to EmployeeDocumentItems.cs new file mode 100644 index 00000000..b3bb7581 --- /dev/null +++ b/CompanyManagment.EFCore/Migrations/20250505140611_add uploaderRoleId to EmployeeDocumentItems.cs @@ -0,0 +1,29 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace CompanyManagment.EFCore.Migrations +{ + /// + public partial class adduploaderRoleIdtoEmployeeDocumentItems : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "UploaderRoleId", + table: "EmployeeDocumentItems", + type: "bigint", + nullable: false, + defaultValue: 0L); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "UploaderRoleId", + table: "EmployeeDocumentItems"); + } + } +} diff --git a/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs b/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs index 235fafe5..4197b0c1 100644 --- a/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs +++ b/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs @@ -1843,6 +1843,9 @@ namespace CompanyManagment.EFCore.Migrations b.Property("UploaderId") .HasColumnType("bigint"); + b.Property("UploaderRoleId") + .HasColumnType("bigint"); + b.Property("UploaderType") .IsRequired() .HasMaxLength(20) diff --git a/CompanyManagment.EFCore/Repository/EmployeeDocumentsRepository.cs b/CompanyManagment.EFCore/Repository/EmployeeDocumentsRepository.cs index 7f0dff9e..e83a9f3b 100644 --- a/CompanyManagment.EFCore/Repository/EmployeeDocumentsRepository.cs +++ b/CompanyManagment.EFCore/Repository/EmployeeDocumentsRepository.cs @@ -78,8 +78,8 @@ public class EmployeeDocumentsRepository : RepositoryBasey.EmployeeDocumentItemCollection.Where(z=>z.DocumentStatus != DocumentStatus.Unsubmitted && + var currentDocs = documents.SelectMany(y => y.EmployeeDocumentItemCollection.Where(z => z.DocumentStatus != DocumentStatus.Unsubmitted && z.DocumentStatus != DocumentStatus.Deleted)).Select(y => y.MediaId).ToList(); //get medias for current documents of employees var medias = _accountContext.Medias.Where(x => currentDocs.Contains(x.id)).Select(x => new MediaViewModel() - { Id = x.id,Path=x.Path }).ToList(); + { Id = x.id, Path = x.Path }).ToList(); @@ -246,43 +246,43 @@ public class EmployeeDocumentsRepository : RepositoryBase y.EmployeeDocumentItemCollection) - .Where(y=>y.DocumentStatus != DocumentStatus.Unsubmitted || y.UploaderType == UserType.Client) - .GroupBy(x=>new{x.WorkshopId,x.EmployeeId,x.DocumentLabel}).Select(x=> - x.MaxBy(y=>y.CreationDate)).Select(z => z.MediaId).ToList(); + .Where(y => y.DocumentStatus != DocumentStatus.Unsubmitted || y.UploaderType == UserType.Client) + .GroupBy(x => new { x.WorkshopId, x.EmployeeId, x.DocumentLabel }).Select(x => + x.MaxBy(y => y.CreationDate)).Select(z => z.MediaId).ToList(); var personnelCodes = _companyContext.PersonnelCodeSet.Where(x => x.WorkshopId == cmd.WorkshopId).ToList(); //get medias for current documents of employees var medias = _accountContext.Medias.Where(x => currentItemsMediaId.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 employeeDocuments.Select(x => { - var employeeLatestConfirmedDocuments = employeeDocuments.Where(y=>x.EmployeeId==y.EmployeeId) - .SelectMany(y=> GetAllCurrentDocuments(y,UserType.Client)).ToList(); + var employeeLatestConfirmedDocuments = employeeDocuments.Where(y => x.EmployeeId == y.EmployeeId) + .SelectMany(y => GetAllCurrentDocuments(y, UserType.Client)).ToList(); return new EmployeeDocumentsViewModel { Id = x.id, EmployeeId = x.EmployeeId, - IdCardPage1 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments,medias,DocumentItemLabel.IdCardPage1), + IdCardPage1 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.IdCardPage1), IdCardPage2 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.IdCardPage2), - IdCardPage3= GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.IdCardPage3), - IdCardPage4= GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.IdCardPage4), + IdCardPage3 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.IdCardPage3), + IdCardPage4 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.IdCardPage4), EducationalDegree = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.EducationalDegree), EmployeeFullName = x.Employee.FullName, - NationalCardFront =GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.NationalCardFront), - NationalCardRear =GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.NationalCardRear), - MilitaryServiceCard= GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.MilitaryServiceCard), + NationalCardFront = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.NationalCardFront), + NationalCardRear = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.NationalCardRear), + MilitaryServiceCard = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.MilitaryServiceCard), EmployeePicture = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.EmployeePicture), IsBlack = deActivedEmployeesIdlist.Any(y => y == x.EmployeeId) ? "true" : "false", EmployerFullName = employerFullName, IsSentToChecker = x.IsSentToChecker, - PersonnelCode = personnelCodes.FirstOrDefault(y=>y.EmployeeId == x.EmployeeId)?.PersonnelCode??0 + PersonnelCode = personnelCodes.FirstOrDefault(y => y.EmployeeId == x.EmployeeId)?.PersonnelCode ?? 0 }; - }).OrderBy(x=>x.PersonnelCode).ToList(); + }).OrderBy(x => x.PersonnelCode).ToList(); } public List SearchForAdmin(SearchEmployeeDocuments cmd) @@ -298,17 +298,17 @@ public class EmployeeDocumentsRepository : RepositoryBase x.WorkshopId == cmd.WorkshopId); //پرسنل فعال در قرارداد var contractActiveEmployeeIds = contractEmployees - .Where(x=> x.LeftWorkDate == new DateTime(2121, 3, 21) && x.StartWorkDate.Date <= now).Select(x => x.EmployeeId).ToList(); + .Where(x => x.LeftWorkDate == new DateTime(2121, 3, 21) && x.StartWorkDate.Date <= now).Select(x => x.EmployeeId).ToList(); //پرسنل غیر فعال قرارداد var contractDeActivedEmployeeIds = contractEmployees - .Where(x=> x.LeftWorkDate.Date <= now && !contractActiveEmployeeIds.Contains(x.EmployeeId)) - .Select(x=>x.EmployeeId).ToList(); + .Where(x => x.LeftWorkDate.Date <= now && !contractActiveEmployeeIds.Contains(x.EmployeeId)) + .Select(x => x.EmployeeId).ToList(); //پرسنل بیمه این کارگاه var insuranceEmployees = _companyContext.LeftWorkInsuranceList @@ -318,7 +318,7 @@ public class EmployeeDocumentsRepository : RepositoryBase x.LeftWorkDate == null && x.StartWorkDate.Date <= now).Select(x => x.EmployeeId).ToList(); //پرسنل غیر فعال بیمه var insuranceDeActivedEmployeeIds = insuranceEmployees - .Where(x => x.LeftWorkDate.Value.Date <= now && !contractActiveEmployeeIds.Contains(x.EmployeeId)) + .Where(x => x.LeftWorkDate.Value.Date <= now && !contractActiveEmployeeIds.Contains(x.EmployeeId)) .Select(x => x.EmployeeId).ToList(); // پرسنل هر دو لیست که غیر فعال هستند @@ -354,7 +354,7 @@ public class EmployeeDocumentsRepository : RepositoryBase GetAllCurrentDocuments(y,UserType.Admin)) + var currentItemsMediaId = employeeDocuments.SelectMany(y => GetAllCurrentDocuments(y, UserType.Admin)) .Select(y => y.MediaId).ToList(); //get medias for current documents of employees var personnelCodes = _companyContext.PersonnelCodeSet.Where(x => x.WorkshopId == cmd.WorkshopId).ToList(); @@ -387,7 +387,7 @@ public class EmployeeDocumentsRepository : RepositoryBase y.EmployeeId == x.EmployeeId)?.PersonnelCode ?? 0 }; - }).OrderBy(x=>x.PersonnelCode).ToList(); + }).OrderBy(x => x.PersonnelCode).ToList(); } public List GetWorkshopsWithDocumentsAwaitingReviewForAdminWorkFlow(List workshops) @@ -667,33 +667,35 @@ public class EmployeeDocumentsRepository : RepositoryBase e.EmployeeId == group.Key); - var docs = group - .Where(y => 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 employeeLatestConfirmedDocuments = group + .Where(y => y.EmployeeId == group.Key && (y.DocumentStatus == DocumentStatus.SubmittedByClient || + y.DocumentStatus == DocumentStatus.SubmittedByAdmin || + y.DocumentStatus == DocumentStatus.Rejected || + y.DocumentStatus == DocumentStatus.Confirmed)) + .Select(y => new EmployeeDocumentItemViewModel() + { + Status = y.DocumentStatus, + MediaId = y.MediaId, + DocumentItemLabel = y.DocumentLabel, + Id = y.Id, + RejectionMessage = y.RejectionReason, + StatusString = y.DocumentStatus.ToString() + }).ToList(); return new EmployeeDocumentsViewModel { EmployeeId = group.Key, - IdCardPage1 = GetByLabelAndLoadMedia(docs, mediasList, DocumentItemLabel.IdCardPage1), - IdCardPage2 = GetByLabelAndLoadMedia(docs, mediasList, DocumentItemLabel.IdCardPage2), - IdCardPage3 = GetByLabelAndLoadMedia(docs, mediasList, DocumentItemLabel.IdCardPage3), - IdCardPage4 = GetByLabelAndLoadMedia(docs, mediasList, DocumentItemLabel.IdCardPage4), - EducationalDegree = GetByLabelAndLoadMedia(docs, mediasList, DocumentItemLabel.EducationalDegree), - EmployeeFullName = employee.FullName, - NationalCardFront = GetByLabelAndLoadMedia(docs, mediasList, DocumentItemLabel.NationalCardFront), - NationalCardRear = GetByLabelAndLoadMedia(docs, mediasList, DocumentItemLabel.NationalCardRear), - MilitaryServiceCard = GetByLabelAndLoadMedia(docs, mediasList, DocumentItemLabel.MilitaryServiceCard), - EmployeePicture = GetByLabelAndLoadMedia(docs, mediasList, DocumentItemLabel.EmployeePicture), + IdCardPage1 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage1), + IdCardPage2 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage2), + IdCardPage3 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage3), + IdCardPage4 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage4), + EducationalDegree = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.EducationalDegree), + EmployeeFullName = allEmployees.First(y => y.EmployeeId == group.Key).FullName, + NationalCardFront = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.NationalCardFront), + NationalCardRear = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.NationalCardRear), + MilitaryServiceCard = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.MilitaryServiceCard), + EmployeePicture = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.EmployeePicture), + }; }) .ToList(); @@ -711,8 +713,8 @@ public class EmployeeDocumentsRepository : RepositoryBase 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() + .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 || y.DocumentStatus == DocumentStatus.SubmittedByClient), WorkshopId = x.Key, @@ -744,7 +746,7 @@ public class EmployeeDocumentsRepository : RepositoryBasey.PicturePath= medias.FirstOrDefault(z=>z.id == y.MediaId)?.Path ?? ""); // }); - return itemsQuery.Where(x=>x.SubmittedItemsCount > 0).OrderByDescending(x=>x.SubmittedItemsCount).ToList(); + return itemsQuery.Where(x => x.SubmittedItemsCount > 0).OrderByDescending(x => x.SubmittedItemsCount).ToList(); } @@ -754,7 +756,7 @@ public class EmployeeDocumentsRepository : RepositoryBase x.Workshop); var workshopEmployers = _companyContext.WorkshopEmployers.Include(x => x.Employer) - .Where(x => query.Any(y=>y.WorkshopId == x.WorkshopId)) + .Where(x => query.Any(y => y.WorkshopId == x.WorkshopId)) .GroupBy(x => x.WorkshopId).ToList() .Select(x => new { x.Key, x.FirstOrDefault()!.Employer }).ToList(); @@ -780,7 +782,7 @@ public class EmployeeDocumentsRepository : RepositoryBase x.WorkshopId == workshopId) .Include(x => x.EmployeeDocumentItemCollection) - .Where(x=>x.EmployeeDocumentItemCollection.Any(y => + .Where(x => x.EmployeeDocumentItemCollection.Any(y => y.DocumentStatus != DocumentStatus.Unsubmitted)); var employeesList = _companyContext.Employees.Where(x => @@ -803,61 +805,61 @@ public class EmployeeDocumentsRepository : RepositoryBase new { EmployeeDocuments = x, - EmployeeDocumentItemCollection = x.EmployeeDocumentItemCollection.Where(y=> y.DocumentStatus != DocumentStatus.Unsubmitted) + EmployeeDocumentItemCollection = x.EmployeeDocumentItemCollection.Where(y => y.DocumentStatus != DocumentStatus.Unsubmitted) .GroupBy(y => y.DocumentLabel) .Select(y => y.MaxBy(z => z.CreationDate)) - . ToList() + .ToList() }).ToList(); var workshopName = _companyContext.Workshops.FirstOrDefault(x => x.id == workshopId)?.WorkshopFullName ?? ""; var mediaIds = workshopDocumentsList.SelectMany(x => x.EmployeeDocumentItemCollection) - + .Select(x => x.MediaId).ToList(); - var mediasList = _accountContext.Medias.Where(x=>mediaIds.Contains(x.id)) + var mediasList = _accountContext.Medias.Where(x => mediaIds.Contains(x.id)) .Select(x => new MediaViewModel() { Id = x.id, Path = x.Path }).ToList(); if (onlyConfirmed) - workshopDocumentsListWithConfirmed=workshopDocumentsListWithConfirmed.Where(x => + workshopDocumentsListWithConfirmed = workshopDocumentsListWithConfirmed.Where(x => x.EmployeeDocumentItemCollection.All(y => y.DocumentStatus != DocumentStatus.SubmittedByAdmin)).ToList(); else workshopDocumentsListWithConfirmed = workshopDocumentsListWithConfirmed.Where(x => x.EmployeeDocumentItemCollection.Any(y => y.DocumentStatus is DocumentStatus.SubmittedByAdmin or DocumentStatus.SubmittedByClient)).ToList(); - + return workshopDocumentsListWithConfirmed.Select(x => new EmployeeDocumentsViewModel() - { - Id=x.EmployeeDocuments.id, - EmployeeFullName = employeesList.FirstOrDefault(y=>y.Id==x.EmployeeDocuments.EmployeeId)?.FullName ?? "", - EmployeeId = x.EmployeeDocuments.EmployeeId, - WorkshopId = workshopId, - WorkshopName = workshopName, - Gender = x.EmployeeDocuments.Gender, - EducationalDegree = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection,mediasList, + { + Id = x.EmployeeDocuments.id, + EmployeeFullName = employeesList.FirstOrDefault(y => y.Id == x.EmployeeDocuments.EmployeeId)?.FullName ?? "", + EmployeeId = x.EmployeeDocuments.EmployeeId, + WorkshopId = workshopId, + WorkshopName = workshopName, + Gender = x.EmployeeDocuments.Gender, + EducationalDegree = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, DocumentItemLabel.EducationalDegree), - IdCardPage1 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + IdCardPage1 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, DocumentItemLabel.IdCardPage1), - IdCardPage2 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + IdCardPage2 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, DocumentItemLabel.IdCardPage2), - IdCardPage3 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + IdCardPage3 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, DocumentItemLabel.IdCardPage3), - IdCardPage4 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + IdCardPage4 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, DocumentItemLabel.IdCardPage4), - NationalCardFront = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + NationalCardFront = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, DocumentItemLabel.NationalCardFront), - NationalCardRear = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + NationalCardRear = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, DocumentItemLabel.NationalCardRear), - MilitaryServiceCard = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + MilitaryServiceCard = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, DocumentItemLabel.MilitaryServiceCard), - EmployeePicture = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + EmployeePicture = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, DocumentItemLabel.EmployeePicture), - 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, - IsSentToChecker = x.EmployeeDocuments.IsSentToChecker - }).Where(x=>x.SubmittedItemsCount > 0 || x.RejectedItemsCount > 0 || x.ConfirmedItemsCount > 0) - .OrderByDescending(x=>x.SubmittedItemsCount).ToList(); + 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, + IsSentToChecker = x.EmployeeDocuments.IsSentToChecker + }).Where(x => x.SubmittedItemsCount > 0 || x.RejectedItemsCount > 0 || x.ConfirmedItemsCount > 0) + .OrderByDescending(x => x.SubmittedItemsCount).ToList(); } @@ -950,40 +952,697 @@ public class EmployeeDocumentsRepository : RepositoryBase y.DocumentStatus is DocumentStatus.SubmittedByAdmin or DocumentStatus.SubmittedByClient)).ToList(); return workshopDocumentsListWithConfirmed.Select(x => new EmployeeDocumentsViewModel() - { - Id = x.EmployeeDocuments.id, - EmployeeFullName = employeesList.FirstOrDefault(y => y.Id == x.EmployeeDocuments.EmployeeId)?.FullName ?? "", - EmployeeId = x.EmployeeDocuments.EmployeeId, - WorkshopId = workshopId, - WorkshopName = workshopName, - Gender = x.EmployeeDocuments.Gender, - EducationalDegree = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + { + Id = x.EmployeeDocuments.id, + EmployeeFullName = employeesList.FirstOrDefault(y => y.Id == x.EmployeeDocuments.EmployeeId)?.FullName ?? "", + EmployeeId = x.EmployeeDocuments.EmployeeId, + WorkshopId = workshopId, + WorkshopName = workshopName, + Gender = x.EmployeeDocuments.Gender, + EducationalDegree = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, DocumentItemLabel.EducationalDegree), - IdCardPage1 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + IdCardPage1 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, DocumentItemLabel.IdCardPage1), - IdCardPage2 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + IdCardPage2 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, DocumentItemLabel.IdCardPage2), - IdCardPage3 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + IdCardPage3 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, DocumentItemLabel.IdCardPage3), - IdCardPage4 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + IdCardPage4 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, DocumentItemLabel.IdCardPage4), - NationalCardFront = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + NationalCardFront = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, DocumentItemLabel.NationalCardFront), - NationalCardRear = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + NationalCardRear = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, DocumentItemLabel.NationalCardRear), - MilitaryServiceCard = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + MilitaryServiceCard = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, DocumentItemLabel.MilitaryServiceCard), - EmployeePicture = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + EmployeePicture = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, DocumentItemLabel.EmployeePicture), - SubmittedItemsCount = x.EmployeeDocumentItemCollection.Count(y => y.DocumentStatus == DocumentStatus.SubmittedByAdmin), - RejectedItemsCount = x.EmployeeDocumentItemCollection.Count(y => y.DocumentStatus == DocumentStatus.Rejected), - ConfirmedItemsCount = x.EmployeeDocumentItemCollection.Count(y => y.DocumentStatus == DocumentStatus.Confirmed), - EmployerFullName = employerName, - IsSentToChecker = x.EmployeeDocuments.IsSentToChecker - }).Where(x => x.SubmittedItemsCount > 0) + SubmittedItemsCount = x.EmployeeDocumentItemCollection.Count(y => y.DocumentStatus == DocumentStatus.SubmittedByAdmin), + RejectedItemsCount = x.EmployeeDocumentItemCollection.Count(y => y.DocumentStatus == DocumentStatus.Rejected), + ConfirmedItemsCount = x.EmployeeDocumentItemCollection.Count(y => y.DocumentStatus == DocumentStatus.Confirmed), + EmployerFullName = employerName, + IsSentToChecker = x.EmployeeDocuments.IsSentToChecker + }).Where(x => x.SubmittedItemsCount > 0) .OrderByDescending(x => x.SubmittedItemsCount).ToList(); } + public async Task> GetWorkshopDocumentCreatedEmployeeForAdmin(List workshops, long roleId) + { + var activeEmployees = _companyContext.LeftWorkList + .Where(x => workshops.Contains(x.WorkshopId) && x.LeftWorkDate.AddDays(-1) >= DateTime.Now) + .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) || + 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 && employeeClientTemp.Any(temp => x.EmployeeId == temp.EmployeeId && temp.WorkshopId == x.WorkshopId)) + .GroupBy(x => x.WorkshopId).Select(x => new WorkshopWithEmployeeDocumentsViewModel() + { + WorkshopId = x.Key, + WorkshopFullName = x.FirstOrDefault().Workshop.WorkshopName, + EmployeesWithoutDocumentCount = x.Count() + }); + + + + var workshopEmployers = await _companyContext.WorkshopEmployers.Include(x => x.Employer) + .Where(x => query.Any(y => y.WorkshopId == x.WorkshopId)) + .GroupBy(x => x.WorkshopId).Select(x => x.FirstOrDefault()).ToListAsync(); + + + + + var result = await query.ToListAsync(); + + + result.ForEach(x => + { + 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(); + + } + + public async Task> GetWorkshopDocumentRejectedForAdmin(List workshops, long roleId) + { + var now = DateTime.Now; + + // آماده‌سازی activeEmployees یک‌بار با EF و انتقال به حافظه + var activeEmployees = _companyContext.LeftWorkList + .Where(x => workshops.Contains(x.WorkshopId) && x.LeftWorkDate.AddDays(-1) >= now) + .Select(x => new { x.WorkshopId, x.EmployeeId }); + + var clientTemp = _companyContext.EmployeeClientTemps + .Where(x => workshops.Contains(x.WorkshopId)) + .Select(x => new { x.WorkshopId, x.EmployeeId }); + + var leftWorkTemp = _companyContext.LeftWorkTemps + .Where(x => workshops.Contains(x.WorkshopId)) + .Select(x => new { x.WorkshopId, x.EmployeeId }); + + // ترکیب کل لیست‌ها در حافظه + var allActiveEmployees = activeEmployees + .Concat(clientTemp) + .Concat(leftWorkTemp); + + // دریافت فقط اطلاعات مورد نیاز + var employeeDocumentsQuery = _companyContext.EmployeeDocuments + .Where(x => workshops.Contains(x.WorkshopId) + && allActiveEmployees.Any(a=>a.WorkshopId == x.WorkshopId && a.EmployeeId == x.EmployeeId) + && x.IsSentToChecker == false + && x.HasRejectedItems) + .Where(x => x.EmployeeDocumentItemCollection + .Any(i => i.DocumentStatus == DocumentStatus.Rejected && + (roleId == 1 ? i.UploaderType == UserType.Admin : i.UploaderRoleId == roleId))) + .Select(x => new + { + x.WorkshopId, + WorkshopName = x.Workshop.WorkshopName + }) + .GroupBy(x => new { x.WorkshopId, x.WorkshopName }) + .Select(g => new WorkshopWithEmployeeDocumentsViewModel + { + WorkshopId = g.Key.WorkshopId, + WorkshopFullName = g.Key.WorkshopName, + EmployeesWithoutDocumentCount = g.Count() + }); + + var result = await employeeDocumentsQuery.ToListAsync(); + + // واکشی کارفرماها + var workshopIds = result.Select(x => x.WorkshopId).ToList(); + + var workshopEmployers = await _companyContext.WorkshopEmployers + .Include(x => x.Employer) + .Where(x => workshopIds.Contains(x.WorkshopId)) + .GroupBy(x => x.WorkshopId) + .Select(g => g.FirstOrDefault()) + .ToListAsync(); + + + + // افزودن نام کارفرما به نتیجه + foreach (var item in result) + { + var employer = workshopEmployers.FirstOrDefault(x => x.WorkshopId == item.WorkshopId)?.Employer; + item.EmployerName = employer?.FullName; + } + + return result + .Where(x => x.EmployeesWithoutDocumentCount > 0) + .OrderByDescending(x => x.EmployeesWithoutDocumentCount) + .ToList(); + } + + public async Task> GetRejectedItemsByWorkshopIdAndRoleForAdminWorkFlow(long workshopId, long roleId) + { + var employeeIdsInWorkshop = await _companyContext.LeftWorkList + .Where(x => x.WorkshopId == workshopId && x.LeftWorkDate.AddDays(-1) >= DateTime.Today) + .Select(x => new { x.EmployeeId, FullName = x.Employee.FName + " " + x.Employee.LName }) + .Union( + _companyContext.EmployeeClientTemps + .Where(x => x.WorkshopId == workshopId) + .Select(x => new { x.EmployeeId, FullName = x.EmployeeFullName }) + ) + .Union( + _companyContext.LeftWorkTemps + .Where(x => x.WorkshopId == workshopId) + .Join(_companyContext.Employees, x => x.EmployeeId, e => e.id, + (x, e) => new { x.EmployeeId, FullName = e.FName + " " + e.LName }) + ) + .Distinct() + .ToListAsync(); + + var employeeIdList = employeeIdsInWorkshop.Select(x => x.EmployeeId).ToList(); + + var edItemsQuery = _companyContext.EmployeeDocumentItems + .Where(x => x.WorkshopId == workshopId && + x.DocumentStatus == DocumentStatus.Rejected && + employeeIdList.Contains(x.EmployeeId) && + x.EmployeeDocuments.IsSentToChecker == false && + x.EmployeeDocuments.HasRejectedItems) + .Include(x => x.EmployeeDocuments).AsSplitQuery(); + + if (roleId != 1) + { + edItemsQuery = edItemsQuery.Where(x => x.UploaderRoleId == roleId); + } + + var edItemsRaw = await edItemsQuery.ToListAsync(); // ← ابتدا همه داده‌ها گرفته شود + + + var edItemsGrouped = edItemsRaw + .GroupBy(x => new { x.EmployeeId, x.DocumentLabel }) + .Select(x => x.OrderByDescending(y => y.CreationDate).First()) + .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 + }) + .ToList(); + + //get medias for current documents of employees + var mediaIds = edItemsGrouped.Select(x => x.MediaId).ToList(); + var mediasList = await _accountContext.Medias + .Where(x => mediaIds.Contains(x.id)) + .Select(x => new MediaViewModel { Id = x.id, Path = x.Path }) + .ToListAsync(); + + + + var result = edItemsGrouped.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(); + + var employeeInfo = employeeIdsInWorkshop.First(e => e.EmployeeId == x.Key); + + //var requiredItemsUploaded = employeeLatestConfirmedDocuments + // .Where(y => requiredDocs.Contains(y.DocumentItemLabel)).Select(y => y.DocumentItemLabel) + // .ToList(); + + return new EmployeeDocumentsViewModel() + { + EmployeeId = x.Key, + IdCardPage1 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage1), + IdCardPage2 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage2), + IdCardPage3 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage3), + IdCardPage4 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage4), + EducationalDegree = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.EducationalDegree), + EmployeeFullName = employeeInfo.FullName, + NationalCardFront = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.NationalCardFront), + NationalCardRear = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.NationalCardRear), + MilitaryServiceCard = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.MilitaryServiceCard), + EmployeePicture = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.EmployeePicture), + //RequiredDocumentsUploaded = requiredItemsUploaded, + //RequiredDocuments = requiredDocs + }; + }).ToList(); + + return result; + + } + + public async Task> GetCreatedEmployeesWorkshopDocumentForAdmin(List workshops, long roleId) + { + if (roleId is not (19 or 1 or 3 or 5)) + { + return new List(); + } + + var employeeClientTemp = _companyContext.EmployeeClientTemps.Where(x => workshops.Contains(x.WorkshopId)); + + var query = _companyContext.EmployeeDocuments + .Where(x => workshops.Contains(x.WorkshopId) && + employeeClientTemp.Any(temp => x.EmployeeId == temp.EmployeeId && temp.WorkshopId == x.WorkshopId) && x.IsConfirmed == false &&x.IsSentToChecker == false) + .Include(x => x.Workshop).Include(x => x.EmployeeDocumentItemCollection) + .GroupBy(x => x.WorkshopId).Select(x => new WorkshopWithEmployeeDocumentsViewModel() + { + WorkshopId = x.Key, + WorkshopFullName = x.FirstOrDefault().Workshop.WorkshopName, + EmployeesWithoutDocumentCount = x.Count() + }); + + + + var workshopEmployers = await _companyContext.WorkshopEmployers.Include(x => x.Employer) + .Where(x => query.Any(y => y.WorkshopId == x.WorkshopId)) + .GroupBy(x => x.WorkshopId).Select(x => x.FirstOrDefault()).ToListAsync(); + + + + + var result = await query.ToListAsync(); + + + result.ForEach(x => + { + 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(); + } + + public async Task> GetCreatedEmployeesDocumentByWorkshopIdForAdmin(long workshopId) + { + + var employeeClientTemp = _companyContext.EmployeeClientTemps.Where(x => workshopId == x.WorkshopId); + + + var EDItemsList = await _companyContext.EmployeeDocuments + .Where(x => workshopId == x.WorkshopId && + employeeClientTemp.Any(temp => x.EmployeeId == temp.EmployeeId && temp.WorkshopId == x.WorkshopId)) + .Include(x => x.EmployeeDocumentItemCollection) + .Where(x => 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 + }) + .ToListAsync(); + + + + + + + + //get medias for current documents of employees + var mediaIds = EDItemsList.Select(x => x.MediaId).ToList(); + var mediasList = await _accountContext.Medias.Where(x => mediaIds.Contains(x.id)) + .Select(x => new MediaViewModel() { Id = x.id, Path = x.Path }).ToListAsync(); + + + + var result = EDItemsList.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(); + + + //var requiredItemsUploaded = employeeLatestConfirmedDocuments + // .Where(y => requiredDocs.Contains(y.DocumentItemLabel)).Select(y => y.DocumentItemLabel) + // .ToList(); + + return new EmployeeDocumentsViewModel() + { + EmployeeId = x.Key, + IdCardPage1 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage1), + IdCardPage2 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage2), + IdCardPage3 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage3), + IdCardPage4 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage4), + EducationalDegree = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.EducationalDegree), + EmployeeFullName = employeeClientTemp.First(y => y.EmployeeId == x.Key).EmployeeFullName, + NationalCardFront = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.NationalCardFront), + NationalCardRear = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.NationalCardRear), + MilitaryServiceCard = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.MilitaryServiceCard), + EmployeePicture = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.EmployeePicture), + //RequiredDocumentsUploaded = requiredItemsUploaded, + //RequiredDocuments = requiredDocs + }; + }).ToList(); + + return result; + } + + public async Task> GetClientRejectedDocumentWorkshopsForAdmin(List workshops, long roleId) + { + var now = DateTime.Now; + + + // آماده‌سازی activeEmployees یک‌بار با EF و انتقال به حافظه + var activeEmployees = _companyContext.LeftWorkList + .Where(x => workshops.Contains(x.WorkshopId) && x.LeftWorkDate.AddDays(-1) >= now) + .Select(x => new { x.WorkshopId, x.EmployeeId }); + + var clientTemp = _companyContext.EmployeeClientTemps + .Where(x => workshops.Contains(x.WorkshopId)) + .Select(x => new { x.WorkshopId, x.EmployeeId }); + + var leftWorkTemp = _companyContext.LeftWorkTemps + .Where(x => workshops.Contains(x.WorkshopId)) + .Select(x => new { x.WorkshopId, x.EmployeeId }); + + // ترکیب کل لیست‌ها در حافظه + var allActiveEmployees = activeEmployees + .Concat(clientTemp) + .Concat(leftWorkTemp); + + var contractingPartyIds = _companyContext.WorkshopEmployers.Where(x => workshops.Contains(x.WorkshopId)) + .Include(x => x.Employer).Select(x => x.Employer.ContractingPartyId).Distinct(); + + var accountIds = await _companyContext.ContractingPartyAccounts + .Where(x => contractingPartyIds.Contains(x.PersonalContractingPartyId)).Select(x => x.AccountId) + .ToListAsync(); + + var query = _companyContext.EmployeeDocuments + .Where(x => workshops.Contains(x.WorkshopId) && + (allActiveEmployees.Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId))) + .Include(x => x.Workshop).Include(x => x.EmployeeDocumentItemCollection) + .Where(x => x.IsSentToChecker == false && x.HasRejectedItems && x.EmployeeDocumentItemCollection.Any(i => i.DocumentStatus == DocumentStatus.Rejected && accountIds.Contains(i.UploaderId))) + .GroupBy(x => x.WorkshopId).Select(x => new WorkshopWithEmployeeDocumentsViewModel() + { + WorkshopId = x.Key, + WorkshopFullName = x.FirstOrDefault().Workshop.WorkshopName, + EmployeesWithoutDocumentCount = x.Count() + }); + + var workshopEmployers = await _companyContext.WorkshopEmployers.Include(x => x.Employer) + .Where(x => query.Any(y => y.WorkshopId == x.WorkshopId)) + .GroupBy(x => x.WorkshopId).Select(x => x.FirstOrDefault()).ToListAsync(); + + + var result = await query.ToListAsync(); + + + result.ForEach(x => + { + 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(); + + } + + public async Task> GetClientRejectedDocumentByWorkshopIdForAdmin(long workshopId) + { + var employeeIdsInWorkshop = await _companyContext.LeftWorkList + .Where(x => x.WorkshopId == workshopId && x.LeftWorkDate.AddDays(-1) >= DateTime.Today) + .Select(x => new { x.EmployeeId, FullName = x.Employee.FName + " " + x.Employee.LName }) + .Union( + _companyContext.EmployeeClientTemps + .Where(x => x.WorkshopId == workshopId) + .Select(x => new { x.EmployeeId, FullName = x.EmployeeFullName }) + ) + .Union( + _companyContext.LeftWorkTemps + .Where(x => x.WorkshopId == workshopId) + .Join(_companyContext.Employees, x => x.EmployeeId, e => e.id, + (x, e) => new { x.EmployeeId, FullName = e.FName + " " + e.LName }) + ) + .Distinct() + .ToListAsync(); + + var employeeIdList = employeeIdsInWorkshop.Select(x => x.EmployeeId).ToList(); + + + + var EDItemsList = await _companyContext.EmployeeDocumentItems + .Where(x => x.WorkshopId == workshopId && x.DocumentStatus == DocumentStatus.Rejected && + employeeIdList.Contains(x.EmployeeId) &&x.UploaderType == UserType.Client) + .Include(x => x.EmployeeDocuments) + .Where(x => x.EmployeeDocuments.IsSentToChecker == false && 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()).ToListAsync(); + + + + + + + //get medias for current documents of employees + var mediaIds = EDItemsList.Select(x => x.MediaId).ToList(); + var mediasList = await _accountContext.Medias.Where(x => mediaIds.Contains(x.id)) + .Select(x => new MediaViewModel() { Id = x.id, Path = x.Path }).ToListAsync(); + + + + var result = EDItemsList.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(); + + var employeeInfo = employeeIdsInWorkshop.First(e => e.EmployeeId == x.Key); + + //var requiredItemsUploaded = employeeLatestConfirmedDocuments + // .Where(y => requiredDocs.Contains(y.DocumentItemLabel)).Select(y => y.DocumentItemLabel) + // .ToList(); + + return new EmployeeDocumentsViewModel() + { + EmployeeId = x.Key, + IdCardPage1 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage1), + IdCardPage2 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage2), + IdCardPage3 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage3), + IdCardPage4 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage4), + EducationalDegree = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.EducationalDegree), + EmployeeFullName = employeeInfo.FullName, + NationalCardFront = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.NationalCardFront), + NationalCardRear = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.NationalCardRear), + MilitaryServiceCard = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.MilitaryServiceCard), + EmployeePicture = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.EmployeePicture), + //RequiredDocumentsUploaded = requiredItemsUploaded, + //RequiredDocuments = requiredDocs + }; + }).ToList(); + + + return result; + } + + public async Task> GetClientRejectedDocumentForClient(long workshopId, long accountId) + { + var employeeIdsInWorkshop = await _companyContext.LeftWorkList + .Where(x => x.WorkshopId == workshopId && x.LeftWorkDate.AddDays(-1) >= DateTime.Today) + .Select(x => new { x.EmployeeId, FullName = x.Employee.FName + " " + x.Employee.LName }) + .Union( + _companyContext.EmployeeClientTemps + .Where(x => x.WorkshopId == workshopId) + .Select(x => new { x.EmployeeId, FullName = x.EmployeeFullName }) + ) + .Union( + _companyContext.LeftWorkTemps + .Where(x => x.WorkshopId == workshopId) + .Join(_companyContext.Employees, x => x.EmployeeId, e => e.id, + (x, e) => new { x.EmployeeId, FullName = e.FName + " " + e.LName }) + ) + .Distinct() + .ToListAsync(); + + var employeeIdList = employeeIdsInWorkshop.Select(x => x.EmployeeId).ToList(); + + + + + var EDItemsList = await _companyContext.EmployeeDocumentItems + .Where(x => x.WorkshopId == workshopId && x.DocumentStatus == DocumentStatus.Rejected && + employeeIdList.Contains(x.EmployeeId) && x.UploaderId == accountId) + .Include(x => x.EmployeeDocuments) + .Where(x => x.EmployeeDocuments.IsSentToChecker == false && 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()).ToListAsync(); + + + + + + + //get medias for current documents of employees + var mediaIds = EDItemsList.Select(x => x.MediaId).ToList(); + var mediasList = await _accountContext.Medias.Where(x => mediaIds.Contains(x.id)) + .Select(x => new MediaViewModel() { Id = x.id, Path = x.Path }).ToListAsync(); + + + + var result = EDItemsList.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(); + + + //var requiredItemsUploaded = employeeLatestConfirmedDocuments + // .Where(y => requiredDocs.Contains(y.DocumentItemLabel)).Select(y => y.DocumentItemLabel) + // .ToList(); + + var employeeInfo = employeeIdsInWorkshop.First(e => e.EmployeeId == x.Key); + + + return new EmployeeDocumentsViewModel() + { + EmployeeId = x.Key, + IdCardPage1 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage1), + IdCardPage2 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage2), + IdCardPage3 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage3), + IdCardPage4 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage4), + EducationalDegree = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.EducationalDegree), + EmployeeFullName = employeeInfo.FullName, + NationalCardFront = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.NationalCardFront), + NationalCardRear = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.NationalCardRear), + MilitaryServiceCard = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.MilitaryServiceCard), + EmployeePicture = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.EmployeePicture), + //RequiredDocumentsUploaded = requiredItemsUploaded, + //RequiredDocuments = requiredDocs + }; + }).ToList(); + + return result; + } + + //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)) + // .Include(x => x.Workshop).Include(x => x.EmployeeDocumentItemCollection) + // .GroupBy(x => x.WorkshopId).Select(x => new WorkshopWithEmployeeDocumentsViewModel() + // { + // WorkshopId = x.Key, + // WorkshopFullName = x.FirstOrDefault().Workshop.WorkshopName, + // EmployeesWithoutDocumentCount = x.Count() + // }); + + // var workshopEmployers = _companyContext.WorkshopEmployers.Include(x => x.Employer) + // .Where(x => query.Any(y => y.WorkshopId == x.WorkshopId)) + // .GroupBy(x => x.WorkshopId).Select(x => x.FirstOrDefault()).ToList(); + + // var result = query.ToList(); + + // result.ForEach(x => + // { + // 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(); + //} + + + #region Private Methods private static List GetCurrentConfirmedDocumentItemsFromEmployeeDocumentItems(EmployeeDocuments entity) @@ -993,9 +1652,9 @@ public class EmployeeDocumentsRepository : RepositoryBase x.MaxBy(y => y.CreationDate)).ToList(); } - private static List GetAllCurrentDocuments(EmployeeDocuments entity,UserType userType) + private static List GetAllCurrentDocuments(EmployeeDocuments entity, UserType userType) { - return entity.EmployeeDocumentItemCollection.Where(x=>x.DocumentStatus != DocumentStatus.Unsubmitted || x.UploaderType == userType) + return entity.EmployeeDocumentItemCollection.Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted || x.UploaderType == userType) .GroupBy(x => x.DocumentLabel).Select(x => x.OrderByDescending(y => y.CreationDate).First()).ToList(); } @@ -1016,7 +1675,8 @@ public class EmployeeDocumentsRepository : RepositoryBase x.Id == item.MediaId)?.Path ?? "", - RejectionMessage = item.RejectionReason + RejectionMessage = item.RejectionReason, + MediaId = medias.FirstOrDefault(x => x.Id == item.MediaId)?.Id ?? 0, }; } diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/AndroidApk/Index.cshtml.cs b/ServiceHost/Areas/AdminNew/Pages/Company/AndroidApk/Index.cshtml.cs index a03ce69a..46b37a72 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Company/AndroidApk/Index.cshtml.cs +++ b/ServiceHost/Areas/AdminNew/Pages/Company/AndroidApk/Index.cshtml.cs @@ -1,4 +1,5 @@ -using AccountManagement.Domain.AccountLeftWorkAgg; +using _0_Framework.Application; +using AccountManagement.Domain.AccountLeftWorkAgg; using AccountMangement.Infrastructure.EFCore; using Company.Domain.RewardAgg; using Company.Domain.RollCallAgg.DomainService; @@ -71,21 +72,36 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk return Page(); } - public IActionResult OnPostShiftDateNew2() + public async Task OnPostShiftDateNew2() { - var startRollCall = new DateTime(2025, 3, 21); - var rollCalls = _context.RollCalls.Where(x => x.StartDate >= startRollCall && x.EndDate != null ).ToList(); - var r1 = rollCalls.Skip(10000).Take(10000).ToList(); + //var startRollCall = new DateTime(2025, 3, 21); + //var rollCalls = _context.RollCalls.Where(x => x.StartDate >= startRollCall && x.EndDate != null ).ToList(); + //var r1 = rollCalls.Skip(10000).Take(10000).ToList(); - Console.ForegroundColor = ConsoleColor.DarkRed; - Console.WriteLine("endStep 1 ============"); - SetRollCall(r1); + //Console.ForegroundColor = ConsoleColor.DarkRed; + //Console.WriteLine("endStep 1 ============"); + //SetRollCall(r1); + await RefactorEmployeeDocumentItem(); ViewData["message"] = "تومام دو"; return Page(); } + public async System.Threading.Tasks.Task RefactorEmployeeDocumentItem() + { + var employeeDocumentItems = await _context.EmployeeDocumentItems.Where(x => x.UploaderType == UserType.Admin).ToListAsync(); + foreach (var employeeDocumentItem in employeeDocumentItems) + { + var roleId = _accountContext.Accounts.FirstOrDefault(x => x.id == employeeDocumentItem.UploaderId)?.RoleId ?? 0; + employeeDocumentItem.SetRoleId(roleId); + } + + await _context.SaveChangesAsync(); + + } + + #region Create reward for kebab mahdi diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/EmployeeList.cshtml.cs b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/EmployeeList.cshtml.cs index 392ce32d..3709a07d 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/EmployeeList.cshtml.cs +++ b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/EmployeeList.cshtml.cs @@ -3,10 +3,9 @@ using CompanyManagment.App.Contracts.Error; using CompanyManagment.App.Contracts.Workshop; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; -using System.Security.Claims; using _0_Framework.Application; +using AccountManagement.Application.Contracts.Media; using CompanyManagment.App.Contracts.Employee; -using Company.Domain.EmployeeAgg; namespace ServiceHost.Areas.AdminNew.Pages.Company.EmployeesDocuments { @@ -18,10 +17,12 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.EmployeesDocuments private readonly IWebHostEnvironment _webHostEnvironment; private readonly IEmployeeApplication _employeeApplication; private readonly IEmployeeDocumentsApplication _employeeDocumentsApplication; + private readonly IMediaApplication _mediaApplication; + public long WorkshopId { get; set; } public string WorkshopFullName; - public EmployeeListModel(IWorkshopApplication workshopApplication, IEmployeeDocumentsApplication employeeDocumentsApplication, IEmployeeApplication employeeApplication, IAuthHelper authHelper, IPasswordHasher passwordHasher, IWebHostEnvironment webHostEnvironment) + public EmployeeListModel(IWorkshopApplication workshopApplication, IEmployeeDocumentsApplication employeeDocumentsApplication, IEmployeeApplication employeeApplication, IAuthHelper authHelper, IPasswordHasher passwordHasher, IWebHostEnvironment webHostEnvironment, IMediaApplication mediaApplication) { _workshopApplication = workshopApplication; _employeeDocumentsApplication = employeeDocumentsApplication; @@ -29,6 +30,7 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.EmployeesDocuments _authHelper = authHelper; _passwordHasher = passwordHasher; _webHostEnvironment = webHostEnvironment; + _mediaApplication = mediaApplication; } public IActionResult OnGet(long workshopId) @@ -88,8 +90,6 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.EmployeesDocuments } } - - public IActionResult OnGetCreateUploadDocument(long workshopId,long employeeId) { if (workshopId <= 0) @@ -127,6 +127,7 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.EmployeesDocuments message = result.Message }); } + public IActionResult OnPostRemoveClientEmployeeDocumentItemsByLabels(long workshopId, long employeeId, List labels) { var result = _employeeDocumentsApplication.RemoveClientDocumentItemsByAdmin(workshopId, employeeId, labels); @@ -136,6 +137,7 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.EmployeesDocuments message = result.Message }); } + public IActionResult OnPostCancelOperation(long workshopId, long employeeId) { var result = _employeeDocumentsApplication.DeleteUnsubmittedItems(workshopId, employeeId); @@ -169,6 +171,59 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.EmployeesDocuments var contentType = Tools.GetContentTypeImage(Path.GetExtension(filePath)); return PhysicalFile(filePath, contentType); + } + + #region Print + + public IActionResult OnGetPrintSelectionUploadDocument(long workshopId, long employeeId) + { + if (workshopId <= 0) + { + var resultError = new ErrorViewModel() + { + Message = "کارگاه شما یافت نشد" + }; + return Partial("../Error/_ErrorModal", resultError); + } + + var employeeDocument = _employeeDocumentsApplication.GetDetailsForAdmin(employeeId, workshopId); + + return Partial("ModalPrintSelectionUploadDocument", employeeDocument); + } + + public IActionResult OnGetPrintSingleUploadDocument(long workshopId, long employeeId, long mediaId) + { + // Todo: Mahan, please review this method that displays an employee's documents. + //var employeeDocument = _employeeDocumentsApplication.GetDetailsForAdmin(employeeId, workshopId); + var command = _mediaApplication.Get(mediaId); + + return Partial("ModalPrintSingleUploadDocument", command); + } + + #endregion + + public IActionResult OnPostGroupSave(long workshopId, long employeeId, List command) + { + var result = _employeeDocumentsApplication.AddRangeEmployeeDocumentItemsByAdmin(workshopId, employeeId, command); + return new JsonResult(new + { + success = result.IsSuccedded, + message = result.Message + }); + } + + public IActionResult OnGetPrintSelectionUD(List ids) + { + var command = _mediaApplication.GetRange(ids); + + return Partial("PrintSelectionUD", command); + } + + public IActionResult OnGetPrintSingleUD(long id) + { + var command = _mediaApplication.Get(id); + + return Partial("PrintSingleUD", command); } } } diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/ModalPrintSelectionUploadDocument.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/ModalPrintSelectionUploadDocument.cshtml new file mode 100644 index 00000000..f902af16 --- /dev/null +++ b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/ModalPrintSelectionUploadDocument.cshtml @@ -0,0 +1,271 @@ +@using Microsoft.AspNetCore.Mvc.TagHelpers +@model CompanyManagment.App.Contracts.EmployeeDocuments.EmployeeDocumentsViewModel + +@{ + string adminVersion = _0_Framework.Application.Version.AdminVersion; + +} + +
+ + +
+ + + + \ No newline at end of file diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/ModalPrintSingleUploadDocument.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/ModalPrintSingleUploadDocument.cshtml new file mode 100644 index 00000000..ebef277c --- /dev/null +++ b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/ModalPrintSingleUploadDocument.cshtml @@ -0,0 +1,53 @@ +@model AccountManagement.Application.Contracts.Media.MediaViewModel + +@{ + string adminVersion = _0_Framework.Application.Version.AdminVersion; + +} + + + + + + \ No newline at end of file diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/ModalUploadDocument.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/ModalUploadDocument.cshtml index 55c90c98..44e99e21 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/ModalUploadDocument.cshtml +++ b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/ModalUploadDocument.cshtml @@ -446,6 +446,7 @@ \ No newline at end of file diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/PrintSingleUD.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/PrintSingleUD.cshtml new file mode 100644 index 00000000..7138994a --- /dev/null +++ b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/PrintSingleUD.cshtml @@ -0,0 +1,251 @@ +@model AccountManagement.Application.Contracts.Media.MediaViewModel +@{ + +} + + + +
+ + + + + +
+ + \ No newline at end of file diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/RollCall/Index.cshtml.cs b/ServiceHost/Areas/AdminNew/Pages/Company/RollCall/Index.cshtml.cs index aa4b8ffd..ce35d4cf 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Company/RollCall/Index.cshtml.cs +++ b/ServiceHost/Areas/AdminNew/Pages/Company/RollCall/Index.cshtml.cs @@ -1,4 +1,5 @@ +using _0_Framework.Application; using CompanyManagment.App.Contracts.Workshop; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; @@ -13,16 +14,18 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.RollCall private readonly IGetWorkshopWithRollCallHandler _workshopWithRollCallHandler; private readonly IWorkshopApplication _workshopApplication; private readonly IWorkFlowApplication _workflowApplication; + private readonly IAuthHelper _authHelper; public List Items { get; set; } public List WorkshopSearchItems { get; set; } public WorkshopWithRollCallServiceQueryParameters SearchModel; public FilterMode FilterMode { get; set; } - public IndexModel(IGetWorkshopWithRollCallHandler workshopWithRollCallHandler, IWorkshopApplication workshopApplication, IWorkFlowApplication workflowApplication) + public IndexModel(IGetWorkshopWithRollCallHandler workshopWithRollCallHandler, IWorkshopApplication workshopApplication, IWorkFlowApplication workflowApplication, IAuthHelper authHelper) { _workshopWithRollCallHandler = workshopWithRollCallHandler; _workshopApplication = workshopApplication; _workflowApplication = workflowApplication; + _authHelper = authHelper; } public void OnGet(WorkshopWithRollCallServiceQueryParameters searchModel) @@ -45,7 +48,8 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.RollCall public async Task OnPostWorkFlowCountByWorkshopId(long workshopId) { - var result = await System.Threading.Tasks.Task.Run(() => _workflowApplication.GetAllWorkFlowCount(workshopId)); + var currentAccountId = _authHelper.CurrentAccountId(); + var result = await System.Threading.Tasks.Task.Run(() => _workflowApplication.GetAllWorkFlowCount(workshopId, currentAccountId)); return new JsonResult(new { data = result diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/EmployeesDocuments.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/EmployeesDocuments.cshtml index b397fd03..ab39ebde 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/EmployeesDocuments.cshtml +++ b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/EmployeesDocuments.cshtml @@ -1,10 +1,13 @@ @page @model ServiceHost.Areas.AdminNew.Pages.Company.WorkFlow.EmployeesDocumentsModel +@inject _0_Framework.Application.IAuthHelper AuthHelper; @{ string clientVersion = _0_Framework.Application.Version.StyleVersion; Layout = "Shared/_Layout"; ViewData["title"] = " - بارگذاری مدارک توسط کارفرما"; + var currentAccount = AuthHelper.CurrentAccountInfo(); + int index = 1; } @@ -16,8 +19,14 @@ + + }
@@ -70,14 +79,45 @@
-
  • -
  • +
    + + @(currentAccount.RoleId == 1 ? "تمامی برگشت خورده ها" : "برگشت خورده") +
    -
    +
    Loading...
    - @Model.EmployeeDocumentsAwaitingSubmitCount + +
    +
    +
  • + +
  • + +
  • +
  • +
  • @@ -92,14 +132,36 @@
    -
    -
    +
    +
    @for (int j = 0; j < 30; j++) {
    }
    -
    +
    +
    +
    + + + +
    @@ -120,13 +182,26 @@ @section Script { + } diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/EmployeesDocuments.cshtml.cs b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/EmployeesDocuments.cshtml.cs index b23f3a81..b2ca7875 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/EmployeesDocuments.cshtml.cs +++ b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/EmployeesDocuments.cshtml.cs @@ -1,4 +1,6 @@ +using System.Runtime.InteropServices.JavaScript; using _0_Framework.Application; +using AccountManagement.Application.Contracts.Media; using Company.Domain.WorkshopAccountAgg; using CompanyManagment.App.Contracts.Employee; using CompanyManagment.App.Contracts.EmployeeDocuments; @@ -11,152 +13,254 @@ using WorkFlow.Application.Contracts.AdminWorkFlow; namespace ServiceHost.Areas.AdminNew.Pages.Company.WorkFlow { - [Authorize] - public class EmployeesDocumentsModel : PageModel - { - private readonly IWorkshopApplication _workshopApplication; - private readonly IEmployeeDocumentsApplication _employeeDocumentsApplication; - private readonly IAdminWorkFlowApplication _adminWorkFlowApplication; - private readonly IWorkshopAccountRepository _workshopAccountRepository; - private readonly IAuthHelper _authHelper; - public int EmployeeDocumentsAwaitingSubmitCount; + [Authorize] + public class EmployeesDocumentsModel : PageModel + { + private readonly IWorkshopApplication _workshopApplication; + private readonly IEmployeeDocumentsApplication _employeeDocumentsApplication; + private readonly IAdminWorkFlowApplication _adminWorkFlowApplication; + private readonly IWorkshopAccountRepository _workshopAccountRepository; + private readonly IMediaApplication _mediaApplication; + private readonly IAuthHelper _authHelper; + private long _roleId; - public EmployeesDocumentsModel(IAdminWorkFlowApplication adminWorkFlowApplication, IWorkshopApplication workshopApplication, IEmployeeDocumentsApplication employeeDocumentsApplication, IWorkshopAccountRepository workshopAccountRepository, IAuthHelper authHelper) - { - _adminWorkFlowApplication = adminWorkFlowApplication; - _workshopApplication = workshopApplication; - _employeeDocumentsApplication = employeeDocumentsApplication; - _workshopAccountRepository = workshopAccountRepository; - _authHelper = authHelper; + public EmployeesDocumentsModel(IAdminWorkFlowApplication adminWorkFlowApplication, + IWorkshopApplication workshopApplication, IEmployeeDocumentsApplication employeeDocumentsApplication, + IWorkshopAccountRepository workshopAccountRepository, IAuthHelper authHelper, + IMediaApplication mediaApplication) + { + _adminWorkFlowApplication = adminWorkFlowApplication; + _workshopApplication = workshopApplication; + _employeeDocumentsApplication = employeeDocumentsApplication; + _workshopAccountRepository = workshopAccountRepository; + _authHelper = authHelper; + _mediaApplication = mediaApplication; + _roleId = authHelper.CurrentAccountInfo().RoleId; } - public async System.Threading.Tasks.Task OnGet() - { - var accountId = _authHelper.CurrentAccountId(); - var accountWorkshops = _workshopAccountRepository.GetList(accountId).Select(x => x.WorkshopId).ToList(); - EmployeeDocumentsAwaitingSubmitCount = await _adminWorkFlowApplication.GetEmployeeDocumentWorkFlowCountsForAdmin(accountWorkshops); + public void OnGet() + { } - public IActionResult OnGetWorkshopsWithDocumentsAwaitingUploadAjax() - { - var accountId = _authHelper.CurrentAccountId(); - var accountWorkshops= _workshopAccountRepository.GetList(accountId).Select(x=>x.WorkshopId).ToList(); + public IActionResult OnGetWorkshopsWithDocumentsAwaitingUploadAjax() + { + var accountId = _authHelper.CurrentAccountId(); + var accountWorkshops = _workshopAccountRepository.GetList(accountId).Select(x => x.WorkshopId).ToList(); var resultData = _adminWorkFlowApplication.GetWorkshopsWithDocumentsAwaitingUploadForAdmin(accountWorkshops); return new JsonResult(new - { - success = true, - data = resultData - }); - } - - public IActionResult OnGetByWorkshopIdWithItemsForAdminWorkFlow(long workshopId) - { - var resultData = _employeeDocumentsApplication.GetByWorkshopIdWithItemsForAdminWorkFlow(workshopId); - - return new JsonResult(new - { - success = true, - data = resultData - }); + { + success = true, + data = resultData + }); } + public IActionResult OnGetByWorkshopIdWithItemsForAdminWorkFlow(long workshopId) + { + var resultData = _employeeDocumentsApplication.GetByWorkshopIdWithItemsForAdminWorkFlow(workshopId); + + return new JsonResult(new + { + success = true, + data = resultData + }); + } + + + public async Task OnGetClientRejectedDocumentWorkshopsForAdmin() + { + var accountId = _authHelper.CurrentAccountId(); + var accountWorkshops = _workshopAccountRepository.GetList(accountId).Select(x => x.WorkshopId).ToList(); + var resultData = await _employeeDocumentsApplication.GetClientRejectedDocumentWorkshopsForAdmin(accountWorkshops,_roleId); + + return new JsonResult(new + { + success = true, + data = resultData + }); + } + + public async Task OnGetClientRejectedDocumentByWorkshopIdForAdmin(long workshopId) + { + var resultData = await _employeeDocumentsApplication.GetClientRejectedDocumentByWorkshopIdForAdmin(workshopId); + + return new JsonResult(new + { + success = true, + data = resultData + }); + } + + + public async Task OnGetCreatedEmployeesWorkshopDocumentForAdmin() + { + var accountId = _authHelper.CurrentAccountId(); + var accountWorkshops = _workshopAccountRepository.GetList(accountId).Select(x => x.WorkshopId).ToList(); + var resultData = await _employeeDocumentsApplication.GetCreatedEmployeesWorkshopDocumentForAdmin(accountWorkshops, _roleId); + + return new JsonResult(new + { + success = true, + data = resultData + }); + } + + public async Task OnGetCreatedEmployeesDocumentByWorkshopIdForAdmin(long workshopId) + { + var resultData = await _employeeDocumentsApplication.GetCreatedEmployeesDocumentByWorkshopIdForAdmin(workshopId); + + return new JsonResult(new + { + success = true, + data = resultData + }); + } + + public async Task OnGetWorkshopDocumentRejectedForAdmin() + { + var accountId = _authHelper.CurrentAccountId(); + var accountWorkshops = _workshopAccountRepository.GetList(accountId).Select(x => x.WorkshopId).ToList(); + var resultData = + await _employeeDocumentsApplication.GetWorkshopDocumentRejectedForAdmin(accountWorkshops, + _roleId); + + return new JsonResult(new + { + success = true, + data = resultData + }); + } + + public async Task OnGetGetRejectedItemsByWorkshopIdAndRoleForAdminWorkFlow(long workshopId) + { + var resultData = + await _employeeDocumentsApplication + .GetRejectedItemsByWorkshopIdAndRoleForAdminWorkFlow(workshopId, _roleId); + + return new JsonResult(new + { + success = true, + data = resultData + }); + } + + public async Task OnGetCountWorkFlowUploadDocument() + { + var accountId = _authHelper.CurrentAccountId(); + var accountWorkshops = _workshopAccountRepository.GetList(accountId).Select(x => x.WorkshopId).ToList(); + + var resultDataWorkshopDocumentRejectedForAdmin = await _employeeDocumentsApplication.GetWorkshopDocumentRejectedForAdmin(accountWorkshops, _roleId); + var resultDataCreatedEmployeesWorkshopDocumentForAdmin = await _employeeDocumentsApplication.GetCreatedEmployeesWorkshopDocumentForAdmin(accountWorkshops, _roleId); + var resultCountClientRejectedDocumentWorkshopsForAdmin = await _employeeDocumentsApplication.GetClientRejectedDocumentWorkshopsForAdmin(accountWorkshops,_roleId); + + return new JsonResult(new + { + WorkshopDocumentRejectedForAdmin = resultDataWorkshopDocumentRejectedForAdmin.Count, + CreatedEmployeesWorkshopDocumentForAdmin = resultDataCreatedEmployeesWorkshopDocumentForAdmin.Count, + ClientRejectedDocumentWorkshopsForAdmin = resultCountClientRejectedDocumentWorkshopsForAdmin.Count + }); + } + + public IActionResult OnGetCreateUploadDocument(long workshopId, long employeeId) - { - var employeeDocument = _employeeDocumentsApplication.GetDetailsForAdmin(employeeId, workshopId); - return Partial("_ModalEmployeeDocuments/ModalUploadDocument", employeeDocument); - } - - public IActionResult OnPostCreateUploadDocument(AddEmployeeDocumentItem command) - { - var result = _employeeDocumentsApplication.AddEmployeeDocumentItemForClient(command); - var employeeDocument = _employeeDocumentsApplication.GetDetailsForAdmin(command.EmployeeId, command.WorkshopId); - return new JsonResult(new - { - isSuccedded = result.IsSuccedded, - message = result.Message, - imageSrc = employeeDocument - }); - } - - public IActionResult OnPostRemoveEmployeeDocumentByLabel(long workshopId, long employeeId, DocumentItemLabel label) - { - var result = _employeeDocumentsApplication.RemoveClientDocumentItemsByAdminTemp(workshopId, employeeId, label); - return new JsonResult(new - { - isSuccedded = result.IsSuccedded, - message = result.Message - }); - } - public IActionResult OnPostRemoveClientEmployeeDocumentItemsByLabels(long workshopId, long employeeId, List labels) - { - var result = _employeeDocumentsApplication.RemoveClientDocumentItemsByAdmin(workshopId, employeeId, labels); - return new JsonResult(new - { - isSuccedded = result.IsSuccedded, - message = result.Message - }); - } - - public IActionResult OnPostSaveSubmit(SubmitEmployeeDocuments cmd) - { - - var result = _employeeDocumentsApplication.SubmitDocumentItemsByAdminInWorkFlow(cmd); - - return new JsonResult(new - { - isSuccedded = result.IsSuccedded, - message = result.Message, - }); - } - - public IActionResult OnGetShowPicture(string filePath) - { - if (string.IsNullOrEmpty(filePath)) - return NotFound(); - - - if (!System.IO.File.Exists(filePath)) - return NotFound(); - - var contentType = Tools.GetContentTypeImage(Path.GetExtension(filePath)); - return PhysicalFile(filePath, contentType); - } - - public IActionResult OnPostCancelOperation(long workshopId, long employeeId) - { - var result = _employeeDocumentsApplication.DeleteUnsubmittedItems(workshopId, employeeId); - return new JsonResult(new - { - success = result.IsSuccedded, - message = result.Message - }); - } - - public async Task OnGetEditEmployeeModal(long employeeId, long workshopId) - { - var command = await _adminWorkFlowApplication.GetEmployeeEditInEmployeeDocumentWorkFlow(employeeId, workshopId); - return Partial("_ModalEmployeeDocuments/ModalEmployeeEdit", command); + { + var employeeDocument = _employeeDocumentsApplication.GetDetailsForAdmin(employeeId, workshopId); + return Partial("_ModalEmployeeDocuments/ModalUploadDocument", employeeDocument); } - public async Task OnPostEditEmployeeModal(EditEmployeeInEmployeeDocument command) - { + public IActionResult OnPostCreateUploadDocument(AddEmployeeDocumentItem command) + { + var result = _employeeDocumentsApplication.AddEmployeeDocumentItemForClient(command); + var employeeDocument = _employeeDocumentsApplication.GetDetailsForAdmin(command.EmployeeId, command.WorkshopId); + return new JsonResult(new + { + isSuccedded = result.IsSuccedded, + message = result.Message, + imageSrc = employeeDocument + }); + } + + public IActionResult OnPostRemoveEmployeeDocumentByLabel(long workshopId, long employeeId, DocumentItemLabel label) + { + var result = _employeeDocumentsApplication.RemoveClientDocumentItemsByAdminTemp(workshopId, employeeId, label); + return new JsonResult(new + { + isSuccedded = result.IsSuccedded, + message = result.Message + }); + } + public IActionResult OnPostRemoveClientEmployeeDocumentItemsByLabels(long workshopId, long employeeId, List labels) + { + var result = _employeeDocumentsApplication.RemoveClientDocumentItemsByAdmin(workshopId, employeeId, labels); + return new JsonResult(new + { + isSuccedded = result.IsSuccedded, + message = result.Message + }); + } + + public IActionResult OnPostSaveSubmit(SubmitEmployeeDocuments cmd) + { + + var result = _employeeDocumentsApplication.SubmitDocumentItemsByAdminInWorkFlow(cmd); + + return new JsonResult(new + { + isSuccedded = result.IsSuccedded, + message = result.Message, + }); + } + + public IActionResult OnGetShowPicture(string filePath) + { + if (string.IsNullOrEmpty(filePath)) + return NotFound(); + + + if (!System.IO.File.Exists(filePath)) + return NotFound(); + + var contentType = Tools.GetContentTypeImage(Path.GetExtension(filePath)); + return PhysicalFile(filePath, contentType); + } + + public IActionResult OnPostCancelOperation(long workshopId, long employeeId) + { + var result = _employeeDocumentsApplication.DeleteUnsubmittedItems(workshopId, employeeId); + return new JsonResult(new + { + success = result.IsSuccedded, + message = result.Message + }); + } + + public async Task OnGetEditEmployeeModal(long employeeId, long workshopId, long mediaId) + { + var media = _mediaApplication.Get(mediaId); + var command = await _adminWorkFlowApplication.GetEmployeeEditInEmployeeDocumentWorkFlow(employeeId, workshopId); + command.Media = media; + return Partial("_ModalEmployeeDocuments/ModalEmployeeEdit", command); + } + + public async Task OnPostEditEmployeeModal(EditEmployeeInEmployeeDocument command) + { var result = await _adminWorkFlowApplication.EditEmployeeInEmployeeDocumentWorkFlow(command); return new JsonResult(new { success = result.IsSuccedded, message = result.Message }); - } - - public IActionResult OnPostGroupSave(long workshopId, long employeeId, List command) - { - var result = _employeeDocumentsApplication.AddRangeEmployeeDocumentItemsByAdmin(workshopId, employeeId, command); - return new JsonResult(new - { - success = result.IsSuccedded, - message = result.Message - }); } - } + + public IActionResult OnPostGroupSave(long workshopId, long employeeId, List command) + { + var result = _employeeDocumentsApplication.AddRangeEmployeeDocumentItemsByAdmin(workshopId, employeeId, command); + return new JsonResult(new + { + success = result.IsSuccedded, + message = result.Message + }); + } + + } } diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/Index.cshtml.cs b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/Index.cshtml.cs index b75c7603..36f95859 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/Index.cshtml.cs +++ b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/Index.cshtml.cs @@ -18,19 +18,22 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.WorkFlow private readonly IAuthHelper _authHelper; private readonly IWorkshopAccountRepository _workshopAccountRepository; public int EmployeeDocumentsAwaitingSubmitCount; + private readonly long _roleId; - public IndexModel(IAdminWorkFlowApplication adminWorkFlowApplication, IAuthHelper authHelper, IWorkshopAccountRepository workshopAccountRepository) + public IndexModel(IAdminWorkFlowApplication adminWorkFlowApplication, IAuthHelper authHelper, IWorkshopAccountRepository workshopAccountRepository) { _adminWorkFlowApplication = adminWorkFlowApplication; _authHelper = authHelper; _workshopAccountRepository = workshopAccountRepository; + _roleId = authHelper.CurrentAccountInfo().RoleId; + } - - public async System.Threading.Tasks.Task OnGet() + + public async System.Threading.Tasks.Task OnGet() { var accountId = _authHelper.CurrentAccountId(); var accountWorkshops = _workshopAccountRepository.GetList(accountId).Select(x => x.WorkshopId).ToList(); - EmployeeDocumentsAwaitingSubmitCount = await _adminWorkFlowApplication.GetEmployeeDocumentWorkFlowCountsForAdmin(accountWorkshops); + EmployeeDocumentsAwaitingSubmitCount = await _adminWorkFlowApplication.GetEmployeeDocumentWorkFlowCountsForAdmin(accountWorkshops,_roleId ); } public async Task OnGetStartAndLeftWorkCount() diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeDocuments/ModalUploadDocument.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeDocuments/ModalUploadDocument.cshtml index 889102ae..809a0595 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeDocuments/ModalUploadDocument.cshtml +++ b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeDocuments/ModalUploadDocument.cshtml @@ -17,6 +17,16 @@ .pdTitle2 { height: 42px; } + + @@media (max-width: 768px) { + .modal-body { + height: auto; + } + + .btnUploadingPD, .btnDeletingPD { + width: 80px; + } + } } @@ -67,7 +77,7 @@
    -
    عکس پرسنل *
    +
    عکس پرسنل @* * *@
    @(!string.IsNullOrWhiteSpace(Model.EmployeePicture.RejectionMessage) ? "رد شد" : "")
    @* در صورت آپلود نکردن عکس پرسنلی، عکس از حضور و غیاب تنظیم می‌شود. *@ @@ -80,7 +90,7 @@
    - + @@ -134,7 +144,7 @@
    - + @@ -174,7 +184,7 @@
    -
    کارت ملی پشت *
    +
    کارت ملی پشت @* * *@
    @(!string.IsNullOrWhiteSpace(Model.NationalCardRear.RejectionMessage) ? "رد شد" : "")
    @@ -186,7 +196,7 @@
    - + @@ -238,7 +248,7 @@
    - + @@ -291,7 +301,7 @@
    - + @@ -332,7 +342,7 @@
    -
    شناسنامه صفحه دوم *
    +
    شناسنامه صفحه دوم @* * *@
    @(!string.IsNullOrWhiteSpace(Model.IdCardPage2.RejectionMessage) ? "رد شد" : "")
    @@ -344,7 +354,7 @@
    - + @@ -384,7 +394,7 @@
    -
    شناسنامه صفحه سوم *
    +
    شناسنامه صفحه سوم @* * *@
    @(!string.IsNullOrWhiteSpace(Model.IdCardPage3.RejectionMessage) ? "رد شد" : "")
    @@ -396,7 +406,7 @@
    - + @@ -448,7 +458,7 @@
    - + diff --git a/ServiceHost/Areas/AdminNew/Pages/Index.cshtml.cs b/ServiceHost/Areas/AdminNew/Pages/Index.cshtml.cs index fa2c24a0..7939e132 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Index.cshtml.cs +++ b/ServiceHost/Areas/AdminNew/Pages/Index.cshtml.cs @@ -1,8 +1,10 @@ using _0_Framework.Application; +using AccountManagement.Application; using AccountManagement.Application.Contracts.Task; using AccountManagement.Application.Contracts.Ticket; using backService; using Company.Domain.WorkshopAccountAgg; +using CompanyManagment.App.Contracts.Workshop; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using WorkFlow.Application.Contracts.AdminWorkFlow; @@ -17,7 +19,10 @@ namespace ServiceHost.Areas.AdminNew.Pages private readonly IAdminWorkFlowApplication _adminWorkFlowApplication; private readonly ITicketApplication _ticketApplication; private readonly ITaskApplication _taskApplication; - public List DbBackupList { get; set; } + private long _roleId; + + + public List DbBackupList { get; set; } public List InsuranceBackupList { get; set; } public IndexModel(IWebHostEnvironment webHostEnvironment, IConfiguration configuration, IAuthHelper authHelper, IWorkshopAccountRepository workshopAccountRepository, IAdminWorkFlowApplication adminWorkFlowApplication, ITicketApplication ticketApplication, ITaskApplication taskApplication) @@ -25,10 +30,13 @@ namespace ServiceHost.Areas.AdminNew.Pages _configuration = configuration; _authHelper = authHelper; _workshopAccountRepository = workshopAccountRepository; - _adminWorkFlowApplication = adminWorkFlowApplication; _ticketApplication = ticketApplication; _taskApplication = taskApplication; + _adminWorkFlowApplication = adminWorkFlowApplication; + _roleId = authHelper.CurrentAccountInfo().RoleId; + } + public void OnGet() { #region DbBackupLoad @@ -67,18 +75,18 @@ namespace ServiceHost.Areas.AdminNew.Pages public async Task OnGetLayoutCountTask() { var currentAccountId = _authHelper.CurrentAccountId(); - int taskCount = await _taskApplication.RequestedAndOverdueTasksCount(currentAccountId); + int taskCount = await _taskApplication.RequestedAndOverdueTasksCount(currentAccountId); - return new JsonResult(new + return new JsonResult(new { success = true, data = taskCount }); } - public async Task OnGetLayoutCountTicket() + public IActionResult OnGetLayoutCountTicket() { - int ticketCount = _ticketApplication.GetAdminTicketsCount(); + int ticketCount = _ticketApplication.GetAdminTicketsCount(); return new JsonResult(new { @@ -91,7 +99,8 @@ namespace ServiceHost.Areas.AdminNew.Pages { var currentAccountId = _authHelper.CurrentAccountId(); var accountWorkshops = _workshopAccountRepository.GetList(currentAccountId).Select(x => x.WorkshopId).ToList(); - int workFlowCount = await _adminWorkFlowApplication.GetWorkFlowCountsForAdmin(accountWorkshops,currentAccountId); + int workFlowCount = await _adminWorkFlowApplication.GetWorkFlowCountsForAdmin(accountWorkshops,currentAccountId, _roleId); + return new JsonResult(new { diff --git a/ServiceHost/Areas/Client/Pages/Company/EmployeesDocuments/Index.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/EmployeesDocuments/Index.cshtml.cs index a6a7a2a3..c67be5d9 100644 --- a/ServiceHost/Areas/Client/Pages/Company/EmployeesDocuments/Index.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/EmployeesDocuments/Index.cshtml.cs @@ -146,5 +146,16 @@ namespace ServiceHost.Areas.Client.Pages.Company.EmployeesDocuments var contentType = Tools.GetContentTypeImage(Path.GetExtension(filePath)); return PhysicalFile(filePath, contentType); } + + public IActionResult OnPostGroupSave(long employeeId, List command) + { + var result = _employeeDocumentsApplication.AddRangeEmployeeDocumentItemsByClient(_workshopId, employeeId, command); + + return new JsonResult(new + { + isSuccedded = result.IsSuccedded, + message = result.Message, + }); + } } } diff --git a/ServiceHost/Areas/Client/Pages/Company/EmployeesDocuments/ModalUploadDocument.cshtml b/ServiceHost/Areas/Client/Pages/Company/EmployeesDocuments/ModalUploadDocument.cshtml index 029abafa..0d7e22db 100644 --- a/ServiceHost/Areas/Client/Pages/Company/EmployeesDocuments/ModalUploadDocument.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/EmployeesDocuments/ModalUploadDocument.cshtml @@ -338,6 +338,7 @@ + + + +} diff --git a/ServiceHost/Areas/Client/Pages/Company/WorkFlow/EmployeeDocuments/Index.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/WorkFlow/EmployeeDocuments/Index.cshtml.cs new file mode 100644 index 00000000..7c5a7f4c --- /dev/null +++ b/ServiceHost/Areas/Client/Pages/Company/WorkFlow/EmployeeDocuments/Index.cshtml.cs @@ -0,0 +1,127 @@ +using System.Collections.Generic; +using System.Security.Claims; +using _0_Framework.Application; +using Company.Domain.EmployeeAgg; +using CompanyManagment.App.Contracts.EmployeeDocuments; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using WorkFlow.Infrastructure.ACL.EmployeeDocuments; + +namespace ServiceHost.Areas.Client.Pages.Company.WorkFlow.EmployeeDocuments +{ + + public class IndexModel : PageModel + { + private readonly IPasswordHasher _passwordHasher; + private readonly IAuthHelper _authHelper; + private readonly IHttpContextAccessor _contextAccessor; + private readonly IEmployeeDocumentsApplication _employeeDocumentsApplication; + private readonly long _workshopId; + + public IndexModel(IHttpContextAccessor contextAccessor, IPasswordHasher passwordHasher, IEmployeeDocumentsApplication employeeDocumentsApplication, IAuthHelper authHelper) + { + _contextAccessor = contextAccessor; + _passwordHasher = passwordHasher; + _employeeDocumentsApplication = employeeDocumentsApplication; + _authHelper = authHelper; + + var workshopHash = _contextAccessor.HttpContext?.User.FindFirstValue("WorkshopSlug"); + _workshopId = _passwordHasher.SlugDecrypt(workshopHash); + + if (_workshopId < 1) + throw new InvalidDataException("اختلال در کارگاه"); + } + + public void OnGet() + { + } + + public async Task OnGetClientRejectedDocumentForClient() + { + var currentAccountId = _authHelper.CurrentAccountId(); + var resultData = await _employeeDocumentsApplication.GetClientRejectedDocumentForClient(_workshopId, currentAccountId); + return new JsonResult(new + { + success = true, + data = resultData, + }); + } + + public IActionResult OnGetCreateUploadDocument(long employeeId) + { + var employeeDocument = _employeeDocumentsApplication.GetDetailsForClient(employeeId, _workshopId); + + return Partial("./ModalUploadDocument", employeeDocument); + } + + public IActionResult OnPostCreateUploadDocument(AddEmployeeDocumentItem command) + { + command.WorkshopId = _workshopId; + + var result = _employeeDocumentsApplication.AddEmployeeDocumentItemForClient(command); + var employeeDocument = _employeeDocumentsApplication.GetDetailsForClient(command.EmployeeId, _workshopId); + return new JsonResult(new + { + isSuccedded = result.IsSuccedded, + message = result.Message, + imageSrc = employeeDocument + }); + } + + public IActionResult OnPostRemoveEmployeeDocumentByLabel(long employeeId, DocumentItemLabel label) + { + var result = _employeeDocumentsApplication.DeleteEmployeeMultipleUnsubmittedDocumentsByLabel(_workshopId, employeeId, + label); + return new JsonResult(new + { + isSuccedded = result.IsSuccedded, + message = result.Message + }); + } + + public IActionResult OnPostSaveSubmit(SubmitEmployeeDocuments cmd) + { + var result = _employeeDocumentsApplication.SubmitDocumentItemsByClient(cmd); + + return new JsonResult(new + { + isSuccedded = result.IsSuccedded, + message = result.Message, + }); + } + + public IActionResult OnPostCancelOperation(long employeeId) + { + var result = _employeeDocumentsApplication.DeleteUnsubmittedItems(_workshopId, employeeId); + return new JsonResult(new + { + success = result.IsSuccedded, + message = result.Message, + }); + } + + public IActionResult OnGetShowPicture(string filePath) + { + if (string.IsNullOrEmpty(filePath)) + return NotFound(); + + + if (!System.IO.File.Exists(filePath)) + return NotFound(); + + var contentType = Tools.GetContentTypeImage(Path.GetExtension(filePath)); + return PhysicalFile(filePath, contentType); + } + + public IActionResult OnPostGroupSave(long employeeId, List command) + { + var result = _employeeDocumentsApplication.AddRangeEmployeeDocumentItemsByClient(_workshopId, employeeId, command); + + return new JsonResult(new + { + isSuccedded = result.IsSuccedded, + message = result.Message, + }); + } + } +} diff --git a/ServiceHost/Areas/Client/Pages/Company/WorkFlow/EmployeeDocuments/ModalUploadDocument.cshtml b/ServiceHost/Areas/Client/Pages/Company/WorkFlow/EmployeeDocuments/ModalUploadDocument.cshtml new file mode 100644 index 00000000..9d784ac6 --- /dev/null +++ b/ServiceHost/Areas/Client/Pages/Company/WorkFlow/EmployeeDocuments/ModalUploadDocument.cshtml @@ -0,0 +1,349 @@ +@using System.Reflection +@using CompanyManagment.App.Contracts.EmployeeDocuments +@using Microsoft.AspNetCore.Mvc.TagHelpers +@model CompanyManagment.App.Contracts.EmployeeDocuments.EmployeeDocumentsViewModel + +@{ + string clientVersion = _0_Framework.Application.Version.StyleVersion; + +} + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/ServiceHost/Areas/Client/Pages/Company/WorkFlow/Index.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/WorkFlow/Index.cshtml.cs index c0892050..4952f7c2 100644 --- a/ServiceHost/Areas/Client/Pages/Company/WorkFlow/Index.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/WorkFlow/Index.cshtml.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using System.Security.Claims; using _0_Framework.Infrastructure; +using CompanyManagment.App.Contracts.EmployeeDocuments; using WorkFlow.Application.Contracts.WorkFlow; namespace ServiceHost.Areas.Client.Pages.Company.WorkFlow @@ -18,6 +19,7 @@ namespace ServiceHost.Areas.Client.Pages.Company.WorkFlow private readonly IPasswordHasher _passwordHasher; private readonly IWorkshopApplication _workshopApplication; private readonly IWorkFlowApplication _workFlowApplication; + private readonly IEmployeeDocumentsApplication _employeeDocumentsApplication; private readonly IRollCallServiceApplication _rollCallServiceApplication; private readonly IHttpContextAccessor _contextAccessor; private readonly long _workshopId; @@ -26,7 +28,7 @@ namespace ServiceHost.Areas.Client.Pages.Company.WorkFlow public int CountRollCall; public bool HasRollCallService; - public IndexModel(IPasswordHasher passwordHasher, IWorkshopApplication workshopApplication, IWorkFlowApplication workFlowApplication, IAuthHelper authHelper, IRollCallServiceApplication rollCallServiceApplication, IHttpContextAccessor contextAccessor) + public IndexModel(IPasswordHasher passwordHasher, IWorkshopApplication workshopApplication, IWorkFlowApplication workFlowApplication, IAuthHelper authHelper, IRollCallServiceApplication rollCallServiceApplication, IHttpContextAccessor contextAccessor, IEmployeeDocumentsApplication employeeDocumentsApplication) { _passwordHasher = passwordHasher; _workshopApplication = workshopApplication; @@ -34,6 +36,7 @@ namespace ServiceHost.Areas.Client.Pages.Company.WorkFlow _authHelper = authHelper; _rollCallServiceApplication = rollCallServiceApplication; _contextAccessor = contextAccessor; + _employeeDocumentsApplication = employeeDocumentsApplication; var workshopHash = _contextAccessor.HttpContext?.User.FindFirstValue("WorkshopSlug"); _workshopId = _passwordHasher.SlugDecrypt(workshopHash); @@ -52,25 +55,37 @@ namespace ServiceHost.Areas.Client.Pages.Company.WorkFlow return Page(); } - public async Task OnGetCountRollCall() + public async Task OnGetCountWorkFlowLayout(long accountId) + { + var currentAccountId = _authHelper.CurrentAccountId(); + int countWorkFlowResult = await _workFlowApplication.GetCountAllWorkFlows(_workshopId, currentAccountId); + + return new JsonResult(new + { + success = true, + countWorkFlow = countWorkFlowResult, + }); + } + + public async Task OnGetCountRollCall() { - var allWorkFlowCount = await _workFlowApplication.GetAllWorkFlowCount(_workshopId); + var allWorkFlowCount = await _workFlowApplication.GetAllRollCallCount(_workshopId); return new JsonResult(new { success = true, countWorkFlow = allWorkFlowCount, }); } - - - public async Task OnGetCountWorkFlowLayout() + + public async Task OnGetCountEmployeeDocuments() { - int countWorkFlowResult = await _workFlowApplication.GetCountAllWorkFlows(_workshopId); + var currentAccountId = _authHelper.CurrentAccountId(); + var allWorkFlowCount = await _workFlowApplication.GetAllEmployeeDocuments(_workshopId, currentAccountId); - return new JsonResult(new + return new JsonResult(new { success = true, - countWorkFlow = countWorkFlowResult, + countWorkFlow = allWorkFlowCount, }); } } diff --git a/ServiceHost/Areas/Client/Pages/Shared/_ClientLayout.cshtml b/ServiceHost/Areas/Client/Pages/Shared/_ClientLayout.cshtml index 48210f47..9fc3faae 100644 --- a/ServiceHost/Areas/Client/Pages/Shared/_ClientLayout.cshtml +++ b/ServiceHost/Areas/Client/Pages/Shared/_ClientLayout.cshtml @@ -358,6 +358,8 @@ $(document).ready(function () { _RefreshCountMenu(); + _RefreshCountRollCallMenu(); + _RefreshCountEmployeeDocumentsMenu(); $('input[type="text"], input[type="number"], textarea').each(function () { $(this).on('input', function () { var enteredValue = $(this).val(); @@ -388,17 +390,16 @@ success: function (response) { if (response.success) { if (response.countWorkFlow === 0) { - $('#_countWorkFlowMenu, #_countRollCallMenuSubmenu').hide(); - $('#spinnerWorkFlow, #spinnerRollCall').hide(); + $('#_countWorkFlowMenu').hide(); + $('#spinnerWorkFlow').hide(); $('#_countWorkFlowMenuMobile').hide(); $('#spinnerWorkFlowMobile').hide(); } else { - $('#_countWorkFlowMenu, #_countRollCallMenuSubmenu').css('display', 'flex'); - $('#spinnerWorkFlow, #spinnerRollCall').hide(); + $('#_countWorkFlowMenu').css('display', 'flex'); + $('#spinnerWorkFlow').hide(); $('#_countWorkFlowMenuMobile').show(); // $('#spinnerWorkFlowMobile').hide(); $('#_countWorkFlowMenu').text(response.countWorkFlow); - $('#_countRollCallMenuSubmenu').text(response.countWorkFlow); $('#_countWorkFlowMenuMobile').text(response.countWorkFlow); } } @@ -409,7 +410,53 @@ }); } + function _RefreshCountRollCallMenu() { + $.ajax({ + async: true, + dataType: 'json', + url: '/Client/Company/WorkFlow?handler=CountRollCall', + headers: { "RequestVerificationToken": antiForgeryTokenLayout }, + type: 'GET', + success: function (response) { + console.log(response); + if (response.success) { + $('#spinnerRollCall').hide(); + if (response.countWorkFlow === 0) { + $('#_countRollCallMenuSubmenu').hide(); + } else { + $('#_countRollCallMenuSubmenu').css('display', 'flex').text(response.countWorkFlow); + } + } + }, + error: function (xhr, status, error) { + console.error(xhr.responseText); + } + }); + } + function _RefreshCountEmployeeDocumentsMenu() { + $.ajax({ + async: true, + dataType: 'json', + url: '/Client/Company/WorkFlow?handler=CountEmployeeDocuments', + headers: { "RequestVerificationToken": antiForgeryTokenLayout }, + type: 'GET', + success: function (response) { + console.log(response); + if (response.success) { + $('#spinnerEmployeeDocuments').hide(); + if (response.countWorkFlow === 0) { + $('#_countEmployeeDocumentsMenuSubmenu').hide(); + } else { + $('#_countEmployeeDocumentsMenuSubmenu').css('display', 'flex').text(response.countWorkFlow); + } + } + }, + error: function (xhr, status, error) { + console.error(xhr.responseText); + } + }); + } // Override the global fetch function to handle errors // const originalErrorHandler = $.ajaxSetup().error; diff --git a/ServiceHost/Areas/Client/Pages/Shared/_Menu.cshtml b/ServiceHost/Areas/Client/Pages/Shared/_Menu.cshtml index bb014ee4..02e9cf80 100644 --- a/ServiceHost/Areas/Client/Pages/Shared/_Menu.cshtml +++ b/ServiceHost/Areas/Client/Pages/Shared/_Menu.cshtml @@ -229,11 +229,24 @@
    Loading...
    - +
    - @*
  • قرارداد و فیش حقوقی
  • + +
  • + + بارگزاری مدارک پرسنل + +
    +
    + Loading... +
    + +
    +
    +
  • + @*
  • قرارداد و فیش حقوقی
  • بیمه
  • *@ diff --git a/ServiceHost/Storage/EmployeeDocuments/Rejected/170/42821/EmployeePicture-1404-2-15-652859999124-thumbnail.jpg b/ServiceHost/Storage/EmployeeDocuments/Rejected/170/42821/EmployeePicture-1404-2-15-652859999124-thumbnail.jpg new file mode 100644 index 00000000..fca0edf8 Binary files /dev/null and b/ServiceHost/Storage/EmployeeDocuments/Rejected/170/42821/EmployeePicture-1404-2-15-652859999124-thumbnail.jpg differ diff --git a/ServiceHost/Storage/EmployeeDocuments/Rejected/170/42821/EmployeePicture-1404-2-15-652859999124.jpg b/ServiceHost/Storage/EmployeeDocuments/Rejected/170/42821/EmployeePicture-1404-2-15-652859999124.jpg new file mode 100644 index 00000000..7a6766d1 Binary files /dev/null and b/ServiceHost/Storage/EmployeeDocuments/Rejected/170/42821/EmployeePicture-1404-2-15-652859999124.jpg differ diff --git a/ServiceHost/Storage/EmployeeDocuments/temp/170/42821/EmployeePicture-1404-2-15-653376702858-thumbnail.jpg b/ServiceHost/Storage/EmployeeDocuments/temp/170/42821/EmployeePicture-1404-2-15-653376702858-thumbnail.jpg new file mode 100644 index 00000000..fca0edf8 Binary files /dev/null and b/ServiceHost/Storage/EmployeeDocuments/temp/170/42821/EmployeePicture-1404-2-15-653376702858-thumbnail.jpg differ diff --git a/ServiceHost/Storage/EmployeeDocuments/temp/170/42821/EmployeePicture-1404-2-15-653376702858.jpg b/ServiceHost/Storage/EmployeeDocuments/temp/170/42821/EmployeePicture-1404-2-15-653376702858.jpg new file mode 100644 index 00000000..7a6766d1 Binary files /dev/null and b/ServiceHost/Storage/EmployeeDocuments/temp/170/42821/EmployeePicture-1404-2-15-653376702858.jpg differ diff --git a/ServiceHost/Storage/EmployeeDocuments/temp/572/43228/EmployeePicture-1404-2-15-650997942264-thumbnail.jpg b/ServiceHost/Storage/EmployeeDocuments/temp/572/43228/EmployeePicture-1404-2-15-650997942264-thumbnail.jpg new file mode 100644 index 00000000..fca0edf8 Binary files /dev/null and b/ServiceHost/Storage/EmployeeDocuments/temp/572/43228/EmployeePicture-1404-2-15-650997942264-thumbnail.jpg differ diff --git a/ServiceHost/Storage/EmployeeDocuments/temp/572/43228/EmployeePicture-1404-2-15-650997942264.jpg b/ServiceHost/Storage/EmployeeDocuments/temp/572/43228/EmployeePicture-1404-2-15-650997942264.jpg new file mode 100644 index 00000000..7a6766d1 Binary files /dev/null and b/ServiceHost/Storage/EmployeeDocuments/temp/572/43228/EmployeePicture-1404-2-15-650997942264.jpg differ diff --git a/ServiceHost/Storage/EmployeeDocuments/temp/572/43228/NationalCardFront-1404-2-15-651445927927-thumbnail.jpg b/ServiceHost/Storage/EmployeeDocuments/temp/572/43228/NationalCardFront-1404-2-15-651445927927-thumbnail.jpg new file mode 100644 index 00000000..fca0edf8 Binary files /dev/null and b/ServiceHost/Storage/EmployeeDocuments/temp/572/43228/NationalCardFront-1404-2-15-651445927927-thumbnail.jpg differ diff --git a/ServiceHost/Storage/EmployeeDocuments/temp/572/43228/NationalCardFront-1404-2-15-651445927927.jpg b/ServiceHost/Storage/EmployeeDocuments/temp/572/43228/NationalCardFront-1404-2-15-651445927927.jpg new file mode 100644 index 00000000..7a6766d1 Binary files /dev/null and b/ServiceHost/Storage/EmployeeDocuments/temp/572/43228/NationalCardFront-1404-2-15-651445927927.jpg differ diff --git a/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/css/ModalPrintSelectionUploadDocument.css b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/css/ModalPrintSelectionUploadDocument.css new file mode 100644 index 00000000..3166a365 --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/css/ModalPrintSelectionUploadDocument.css @@ -0,0 +1,156 @@ +.errored { + animation: shake 300ms; + color: #eb3434 !important; + background-color: #fef2f2 !important; + border: 1px solid #eb3434 !important; +} + +.pdBoxGrid { + user-select: none; + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + grid-template-rows: repeat(4, minmax(0, 1fr)); + grid-auto-flow: column; + gap: 9px; +} + +.width-btn { + width: 550px; + margin: auto; +} + +.btn-register { + font-size: 14px; + font-weight: 500; + background-color: #84CC16; + color: #FFFFFF; + border-radius: 8px; + padding: 10px 70px; +} + +.btn-cancel2 { + font-size: 14px; + font-weight: 500; + background-color: #454D5C; + color: #FFFFFF; + border-radius: 8px; + padding: 10px 70px; +} + +.btn-register:hover, btn-cancel2:hover { + opacity: .7; +} + +.pdBox { + background-color: #F8F8F8; + border-radius: 15px; + border: 1px solid #E7E7E7; + width: 100%; + position: relative; + display: flex; + align-items: center; + justify-content: space-between; + padding: 12px; + overflow: hidden; +} + +.preview-image { + object-fit: cover; + object-position: center; + width: 100%; + height: 100%; + border-radius: 5px; +} + +.pdImageBox { + background-color: #E6E6E6; + border-radius: 6px; + border: 1px solid #D3D3D3; + width: 100px; + height: 60px; + text-align: center; + position: relative; + display: flex; + justify-content: center; + align-items: center; +} + +.selectable-document { + border-radius: 8px; + padding: 10px; + cursor: pointer; + position: relative; + transition: all 0.2s ease; +} + +.selectable-document.selected { + border-color: #2BBABA; + background-color: #D0FFF7; +} + +.hidden-checkbox { + display: none; +} + +.custom-checkmark { + width: 20px; + height: 20px; + border: 2px solid #ccc; + border-radius: 50%; + background-color: white; + transition: all 0.2s ease; +} + +.selectable-document.selected .custom-checkmark { + background-color: #4CAF50; + border-color: #4CAF50; +} + +.selectable-document.selected .custom-checkmark::after { + content: ""; + display: flex; + width: 5px; + height: 10px; + border: solid white; + border-top-width: medium; + border-right-width: medium; + border-bottom-width: medium; + border-left-width: medium; + border-width: 0 2px 2px 0; + transform: rotate(45deg); + align-items: center; + justify-content: center; + margin: 2px 5px 0 0; +} + +@media (max-width: 992px) { + .width-btn { + width: auto; + } + + .pdBoxGrid { + grid-template-columns: repeat(1, minmax(0, 1fr)); + grid-template-rows: none; + grid-auto-flow: unset; + } +} + +@media (max-width: 768px) { + .modal-body { + height: 75vh; + } + + .pdBox { + padding: 9px; + } + + .pdImageBox { + width: 70px; + height: 40px; + } + + .pdImageBox img { + width: 70px; + height: 40px; + } +} \ No newline at end of file diff --git a/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/css/ModalPrintSingleUploadDocument.css b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/css/ModalPrintSingleUploadDocument.css new file mode 100644 index 00000000..d943133d --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/css/ModalPrintSingleUploadDocument.css @@ -0,0 +1,55 @@ +.errored { + animation: shake 300ms; + color: #eb3434 !important; + background-color: #fef2f2 !important; + border: 1px solid #eb3434 !important; +} + +.image-show { + width: 100%; +} + +.image-show img { + width: 100%; + object-fit: contain; + height: 350px; + background-color: #D9D9D9; + border-radius: 10px; +} + +.width-btn { + width: 550px; + margin: auto; +} + +.btn-register { + font-size: 14px; + font-weight: 500; + background-color: #84CC16; + color: #FFFFFF; + border-radius: 8px; + padding: 10px 70px; +} + +.btn-cancel2 { + font-size: 14px; + font-weight: 500; + background-color: #454D5C; + color: #FFFFFF; + border-radius: 8px; + padding: 10px 70px; +} + +.btn-register:hover, btn-cancel2:hover { + opacity: .7; +} + +@media (max-width: 992px) { + .width-btn { + width: auto; + } +} + +@media (max-width: 768px) { + +} \ No newline at end of file diff --git a/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/js/EmployeeList.js b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/js/EmployeeList.js index 3eb7d49c..9c1bf317 100644 --- a/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/js/EmployeeList.js +++ b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/js/EmployeeList.js @@ -130,7 +130,7 @@ function loadPersonnelDocuments(mode, searchName) { html += ``; } html += `
    -
    ${item.employeeFullName}
    +
    ${item.employeeFullName}
    @@ -148,49 +148,48 @@ function loadPersonnelDocuments(mode, searchName) {
    `; if (item.nationalCardFront.picturePath && (item.nationalCardFront.statusString !== "unsubmitted" && item.nationalCardFront.statusString !== "rejected")) { - html += `
    `; + html += `
    `; } else { html += `
    `; } if (item.nationalCardRear.picturePath) { - html += `
    `; + html += `
    `; } else { html += `
    `; } html += `
    -
    -
    `; +
    `; if (item.militaryServiceCard.picturePath && (item.militaryServiceCard.statusString !== "unsubmitted" && item.militaryServiceCard.statusString !== "rejected")) { - html += ``; + html += `
    `; } else { - html += ``; + html += `
    `; } - html += `
    + html += `
    `; if (item.idCardPage1.picturePath && (item.idCardPage1.statusString !== "unsubmitted" && item.idCardPage1.statusString !== "rejected")) { - html += `
    `; + html += `
    `; } else { html += `
    `; } if (item.idCardPage2.picturePath && (item.idCardPage2.statusString !== "unsubmitted" && item.idCardPage2.statusString !== "rejected")) { - html += `
    `; + html += `
    `; } else { html += `
    `; } if (item.idCardPage3.picturePath && (item.idCardPage3.statusString !== "unsubmitted" && item.idCardPage3.statusString !== "rejected")) { - html += `
    `; + html += `
    `; } else { html += `
    `; } if (item.idCardPage4.picturePath && (item.idCardPage4.statusString !== "unsubmitted" && item.idCardPage4.statusString !== "rejected")) { - html += `
    `; + html += `
    `; } else { html += `
    `; } @@ -199,9 +198,17 @@ function loadPersonnelDocuments(mode, searchName) {
    -
    - +
    @@ -247,7 +254,7 @@ function loadPersonnelDocuments(mode, searchName) {
    `; if (item.nationalCardFront.picturePath && (item.nationalCardFront.statusString !== "unsubmitted" && item.nationalCardFront.statusString !== "rejected")) { - html += ``; + html += ``; } else { html += ``; } @@ -259,7 +266,7 @@ function loadPersonnelDocuments(mode, searchName) {
    `; if (item.nationalCardRear.picturePath && (item.nationalCardRear.statusString !== "unsubmitted" && item.nationalCardRear.statusString !== "rejected")) { - html += ``; + html += ``; } else { html += ``; } @@ -271,7 +278,7 @@ function loadPersonnelDocuments(mode, searchName) {
    `; if (item.militaryServiceCard.picturePath && (item.militaryServiceCard.statusString !== "unsubmitted" && item.militaryServiceCard.statusString !== "rejected")) { - html += ``; + html += ``; } else { html += ``; } @@ -283,7 +290,7 @@ function loadPersonnelDocuments(mode, searchName) {
    `; if (item.idCardPage1.picturePath && (item.idCardPage1.statusString !== "unsubmitted" && item.idCardPage1.statusString !== "rejected")) { - html += ``; + html += ``; } else { html += ``; } @@ -295,7 +302,7 @@ function loadPersonnelDocuments(mode, searchName) {
    `; if (item.idCardPage2.picturePath && (item.idCardPage2.statusString !== "unsubmitted" && item.idCardPage2.statusString !== "rejected")) { - html += ``; + html += ``; } else { html += ``; } @@ -307,7 +314,7 @@ function loadPersonnelDocuments(mode, searchName) {
    `; if (item.idCardPage3.picturePath && (item.idCardPage3.statusString !== "unsubmitted" && item.idCardPage3.statusString !== "rejected")) { - html += ``; + html += ``; } else { html += ``; } @@ -319,7 +326,7 @@ function loadPersonnelDocuments(mode, searchName) {
    `; if (item.idCardPage4.picturePath && (item.idCardPage4.statusString !== "unsubmitted" && item.idCardPage4.statusString !== "rejected")) { - html += ``; + html += ``; } else { html += ``; } @@ -328,15 +335,29 @@ function loadPersonnelDocuments(mode, searchName) {
    - -
    + +
    +
    + +
    +
    +
    @@ -368,7 +389,6 @@ function loadPersonnelDocuments(mode, searchName) { } } - function openPersonnelDocsUploadModal(id) { var goTo = `#showmodal=/AdminNew/Company/EmployeesDocuments/EmployeeList?workshopId=${workshopId}&employeeId=${id}&handler=CreateUploadDocument`; window.location.href = goTo; @@ -381,4 +401,14 @@ function checkImage() { $(this).addClass('highlighted-border'); } }); +} + +function displayPrintSelectionModal(employeeId) { + var goTo = `#showmodal=/AdminNew/Company/EmployeesDocuments/EmployeeList?workshopId=${workshopId}&employeeId=${employeeId}&handler=PrintSelectionUploadDocument`; + window.location.href = goTo; +} + +function openSinglePrint(employeeId, mediaId) { + var goTo = `/AdminNew/Company/EmployeesDocuments/EmployeeList?workshopId=${workshopId}&employeeId=${employeeId}&mediaId=${mediaId}&handler=PrintSingleUploadDocument`; + AjaxUrlContentModal(goTo); } \ No newline at end of file diff --git a/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/js/ModalPrintSelectionUploadDocument.js b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/js/ModalPrintSelectionUploadDocument.js new file mode 100644 index 00000000..eb6c6be3 --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/js/ModalPrintSelectionUploadDocument.js @@ -0,0 +1,35 @@ +var selectedDocumentIds = []; + +$(document).ready(function () { + +}); + +function toggleDocumentBox(el) { + const docId = Number(el.dataset.id); + const docName = el.dataset.name; + const isSelected = el.classList.toggle('selected'); + + if (isSelected) { + if (!selectedDocumentIds.includes(docId)) { + selectedDocumentIds.push({ mediaId: docId, name: docName }); + } + } else { + selectedDocumentIds = selectedDocumentIds.filter(id => id.mediaId !== docId); + } + + //console.log("Selected IDs:", selectedDocumentIds); +} + +function openModalPrint() { + //let selectedArray = []; + //$('.pdBox.selected').each(function () { + // var id = $(this).data("id"); + // selectedArray.push(id); + //}); + + var goTo = `/AdminNew/Company/EmployeesDocuments/EmployeeList?handler=PrintSelectionUD`; + selectedDocumentIds.forEach(function(item) { + goTo += `&ids=${item.mediaId}`; + }); + AjaxUrlContentModal(goTo); +} diff --git a/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/js/ModalPrintSingleUploadDocument.js b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/js/ModalPrintSingleUploadDocument.js new file mode 100644 index 00000000..31737b5d --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/js/ModalPrintSingleUploadDocument.js @@ -0,0 +1,9 @@ +$(document).ready(function () { + $("#EmployeeFullNameModalSinglePrint").text($("#EmployeeFullName").text()); + +}); + +function openModalPrint(id) { + var goTo = `/AdminNew/Company/EmployeesDocuments/EmployeeList?id=${id}&handler=PrintSingleUD`; + AjaxUrlContentModal(goTo); +} \ No newline at end of file diff --git a/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/js/ModalUploadDocument.js b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/js/ModalUploadDocument.js index 300cda93..2b2fb779 100644 --- a/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/js/ModalUploadDocument.js +++ b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/js/ModalUploadDocument.js @@ -7,25 +7,14 @@ var idCardPage2; var idCardPage3; var idCardPage4; var uploadFileCount = UploadedCount; +var command = []; var pendingMessage = `
    بررسی
    `; -var pendingIcon = ` - - - - - `; +var pendingIcon = ``; var confirmMessage = `
    تایید
    `; -var confirmIcon = ` - - - `; +var confirmIcon = ``; var rejectMessage = `
    رد شده
    `; -var rejectIcon = ` - - - - `; +var rejectIcon = ``; $(document).ready(function () { @@ -45,6 +34,7 @@ $(document).ready(function () { return; } }); + $(document).off('click', '.btnUploadingPD').on('click', '.btnUploadingPD', function (event) { event.preventDefault(); const index = $(this).data('index'); @@ -89,20 +79,57 @@ $(document).ready(function () { const validPdfExtensions = ['pdf']; const label = $(`#label_${indexFileValue}`).val(); + const pdBox = $(this).closest('.pdBox'); + const img = pdBox.find('.preview-image'); + var deleteButton = pdBox.find('.btnDeletingPD'); if (fileInputFile) { const fileName = fileInputFile.name.toLowerCase(); const extension = fileName.split('.').pop(); + // بررسی فرمت‌های تصویر (jpeg, jpg, png) if (validExtensions.includes(extension)) { if (fileInputFile.size > 5000000) { showAlertMessage('.alert-msg', 'لطفا فایل حجم کمتر از 5 مگابایت را آپلود کنید.', 3500); $(this).val(''); return; } - uploadFile(fileInputFile, indexFileValue, label); - } else if (validPdfExtensions.includes(extension)) { + const reader = new FileReader(); + reader.onload = function (event) { + img.attr('src', event.target.result); + + const base64String = event.target.result.split(',')[1]; + const byteCharacters = atob(base64String); + const byteNumbers = new Array(byteCharacters.length); + for (let i = 0; i < byteCharacters.length; i++) { + byteNumbers[i] = byteCharacters.charCodeAt(i); + } + const byteArray = new Uint8Array(byteNumbers); + const blob = new Blob([byteArray], { type: fileInputFile.type }); + const newFile = new File([blob], fileInputFile.name, { type: fileInputFile.type }); + + let existingIndex = command.findIndex(item => item.Label === label); + if (existingIndex !== -1) { + command[existingIndex].PictureFile = newFile; + } else { + let picturesPart = { + Label: label, + PictureFile: newFile + }; + command.push(picturesPart); + } + }; + + reader.readAsDataURL(fileInputFile); + $('#createUploadingFiles').prop('disabled', false).removeClass('disable'); + + pdBox.removeClass(); + pdBox.addClass('pdBox'); + + showLoadingAnimation(indexFileValue); + } + else if (validPdfExtensions.includes(extension)) { var fileReader = new FileReader(); fileReader.onload = function () { @@ -115,7 +142,7 @@ $(document).ready(function () { return; } - pdf.getPage(1).then(function (page) { // فقط صفحه اول پردازش می‌شود + pdf.getPage(1).then(function (page) { var scale = 2.0; var viewport = page.getViewport({ scale: scale }); @@ -130,13 +157,13 @@ $(document).ready(function () { page.render({ canvasContext: context, viewport: viewport - }) - .promise.then(function () { - uploadCanvasAsFile(canvas, `${label}_${indexFileValue}.jpg`, indexFileValue, label); - }) - .catch(function (error) { - showAlertMessage('.alert-msg', 'مشکلی در پردازش PDF رخ داده است!', 3500); - }); + }).promise.then(function () { + pdBox.removeClass(); + pdBox.addClass('pdBox'); + uploadCanvasAsFile(canvas, `${label}_${indexFileValue}.jpg`, indexFileValue, label); + }).catch(function (error) { + showAlertMessage('.alert-msg', 'مشکلی در پردازش PDF رخ داده است!', 3500); + }); }).catch(function (error) { showAlertMessage('.alert-msg', 'خطا در دریافت صفحه PDF!', 3500); }); @@ -148,12 +175,152 @@ $(document).ready(function () { fileReader.readAsArrayBuffer(fileInputFile); - } else { - showAlertMessage('.alert-msg', 'فرمت فایل باید یکی از موارد jpeg, jpg یا png باشد.', 3500); + } + else { + showAlertMessage('.alert-msg', 'فرمت فایل باید یکی از موارد jpeg, jpg, png یا pdf باشد.', 3500); + return; + } + + deleteButton.removeClass('disable'); + if (pdBox.find('button.Rejected').length > 0) { + pdBox.find(".btnSendToChecker").removeClass("disable"); } } }); + //$(document).off('change', '.file-input').on('change', '.file-input', function (e) { + // e.preventDefault(); + + // const fileInputFile = this.files[0]; + // const indexFileValue = $(this).data('index'); + // const validExtensions = ['jpg', 'jpeg', 'png']; + + // const label = $(`#label_${indexFileValue}`).val(); + // const pdBox = $(this).closest('.pdBox'); + // const img = pdBox.find('.preview-image'); + + // if (fileInputFile) { + // const fileName = fileInputFile.name.toLowerCase(); + // const extension = fileName.split('.').pop(); + + // if (validExtensions.includes(extension)) { + // if (fileInputFile.size > 5000000) { + // showAlertMessage('.alert-msg', 'لطفا فایل حجم کمتر از 5 مگابایت را آپلود کنید.', 3500); + // $(this).val(''); + // return; + // } + + // // خواندن فایل و نمایش آن + // const reader = new FileReader(); + // reader.onload = function (event) { + // img.attr('src', event.target.result); + + // const base64String = event.target.result.split(',')[1]; + // const byteCharacters = atob(base64String); + // const byteNumbers = new Array(byteCharacters.length); + // for (let i = 0; i < byteCharacters.length; i++) { + // byteNumbers[i] = byteCharacters.charCodeAt(i); + // } + // const byteArray = new Uint8Array(byteNumbers); + // const blob = new Blob([byteArray], { type: fileInputFile.type }); + // const newFile = new File([blob], fileInputFile.name, { type: fileInputFile.type }); + + // let picturesPart = { + // Label: label, + // PictureFile: newFile + // }; + // pictures.push(picturesPart); + // }; + + // reader.readAsDataURL(fileInputFile); + + // //uploadFile(fileInputFile, indexFileValue, label); + // } else { + // showAlertMessage('.alert-msg', 'فرمت فایل باید یکی از موارد jpeg, jpg یا png باشد.', 3500); + // } + // } + + // console.log(pictures); + //}); + + + + + + //$(document).off('change', '.file-input').on('change', '.file-input', function (e) { + // e.preventDefault(); + + // const fileInputFile = this.files[0]; + // const indexFileValue = $(this).data('index'); + // const validExtensions = ['jpg', 'jpeg', 'png']; + // const validPdfExtensions = ['pdf']; + + // const label = $(`#label_${indexFileValue}`).val(); + + // if (fileInputFile) { + // const fileName = fileInputFile.name.toLowerCase(); + // const extension = fileName.split('.').pop(); + + // if (validExtensions.includes(extension)) { + // if (fileInputFile.size > 5000000) { + // showAlertMessage('.alert-msg', 'لطفا فایل حجم کمتر از 5 مگابایت را آپلود کنید.', 3500); + // $(this).val(''); + // return; + // } + // uploadFile(fileInputFile, indexFileValue, label); + // } else if (validPdfExtensions.includes(extension)) { + + // var fileReader = new FileReader(); + + // fileReader.onload = function () { + // var typedarray = new Uint8Array(this.result); + // pdfjsLib.getDocument(typedarray).promise.then(function (pdf) { + // totalPageCount = pdf.numPages; + + // if (totalPageCount > 1) { + // showAlertMessage('.alert-msg', 'آپلود مجاز نیست! تعداد صفحات نباید بیشتر از ۱ باشد.', 3500); + // return; + // } + + // pdf.getPage(1).then(function (page) { // فقط صفحه اول پردازش می‌شود + // var scale = 2.0; + // var viewport = page.getViewport({ scale: scale }); + + // var canvas = document.createElement("canvas"); + // canvas.className = "page"; + // canvas.title = "Page 1"; + // canvas.height = viewport.height; + // canvas.width = viewport.width; + + // var context = canvas.getContext("2d"); + + // page.render({ + // canvasContext: context, + // viewport: viewport + // }) + // .promise.then(function () { + // uploadCanvasAsFile(canvas, `${label}_${indexFileValue}.jpg`, indexFileValue, label); + // }) + // .catch(function (error) { + // showAlertMessage('.alert-msg', 'مشکلی در پردازش PDF رخ داده است!', 3500); + // }); + // }).catch(function (error) { + // showAlertMessage('.alert-msg', 'خطا در دریافت صفحه PDF!', 3500); + // }); + + // }).catch(function (error) { + // showAlertMessage('.alert-msg', 'خطا در بارگذاری فایل PDF!', 3500); + // }); + // }; + + // fileReader.readAsArrayBuffer(fileInputFile); + + // } else { + // showAlertMessage('.alert-msg', 'فرمت فایل باید یکی از موارد jpeg, jpg یا png باشد.', 3500); + // } + // } + //}); + $(document).off('click', '.btnDeletingPD').on('click', '.btnDeletingPD', function (event) { event.preventDefault(); const indexId = $(this).data('index'); @@ -222,6 +389,57 @@ function cancelOperation() { }); } +var indexCount = 0; +var activeUploads = 0; +function showLoadingAnimation(indexId) { + uploadFileCount = uploadFileCount + 1; + + //const pdBox = $('input[data-index="' + indexId + '"]').closest('.pdBox'); + //const spinner = pdBox.find('.spinner-loading-progress'); + //const percentageText = pdBox.find('.percentageText'); + + //spinner.show(); + //activeUploads++; + //$('#createUploadingFiles').prop('disabled', true).addClass('disable'); + + //let simulatedProgress = 0; + //const progressInterval = setInterval(function () { + // if (simulatedProgress < 100) { + // simulatedProgress += 2; + // spinner.css('width', `${simulatedProgress}%`); + // percentageText.text(`${simulatedProgress}%`); + // } + + // if (simulatedProgress >= 100) { + // clearInterval(progressInterval); + // } + //}, 30); + + //setTimeout(function () { + // clearInterval(progressInterval); + // spinner.css('width', '100%'); + // percentageText.text('100%'); + + // spinner.hide(); + // spinner.css('width', '0%'); + // handleActiveUploads(); + //}, 2300); +} + +//function uploadCanvasAsFile(canvas, fileName, indexFileValue, label) { +// canvas.toBlob(function (blob) { +// if (!blob) { +// showAlertMessage('.alert-msg', 'مشکلی در تبدیل تصویر رخ داده است!', 3500); +// return; +// } + +// let file = new File([blob], fileName, { type: 'image/png' }); + +// uploadFile(file, indexFileValue, label); + +// }, "image/png"); +//} + function uploadCanvasAsFile(canvas, fileName, indexFileValue, label) { canvas.toBlob(function (blob) { if (!blob) { @@ -230,145 +448,161 @@ function uploadCanvasAsFile(canvas, fileName, indexFileValue, label) { } let file = new File([blob], fileName, { type: 'image/png' }); + const imageUrl = URL.createObjectURL(blob); - uploadFile(file, indexFileValue, label); + const img = $(`#${label}`); + img.attr('src', imageUrl); + + let existingIndex = command.findIndex(item => item.Label === label); + if (existingIndex !== -1) { + command[existingIndex].PictureFile = file; + } else { + let picturesPart = { + Label: label, + PictureFile: file + }; + command.push(picturesPart); + } + + $('#createUploadingFiles').prop('disabled', false).removeClass('disable'); + showLoadingAnimation(indexFileValue); }, "image/png"); } -var indexCount = 0; -var activeUploads = 0; -function uploadFile(file, indexId, label) { - const formData = new FormData(); - formData.append('command.EmployeeId', employeeId); - formData.append('command.WorkshopId', workshopId); - formData.append('command.Label', label); - formData.append('command.PictureFile', file); +//var indexCount = 0; +//var activeUploads = 0; +//function uploadFile(file, indexId, label) { +// const formData = new FormData(); +// formData.append('command.EmployeeId', employeeId); +// formData.append('command.WorkshopId', workshopId); +// formData.append('command.Label', label); +// formData.append('command.PictureFile', file); - const pdBox = $('input[data-index="' + indexId + '"]').closest('.pdBox'); - const spinner = pdBox.find('.spinner-loading-progress'); +// const pdBox = $('input[data-index="' + indexId + '"]').closest('.pdBox'); +// const spinner = pdBox.find('.spinner-loading-progress'); - const percentageText = pdBox.find('.percentageText'); +// const percentageText = pdBox.find('.percentageText'); - spinner.show(); - activeUploads++; - $('#createUploadingFiles').prop('disabled', true).addClass('disable'); +// spinner.show(); +// activeUploads++; +// $('#createUploadingFiles').prop('disabled', true).addClass('disable'); - const xhr = new XMLHttpRequest(); - xhr.open('POST', saveUploadFileModalAjax, true); - xhr.setRequestHeader('RequestVerificationToken', antiForgeryToken); +// const xhr = new XMLHttpRequest(); +// xhr.open('POST', saveUploadFileModalAjax, true); +// xhr.setRequestHeader('RequestVerificationToken', antiForgeryToken); - const uploadStartTime = new Date().getTime(); - let simulatedProgress = 0; - let actualProgress = 0; - let isUploadComplete = false; +// const uploadStartTime = new Date().getTime(); +// let simulatedProgress = 0; +// let actualProgress = 0; +// let isUploadComplete = false; - // Simulate progress every 20ms, gradually increasing the bar until the actual progress is reached - const progressInterval = setInterval(function () { - if (simulatedProgress < actualProgress && !isUploadComplete) { - simulatedProgress += 1; // Gradually increase simulated progress - spinner.css('width', `${simulatedProgress}%`); - percentageText.text(`${simulatedProgress}%`); - } +// // Simulate progress every 20ms, gradually increasing the bar until the actual progress is reached +// const progressInterval = setInterval(function () { +// if (simulatedProgress < actualProgress && !isUploadComplete) { +// simulatedProgress += 1; // Gradually increase simulated progress +// spinner.css('width', `${simulatedProgress}%`); +// percentageText.text(`${simulatedProgress}%`); +// } - if (simulatedProgress >= 100) { - clearInterval(progressInterval); // Stop once the progress hits 100% - } - }, 30); // Increases by 1% every 20ms, making it smooth +// if (simulatedProgress >= 100) { +// clearInterval(progressInterval); // Stop once the progress hits 100% +// } +// }, 30); // Increases by 1% every 20ms, making it smooth - // Actual upload progress listener - xhr.upload.addEventListener('progress', function (e) { - if (e.lengthComputable) { - actualProgress = Math.round((e.loaded / e.total) * 100); +// // Actual upload progress listener +// xhr.upload.addEventListener('progress', function (e) { +// if (e.lengthComputable) { +// actualProgress = Math.round((e.loaded / e.total) * 100); - // If the actual progress is slow, allow the simulated progress to match it naturally - if (actualProgress >= simulatedProgress) { - simulatedProgress = actualProgress; - spinner.css('width', `${simulatedProgress}%`); - percentageText.text(`${simulatedProgress}%`); - } - } - }); +// // If the actual progress is slow, allow the simulated progress to match it naturally +// if (actualProgress >= simulatedProgress) { +// simulatedProgress = actualProgress; +// spinner.css('width', `${simulatedProgress}%`); +// percentageText.text(`${simulatedProgress}%`); +// } +// } +// }); - // On upload completion - xhr.onload = function () { - spinner.css('transition', 'all 2s ease-in'); - const uploadEndTime = new Date().getTime(); - const timeDiff = uploadEndTime - uploadStartTime; - const minUploadTime = 2500; // Minimum of 2 seconds for the whole process +// // On upload completion +// xhr.onload = function () { +// spinner.css('transition', 'all 2s ease-in'); +// const uploadEndTime = new Date().getTime(); +// const timeDiff = uploadEndTime - uploadStartTime; +// const minUploadTime = 2500; // Minimum of 2 seconds for the whole process - const response = JSON.parse(xhr.responseText); - isUploadComplete = true; // Mark the upload as complete - const delayTime = Math.max(minUploadTime - timeDiff, 0); +// const response = JSON.parse(xhr.responseText); +// isUploadComplete = true; // Mark the upload as complete +// const delayTime = Math.max(minUploadTime - timeDiff, 0); - setTimeout(function () { - clearInterval(progressInterval); // Clear the interval when done - simulatedProgress = 100; - spinner.css('width', '100%'); - percentageText.text('100%'); +// setTimeout(function () { +// clearInterval(progressInterval); // Clear the interval when done +// simulatedProgress = 100; +// spinner.css('width', '100%'); +// percentageText.text('100%'); - var id2 = $("#employeeIdForList").val(); +// var id2 = $("#employeeIdForList").val(); - if (xhr.status === 200 && response.isSuccedded) { - indexCount++; - const reader = new FileReader(); - reader.onload = function (e) { +// if (xhr.status === 200 && response.isSuccedded) { +// indexCount++; +// const reader = new FileReader(); +// reader.onload = function (e) { - uploadFileCount = uploadFileCount + 1; +// uploadFileCount = uploadFileCount + 1; - const pdBox = $('input[data-index="' + indexId + '"]').closest('.pdBox'); - const img = pdBox.find('.preview-image'); - img.attr('src', e.target.result); +// const pdBox = $('input[data-index="' + indexId + '"]').closest('.pdBox'); +// const img = pdBox.find('.preview-image'); +// img.attr('src', e.target.result); - //employeePicture = $('#EmployeePicture').attr('src'); - //nationalCardFront = $('#NationalCardFront').attr('src'); - //nationalCardRear = $('#NationalCardRear').attr('src'); - //militaryServiceCard = $('#MilitaryServiceCard').attr('src'); - //idCardPage1 = $('#IdCardPage1').attr('src'); - //idCardPage2 = $('#IdCardPage2').attr('src'); - //idCardPage3 = $('#IdCardPage3').attr('src'); - //idCardPage4 = $('#IdCardPage4').attr('src'); - //console.log(idCardPage2); +// //employeePicture = $('#EmployeePicture').attr('src'); +// //nationalCardFront = $('#NationalCardFront').attr('src'); +// //nationalCardRear = $('#NationalCardRear').attr('src'); +// //militaryServiceCard = $('#MilitaryServiceCard').attr('src'); +// //idCardPage1 = $('#IdCardPage1').attr('src'); +// //idCardPage2 = $('#IdCardPage2').attr('src'); +// //idCardPage3 = $('#IdCardPage3').attr('src'); +// //idCardPage4 = $('#IdCardPage4').attr('src'); +// //console.log(idCardPage2); - // updatePreviewImage(indexId, id2, e.target.result); +// // updatePreviewImage(indexId, id2, e.target.result); - }; +// }; - if (pdBox.hasClass("complete") || pdBox.hasClass("discomplete")) { +// if (pdBox.hasClass("complete") || pdBox.hasClass("discomplete")) { - pdBox.removeClass("discomplete complete"); - pdBox.find(".sign").removeClass("discompleteSign completeSign"); - pdBox.find(".sign").empty(); - pdBox.find(".btnDeletingPD").removeClass("Rejected Confirmed"); - pdBox.find("confirmedMessage ").remove(); - pdBox.find(".resultMessage").empty(); - } +// pdBox.removeClass("discomplete complete"); +// pdBox.find(".sign").removeClass("discompleteSign completeSign"); +// pdBox.find(".sign").empty(); +// pdBox.find(".btnDeletingPD").removeClass("Rejected Confirmed"); +// pdBox.find("confirmedMessage ").remove(); +// pdBox.find(".resultMessage").empty(); +// } - pdBox.find('.btnDeletingPD').removeClass('disable').addClass("Unsubmitted"); +// pdBox.find('.btnDeletingPD').removeClass('disable').addClass("Unsubmitted"); - reader.readAsDataURL(file); - } else { - showAlertMessage('.alert-msg', response.message || 'Error uploading file', 3500); - $('input[type="file"][data-index="' + indexId + '"]').val(''); - } - spinner.css('width', '0%'); // Reset the progress bar - spinner.hide(); - handleActiveUploads(); - }, delayTime); // Ensure a minimum of 2 seconds for the full process - }; +// reader.readAsDataURL(file); +// } else { +// showAlertMessage('.alert-msg', response.message || 'Error uploading file', 3500); +// $('input[type="file"][data-index="' + indexId + '"]').val(''); +// } +// spinner.css('width', '0%'); // Reset the progress bar +// spinner.hide(); +// handleActiveUploads(); +// }, delayTime); // Ensure a minimum of 2 seconds for the full process +// }; - // Handle upload error - xhr.onerror = function () { - clearInterval(progressInterval); // Stop progress on error - showAlertMessage('.alert-msg', 'مشکلی در آپلود فایل به وجود آمد.', 3500); - $('input[type="file"][data-index="' + indexId + '"]').val(''); - spinner.css('width', '0%'); - spinner.hide(); - handleActiveUploads(); - }; +// // Handle upload error +// xhr.onerror = function () { +// clearInterval(progressInterval); // Stop progress on error +// showAlertMessage('.alert-msg', 'مشکلی در آپلود فایل به وجود آمد.', 3500); +// $('input[type="file"][data-index="' + indexId + '"]').val(''); +// spinner.css('width', '0%'); +// spinner.hide(); +// handleActiveUploads(); +// }; - xhr.send(formData); -} +// xhr.send(formData); +//} function handleActiveUploads() { activeUploads--; @@ -452,18 +686,30 @@ function saveSubmit(id) { loading.show(); - var data = { - 'cmd.EmployeeDocumentsId': id - } + //var data = { + // 'cmd.EmployeeDocumentsId': id + //} + + var formData = new FormData(); + formData.append('workshopId', workshopId); + formData.append('employeeId', employeeId); + + command.forEach((item, index) => { + formData.append(`command[${index}].Label`, item.Label); + formData.append(`command[${index}].PictureFile`, item.PictureFile); + }); + $.ajax({ - url: saveSubmitAjax, + url: saveGroupSubmitAjax, method: 'POST', - data: data, + data: formData, + processData: false, + contentType: false, headers: { 'RequestVerificationToken': antiForgeryToken }, success: function (response) { loading.hide(); - if (response.isSuccedded) { + if (response.success) { var id2 = $("#employeeIdForList").val(); $(".pdBox").each(function () { diff --git a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/css/EmployeesDocuments.css b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/css/EmployeesDocuments.css index 544a23d4..3d339928 100644 --- a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/css/EmployeesDocuments.css +++ b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/css/EmployeesDocuments.css @@ -540,6 +540,22 @@ input:checked + .sliderEUP { transform: rotate(-90deg); } +.employee-workshop-header { + display: flex; + flex-direction: row; + align-items: start; + color: #ffffff; +} + +.employee-workshop-header > div { + text-overflow: ellipsis; + overflow: hidden; + width: 200px; + white-space: nowrap; + text-align: right; + font-size: 14px; +} + @media (max-width: 1366px) { #navbar-animmenu ul li a { font-size: 13px; @@ -559,6 +575,10 @@ input:checked + .sliderEUP { } @media (max-width: 767px) { + .employee-workshop-header { + flex-direction: column; + } + .Rtable--collapse .Rtable-row { outline: 1.8px solid #ddd !important; } diff --git a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/EmployeesDocuments.js b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/EmployeesDocuments.js index b4f1b907..9ce0b49a 100644 --- a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/EmployeesDocuments.js +++ b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/EmployeesDocuments.js @@ -1,21 +1,40 @@ var lengthMenu = 0; -var loadFunctionDocumentsAwaitingUpload = true; -var loadFunctionCut = true; -var loadFunctionLunchBreak = true; -var loadFunctionUndefined = true; -var loadFunctionOverlappingLeaves = true; +var loadFunctionWorkshopDocumentRejectedForAdmin = true; +var loadFunctionCreatedEmployeesWorkshopDocumentForAdmin = true; +var loadFunctionClientRejectedDocumentWorkshopsForAdmin = true; loadMenuAnime(); $(document).ready(function () { - //CountWorkFlowOfAbsentAndCut(); - loadWorkshopsWithDocumentsAwaitingUpload(); + CountWorkFlowUploadDocument(); + loadWorkshopDocumentRejectedForAdmin(); + loadClientRejectedDocumentWorkshopsForAdmin(); + loadCreatedEmployeesWorkshopDocumentForAdmin(); - $("#clickDocumentsAwaitingUploadTab").click(function () { - //$('.cutWorkFlowLists, .lunchBreakWorkFlowLists, .undefinedWorkFlowLists, .overlappingLeavesLists').fadeOut(200, function () { - // $('.DocumentsAwaitingUploadWorkFlowLists').fadeIn(200); - //}); - if (loadFunctionDocumentsAwaitingUpload) { - loadWorkshopsWithDocumentsAwaitingUpload(); + $("#clickWorkshopDocumentRejectedForAdminTab").click(function () { + $('.clientRejectedDocumentWorkshopsForAdminWorkFlowLists, .createdEmployeesWorkshopDocumentForAdminWorkFlowLists').fadeOut(200, function () { + $('.workshopDocumentRejectedForAdminWorkFlowLists').fadeIn(200); + }); + + if (loadFunctionWorkshopDocumentRejectedForAdmin) { + loadWorkshopDocumentRejectedForAdmin(); + } + }); + + $("#clickCreatedEmployeesWorkshopDocumentForAdminTab").click(function () { + $('.workshopDocumentRejectedForAdminWorkFlowLists, .clientRejectedDocumentWorkshopsForAdminWorkFlowLists').fadeOut(200, function () { + $('.createdEmployeesWorkshopDocumentForAdminWorkFlowLists').fadeIn(200); + }); + if (loadFunctionClientRejectedDocumentWorkshopsForAdmin) { + loadCreatedEmployeesWorkshopDocumentForAdmin(); + } + }); + + $("#clickClientRejectedDocumentWorkshopsForAdminTab").click(function () { + $('.workshopDocumentRejectedForAdminWorkFlowLists, .createdEmployeesWorkshopDocumentForAdminWorkFlowLists').fadeOut(200, function () { + $('.clientRejectedDocumentWorkshopsForAdminWorkFlowLists').fadeIn(200); + }); + if (loadFunctionCreatedEmployeesWorkshopDocumentForAdmin) { + loadClientRejectedDocumentWorkshopsForAdmin(); } }); }); @@ -105,8 +124,10 @@ $(document).on('click', ".openAction", function () { } }); -async function loadWorkshopsWithDocumentsAwaitingUpload() { - $('#CountDocumentsAwaitingUploadLoading').show(); + +//1 +async function loadWorkshopDocumentRejectedForAdmin() { + //$('#CountDocumentsAwaitingUploadLoading').show(); var mainIndexNum = 1; var html = ``; @@ -115,17 +136,17 @@ async function loadWorkshopsWithDocumentsAwaitingUpload() { contentType: 'charset=utf-8', dataType: 'json', type: 'GET', - url: loadWorkshopsWithDocumentsAwaitingUploadUrl, + url: loadWorkshopDocumentRejectedForAdminUrl, headers: { "RequestVerificationToken": antiForgeryToken }, success: function (response) { var data = response.data; - $('#loadingSkeletonDocumentsAwaitingUpload').hide(); - + $('#loadingSkeletonWorkshopDocumentRejectedForAdmin').hide(); + if (response.success) { if (data.length > 0) { data.forEach(function (item) { html += ` -
    +
    @@ -133,25 +154,15 @@ async function loadWorkshopsWithDocumentsAwaitingUpload() { ${mainIndexNum++}
    -
    +
    -
    -
    -
    - ${item.workshopName} -
    -
    -
    -
    - ${item.employerName} -
    -
    -
    -
    - ${item.uploadItemsCount} -
    +
    +
    +
    ${item.workshopFullName}
    +
    ${item.employerName}
    +
    ${item.employeesWithoutDocumentCount}
    @@ -181,8 +192,8 @@ async function loadWorkshopsWithDocumentsAwaitingUpload() {
    `; } - $('#loadDocumentsAwaitingUploadWorkFlow').html(html); - loadFunctionDocumentsAwaitingUpload = false; + $('#loadWorkshopDocumentRejectedForAdminWorkFlowLists').html(html); + loadFunctionWorkshopDocumentRejectedForAdmin = false; } }, failure: function (response) { @@ -191,14 +202,14 @@ async function loadWorkshopsWithDocumentsAwaitingUpload() { }); } -function loadByWorkshopIdWithItemsForAdminWorkFlow(id) { +function loadGetRejectedItemsByWorkshopIdAndRoleForAdminWorkFlow(id) { var html = ``; $.ajax({ async: false, contentType: 'charset=utf-8', dataType: 'json', type: 'GET', - url: loadByWorkshopIdWithItemsForAdminWorkFlowUrl, + url: loadGetRejectedItemsByWorkshopIdAndRoleForAdminWorkFlowUrl, data: { 'workshopId': id }, headers: { "RequestVerificationToken": antiForgeryToken }, success: function (response) { @@ -232,7 +243,7 @@ function loadByWorkshopIdWithItemsForAdminWorkFlow(id) {
    - +
    `; @@ -253,7 +264,7 @@ function loadByWorkshopIdWithItemsForAdminWorkFlow(id) {
    - +
    `; @@ -287,7 +298,7 @@ function loadByWorkshopIdWithItemsForAdminWorkFlow(id) {
    - +
    `; @@ -309,7 +320,7 @@ function loadByWorkshopIdWithItemsForAdminWorkFlow(id) {
    پیغام:
    - +
    `; @@ -363,6 +374,291 @@ function loadByWorkshopIdWithItemsForAdminWorkFlow(id) {
    + +
    +
    + + + +
    +
    +
    `; + }); + + } else { + html += `
    +
    +
    +
    + +
    اطلاعاتی وجود ندارد.
    +
    +
    +
    +
    `; + } + + $(`.workshopID_${id}`).html(html); + } + }, + failure: function (response) { + console.log(response); + } + }); +} + + +//2 +async function loadCreatedEmployeesWorkshopDocumentForAdmin() { + //$('#CountAbortedAddDocPersonnelLoading').show(); + var mainIndexNum = 1; + + var html = ``; + $.ajax({ + async: true, + contentType: 'charset=utf-8', + dataType: 'json', + type: 'GET', + url: loadCreatedEmployeesWorkshopDocumentForAdminUrl, + headers: { "RequestVerificationToken": antiForgeryToken }, + success: function (response) { + var data = response.data; + $('#loadingSkeletonCreatedEmployeesWorkshopDocumentForAdmin').hide(); + + if (response.success) { + if (data.length > 0) { + data.forEach(function (item) { + html += ` +
    +
    +
    +
    + + ${mainIndexNum++} + +
    +
    +
    +
    +
    +
    +
    ${item.workshopFullName}
    +
    ${item.employerName}
    +
    +
    ${item.employeesWithoutDocumentCount}
    +
    +
    +
    + + + + + +
    +
    `; + + html += `
    +
    +
    `; + }); + + } else { + html += `
    +
    +
    +
    + +
    اطلاعاتی وجود ندارد.
    +
    +
    +
    +
    `; + } + + $('#loadCreatedEmployeesWorkshopDocumentForAdminWorkFlowLists').html(html); + loadFunctionCreatedEmployeesWorkshopDocumentForAdmin = false; + } + }, + failure: function (response) { + console.log(response); + } + }); +} + +function loadCreatedEmployeesDocumentByWorkshopIdForAdmin(id) { + var html = ``; + $.ajax({ + async: false, + contentType: 'charset=utf-8', + dataType: 'json', + type: 'GET', + url: loadCreatedEmployeesDocumentByWorkshopIdForAdminUrl, + data: { 'workshopId': id }, + headers: { "RequestVerificationToken": antiForgeryToken }, + success: function (response) { + var data = response.data; + + if (response.success) { + if (data.length > 0) { + + data.forEach(function (item, i) { + html += `
    +
    +
    +
    + ردیف +
    +
    + + ${i + 1} + +
    +
    + +
    +
    نام پرسنل
    +
    + ${item.employeeFullName} +

    +
    +
    + +
    +
    +
    + +
    +
    +
    `; + if (item.employeePicture.picturePath) { + html += ``; + } else { + html += ``; + } + html += `
    +
    عکس پرسنلی
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    `; + if (item.nationalCardFront.picturePath) { + html += ``; + } else { + html += ``; + } + html += `
    +
    کارت ملی رو
    +
    +
    + +
    +
    +
    `; + if (item.nationalCardRear.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    کارت ملی پشت
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    `; + if (item.militaryServiceCard.picturePath) { + html += ``; + } else { + html += ``; + } + html += `
    +
    کارت پایان خدمت
    +
    +
    + +
    +
    +
    + +
    +
    +
    پیغام:
    +
    + +
    +
    +
    `; + if (item.idCardPage1.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    شناسنامه صفحه اول
    +
    +
    +
    +
    +
    `; + if (item.idCardPage2.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    شناسنامه صفحه دوم
    +
    +
    +
    +
    +
    `; + if (item.idCardPage3.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    شناسنامه صفحه سوم
    +
    +
    +
    +
    +
    `; + if (item.idCardPage4.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    شناسنامه صفحه چهارم
    +
    +
    + +
    +
    +
    +
    @@ -388,7 +684,7 @@ function loadByWorkshopIdWithItemsForAdminWorkFlow(id) {
    `; } - + $(`.workshopID_${id}`).html(html); } }, @@ -398,78 +694,326 @@ function loadByWorkshopIdWithItemsForAdminWorkFlow(id) { }); } + +//3 +async function loadClientRejectedDocumentWorkshopsForAdmin() { + //$('#CountDocumentsAwaitingUploadLoading').show(); + var mainIndexNum = 1; + + var html = ``; + $.ajax({ + //async: false, + contentType: 'charset=utf-8', + dataType: 'json', + type: 'GET', + url: loadClientRejectedDocumentWorkshopsForAdminUrl, + headers: { "RequestVerificationToken": antiForgeryToken }, + success: function (response) { + var data = response.data; + + $('#loadingSkeletonClientRejectedDocumentWorkshopsForAdmin').hide(); + if (response.success) { + if (data.length > 0) { + data.forEach(function (item) { + html += ` +
    +
    +
    +
    + + ${mainIndexNum++} + +
    +
    +
    +
    +
    +
    +
    ${item.workshopFullName}
    +
    ${item.employerName}
    +
    +
    ${item.employeesWithoutDocumentCount}
    +
    +
    +
    + + + + + +
    +
    `; + + html += `
    +
    +
    `; + }); + + } else { + html += `
    +
    +
    +
    + +
    اطلاعاتی وجود ندارد.
    +
    +
    +
    +
    `; + } + + $('#loadClientRejectedDocumentWorkshopsForAdminWorkFlowLists').html(html); + loadFunctionClientRejectedDocumentWorkshopsForAdmin = false; + } + }, + failure: function (response) { + console.log(response); + } + }); +} + +function loadClientRejectedDocumentByWorkshopIdForAdmin(id) { + var html = ``; + $.ajax({ + async: false, + contentType: 'charset=utf-8', + dataType: 'json', + type: 'GET', + url: loadClientRejectedDocumentByWorkshopIdForAdminUrl, + data: { 'workshopId': id }, + headers: { "RequestVerificationToken": antiForgeryToken }, + success: function (response) { + var data = response.data; + + if (response.success) { + if (data.length > 0) { + + data.forEach(function (item, i) { + html += `
    +
    +
    +
    + ردیف +
    +
    + + ${i + 1} + +
    +
    + +
    +
    نام پرسنل
    +
    + ${item.employeeFullName} +

    +
    +
    + +
    +
    +
    + +
    +
    +
    `; + if (item.employeePicture.picturePath) { + html += ``; + } else { + html += ``; + } + html += `
    +
    عکس پرسنلی
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    `; + if (item.nationalCardFront.picturePath) { + html += ``; + } else { + html += ``; + } + html += `
    +
    کارت ملی رو
    +
    +
    + +
    +
    +
    `; + if (item.nationalCardRear.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    کارت ملی پشت
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    `; + if (item.militaryServiceCard.picturePath) { + html += ``; + } else { + html += ``; + } + html += `
    +
    کارت پایان خدمت
    +
    +
    + +
    +
    +
    + +
    +
    +
    پیغام:
    +
    + +
    +
    +
    `; + if (item.idCardPage1.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    شناسنامه صفحه اول
    +
    +
    +
    +
    +
    `; + if (item.idCardPage2.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    شناسنامه صفحه دوم
    +
    +
    +
    +
    +
    `; + if (item.idCardPage3.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    شناسنامه صفحه سوم
    +
    +
    +
    +
    +
    `; + if (item.idCardPage4.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    شناسنامه صفحه چهارم
    +
    +
    + +
    +
    +
    + + +
    +
    + + + +
    +
    +
    `; + }); + + } else { + html += `
    +
    +
    +
    + +
    اطلاعاتی وجود ندارد.
    +
    +
    +
    +
    `; + } + + $(`.workshopID_${id}`).html(html); + } + }, + failure: function (response) { + console.log(response); + } + }); +} + + + function showModalEmployeeDocuments(employeeId, workshopId) { var goTo = `#showmodal=/AdminNew/Company/WorkFlow/EmployeesDocuments?handler=CreateUploadDocument&workshopId=${workshopId}&employeeId=${employeeId}`; window.location.href = goTo; } -async function CountWorkFlow() { +async function CountWorkFlowUploadDocument() { $.ajax({ dataType: 'json', type: 'Get', - url: loadCountWorkFlowOfAbsentAndCut, + url: loadCountWorkFlowUploadDocumentUrl, headers: { "RequestVerificationToken": antiForgeryToken }, success: function (response) { - if (response.success) { - $('.spinner-grow').hide(); - - if (response.dataAbsent === 0) { - $('#CountAbsent').hide(); - $('#CountAbsentMobile').hide(); - } else { - $('#CountAbsent').show(); - $('#CountAbsentMobile').show(); - $('#CountAbsent').text(response.dataAbsent); - $('#CountAbsentMobile').text(response.dataAbsent); - } - - if (response.dataCut === 0) { - $('#CountCut').hide(); - $('#CountCutMobile').hide(); - } else { - $('#CountCut').show(); - $('#CountCutMobile').show(); - $('#CountCut').text(response.dataCut); - $('#CountCutMobile').text(response.dataCut); - } - - if (response.dataLunchBreak === 0) { - $('#CountLunchBreak').hide(); - $('#CountLunchBreakMobile').hide(); - } else { - $('#CountLunchBreak').show(); - $('#CountLunchBreakMobile').show(); - $('#CountLunchBreak').text(response.dataLunchBreak); - $('#CountLunchBreakMobile').text(response.dataLunchBreak); - } - - if (response.dataUndefined === 0) { - $('#CountUndefined').hide(); - $('#CountUndefinedMobile').hide(); - } else { - $('#CountUndefined').show(); - $('#CountUndefinedMobile').show(); - $('#CountUndefined').text(response.dataUndefined); - $('#CountUndefinedMobile').text(response.dataUndefined); - } - - if (response.dataOverlappingLeave === 0) { - $('#CountOverlappingLeave').hide(); - $('#CountOverlappingLeaveMobile').hide(); - } else { - $('#CountOverlappingLeave').show(); - $('#CountOverlappingLeaveMobile').show(); - $('#CountOverlappingLeave').text(response.dataOverlappingLeave); - $('#CountOverlappingLeaveMobile').text(response.dataOverlappingLeave); - } - + $('.spinner-grow').hide(); + + if (response.workshopDocumentRejectedForAdmin === 0) { + $('#CountWorkshopDocumentRejectedForAdmin').hide(); } else { - $('.alert-msg').show(); - $('.alert-msg p').text(response.message); - setTimeout(function () { - $('.alert-msg').hide(); - $('.alert-msg p').text(''); - }, 3500); + $('#CountWorkshopDocumentRejectedForAdmin').show(); + $('#CountWorkshopDocumentRejectedForAdmin').text(response.workshopDocumentRejectedForAdmin); + } + + if (response.clientRejectedDocumentWorkshopsForAdmin === 0) { + $('#CountClientRejectedDocumentWorkshopsForAdmin').hide(); + } else { + $('#CountClientRejectedDocumentWorkshopsForAdmin').show(); + $('#CountClientRejectedDocumentWorkshopsForAdmin').text(response.clientRejectedDocumentWorkshopsForAdmin); + } + + if (response.createdEmployeesWorkshopDocumentForAdmin === 0) { + $('#CountCreatedEmployeesWorkshopDocumentForAdmin').hide(); + } else { + $('#CountCreatedEmployeesWorkshopDocumentForAdmin').show(); + $('#CountCreatedEmployeesWorkshopDocumentForAdmin').text(response.createdEmployeesWorkshopDocumentForAdmin); } }, error: function (err) { @@ -492,4 +1036,4 @@ function updateMainWorkFlow() { $(`#loadDocumentsAwaitingUploadWorkFlow .Rtable-cell.width1 .table-number`).each(function () { $(this).text(index++); }); -} \ No newline at end of file +} diff --git a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/ModalUploadDocument.js b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/ModalUploadDocument.js index 8e88926c..91d80500 100644 --- a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/ModalUploadDocument.js +++ b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/ModalUploadDocument.js @@ -40,8 +40,8 @@ var allPicture = [ { 'label': 7, 'changeImage': false - }, -] + } +]; var pendingMessage = `
    بررسی
    `; var pendingIcon = ``; @@ -429,7 +429,8 @@ $(document).ready(function () { $(document).off('click', '.btnEditEmployee').on('click', '.btnEditEmployee', function (event) { getIndexForEmployeeEdit = $(this).data('index'); - LoadCustomPartial(loadModalEmployeeEdit + `&employeeId=${employeeId}&workshopId=${workshopId}`); + getMediaIdForEmployeeEdit = $(this).data('media-id'); + LoadCustomPartial(loadModalEmployeeEdit + `&employeeId=${employeeId}&workshopId=${workshopId}&mediaId=${getMediaIdForEmployeeEdit}`); }); $(".exitModal").click(function () { @@ -704,6 +705,7 @@ function uploadCanvasAsFile(canvas, fileName, indexFileValue, label) { var getChangeIndex = allPicture.findIndex(item => item.label === indexFileValue); allPicture[getChangeIndex].changeImage = true; + $('#createUploadingFiles').prop('disabled', false).removeClass('disable'); showLoadingAnimation(indexFileValue); }, "image/png"); @@ -780,14 +782,12 @@ function updatePreviewImage(indexId, id2, result) { } function saveSubmit(id) { + var menuValue = $('.main-navbar .active').data('menu'); + var loading = $(".spinner-loading"); loading.show(); - //var data = { - // 'cmd.EmployeeDocumentsId': id - //} - var formData = new FormData(); formData.append('workshopId', workshopId); formData.append('employeeId', employeeId); @@ -810,18 +810,46 @@ function saveSubmit(id) { if (response.success) { - //var employeeSectionDiv = $(`[data-employee-id="${employeeId}"]`); - //employeeSectionDiv.remove(); - //var employeeCountElement = $(`#EmployeeCountOfWorkshop_${workshopId}`); - //var employeeNumberOfWorkshop = Number(employeeCountElement.text().trim()); - //employeeNumberOfWorkshop -= 1; - //employeeCountElement.text(employeeNumberOfWorkshop); - //if (employeeNumberOfWorkshop === 0) { - // var mainElement = $(`#Main_${workshopId}`); - // mainElement.next(".operation-div").remove(); - // mainElement.remove(); + + var employeeSectionDiv = $(`[data-employee-id="${employeeId}"]`); + employeeSectionDiv.remove(); + + var employeeCountElement = ''; + switch (menuValue) { + case "WorkshopDocumentRejectedForAdmin": + //employeeCountElement = $(`#WorkshopDocumentRejected_EmployeeCountOfWorkshop_${workshopId}`); + $('#loadWorkshopDocumentRejectedForAdminWorkFlowLists').html(''); + $('#loadingSkeletonWorkshopDocumentRejectedForAdmin').show(); + loadWorkshopDocumentRejectedForAdmin(); + break; + case "CreatedEmployeesWorkshopDocumentForAdmin": + //employeeCountElement = $(`#CreatedEmployeesWorkshop_EmployeeCountOfWorkshop_${workshopId}`); + $('#loadCreatedEmployeesWorkshopDocumentForAdminWorkFlowLists').html(''); + $('#loadingSkeletonCreatedEmployeesWorkshopDocumentForAdmin').show(); + loadCreatedEmployeesWorkshopDocumentForAdmin(); + break; + case "ClientRejectedDocumentWorkshopsForAdmin": + //employeeCountElement = $(`#ClientRejectedDocument_EmployeeCountOfWorkshop_${workshopId}`); + $('#loadClientRejectedDocumentWorkshopsForAdminWorkFlowLists').html(''); + $('#loadingSkeletonClientRejectedDocumentWorkshopsForAdmin').hide(); + loadClientRejectedDocumentWorkshopsForAdmin(); + break; + default: + break; + } + + //if (employeeCountElement !== '') { + // var employeeNumberOfWorkshop = Number(employeeCountElement.text().trim()); + // employeeNumberOfWorkshop -= 1; + // employeeCountElement.text(employeeNumberOfWorkshop); + + // if (employeeNumberOfWorkshop === 0) { + // var mainElement = $(`#Main_${workshopId}`); + // mainElement.next(".operation-div").remove(); + // mainElement.remove(); + // } //} //var countDocumentsElement = $(`#CountDocumentsAwaitingUpload`); @@ -829,15 +857,17 @@ function saveSubmit(id) { //countDocumentsAwaitingUpload -= 1; //countDocumentsElement.text(countDocumentsAwaitingUpload); - //updateMainWorkFlow(); - //updateIndexesWorkFlow(`DocumentsAwaitingUpload_${workshopId}`); + updateMainWorkFlow(); + updateIndexesWorkFlow(`DocumentsAwaitingUpload_${workshopId}`); - $(`.workshopID_${workshopId}`).html(''); - loadByWorkshopIdWithItemsForAdminWorkFlow(workshopId); + //$(`.workshopID_${workshopId}`).html(''); + //loadByWorkshopIdWithItemsForAdminWorkFlow(workshopId); _RefreshWorkFlowCountMenu(); _RefreshCheckerCountMenu(); + CountWorkFlowUploadDocument(); + $('#MainModal').modal('hide'); showAlertMessage('.alert-success-msg', 'تصویر موجود با موفقیت ارسال شد.', 3500); } else { diff --git a/ServiceHost/wwwroot/AssetsClient/pages/EmployeesDocument/js/ModalUploadDocument.js b/ServiceHost/wwwroot/AssetsClient/pages/EmployeesDocument/js/ModalUploadDocument.js index 7564cdd4..ac2019f0 100644 --- a/ServiceHost/wwwroot/AssetsClient/pages/EmployeesDocument/js/ModalUploadDocument.js +++ b/ServiceHost/wwwroot/AssetsClient/pages/EmployeesDocument/js/ModalUploadDocument.js @@ -7,52 +7,42 @@ var idCardPage2; var idCardPage3; var idCardPage4; var uploadFileCount = UploadedCount; +var command = []; var pendingMessage = `
    بررسی
    `; -var pendingIcon = ` - - - - - `; +var pendingIcon = ``; var confirmMessage = `
    تایید
    `; -var confirmIcon = ` - - - `; +var confirmIcon = ``; var rejectMessage = `
    رد شده
    `; -var rejectIcon = ` - - - - `; +var rejectIcon = ``; + $(document).ready(function () { var employeeId = $("#employeeIdForList").val(); - //$('.btnDeletingPD').each(function () { // if ($(this).hasClass('Unsubmitted')) { // Remove the extra class selector '.btnDeletingPD' // $(this).closest('.pdBox').addClass('justUploaded'); // Add 'justUploaded' to the closest parent .pdBox // } //}); + + $(".btnDeletingPD ").each(function () { + if ($(this).hasClass("SubmittedByAdmin") || $(this).hasClass("Rejected") || $(this).hasClass("Confirmed")) { + $(this).addClass("disable"); + } else { + return; + } + }); + $(document).off('click', '.btnUploadingPD').on('click', '.btnUploadingPD', function (event) { event.preventDefault(); const index = $(this).data('index'); $('input[type="file"][data-index="' + index + '"]').click(); }); - - $(".btnDeletingPD ").each(function () { - if ($(this).hasClass("SubmittedByAdmin") || $(this).hasClass("SubmittedByClient") || $(this).hasClass("Rejected") || $(this).hasClass("Confirmed")) { - $(this).addClass("disable"); - } else { - return; - } - }); $('.pdBox').each(function () { - if ($(".isTrue").hasClass("isTrue") && $(".Unsubmitted").hasClass("Unsubmitted")) { + if ($(".isTrue").hasClass("isTrue") && $(".Unsubmitted").hasClass("Unsubmitted") || $(".SubmittedByClient").hasClass("SubmittedByClient")) { $(".btnCreateNew").prop("disabled", false); $(".btnCreateNew ").removeClass("disable"); } else { @@ -62,7 +52,7 @@ $(document).ready(function () { $('.pdBox').each(function () { // Check if there's a button with the 'submitted' class inside the pdBox - if ($(this).find('button.SubmittedByAdmin').length > 0 || $(this).find('button.SubmittedByClient').length > 0 ) { + if ($(this).find('button.SubmittedByAdmin').length > 0) { $(this).addClass('pending'); $(this).find(".pdImageBox .sign").addClass("pendingSign").html(pendingIcon); $(this).find(".btnUploadingPD").addClass("disable"); @@ -80,7 +70,6 @@ $(document).ready(function () { } }); - $(document).off('change', '.file-input').on('change', '.file-input', function (e) { e.preventDefault(); @@ -90,20 +79,57 @@ $(document).ready(function () { const validPdfExtensions = ['pdf']; const label = $(`#label_${indexFileValue}`).val(); + const pdBox = $(this).closest('.pdBox'); + const img = pdBox.find('.preview-image'); + var deleteButton = pdBox.find('.btnDeletingPD'); if (fileInputFile) { const fileName = fileInputFile.name.toLowerCase(); const extension = fileName.split('.').pop(); + // بررسی فرمت‌های تصویر (jpeg, jpg, png) if (validExtensions.includes(extension)) { if (fileInputFile.size > 5000000) { showAlertMessage('.alert-msg', 'لطفا فایل حجم کمتر از 5 مگابایت را آپلود کنید.', 3500); $(this).val(''); return; } - uploadFile(fileInputFile, indexFileValue, label); - } else if (validPdfExtensions.includes(extension)) { + const reader = new FileReader(); + reader.onload = function (event) { + img.attr('src', event.target.result); + + const base64String = event.target.result.split(',')[1]; + const byteCharacters = atob(base64String); + const byteNumbers = new Array(byteCharacters.length); + for (let i = 0; i < byteCharacters.length; i++) { + byteNumbers[i] = byteCharacters.charCodeAt(i); + } + const byteArray = new Uint8Array(byteNumbers); + const blob = new Blob([byteArray], { type: fileInputFile.type }); + const newFile = new File([blob], fileInputFile.name, { type: fileInputFile.type }); + + let existingIndex = command.findIndex(item => item.Label === label); + if (existingIndex !== -1) { + command[existingIndex].PictureFile = newFile; + } else { + let picturesPart = { + Label: label, + PictureFile: newFile + }; + command.push(picturesPart); + } + }; + + reader.readAsDataURL(fileInputFile); + $('#createUploadingFiles').prop('disabled', false).removeClass('disable'); + + pdBox.removeClass(); + pdBox.addClass('pdBox'); + + showLoadingAnimation(indexFileValue); + } + else if (validPdfExtensions.includes(extension)) { var fileReader = new FileReader(); fileReader.onload = function () { @@ -116,7 +142,7 @@ $(document).ready(function () { return; } - pdf.getPage(1).then(function (page) { // فقط صفحه اول پردازش می‌شود + pdf.getPage(1).then(function (page) { var scale = 2.0; var viewport = page.getViewport({ scale: scale }); @@ -129,15 +155,15 @@ $(document).ready(function () { var context = canvas.getContext("2d"); page.render({ - canvasContext: context, - viewport: viewport - }) - .promise.then(function () { - uploadCanvasAsFile(canvas, `${label}_${indexFileValue}.jpg`, indexFileValue, label); - }) - .catch(function (error) { - showAlertMessage('.alert-msg', 'مشکلی در پردازش PDF رخ داده است!', 3500); - }); + canvasContext: context, + viewport: viewport + }).promise.then(function () { + pdBox.removeClass(); + pdBox.addClass('pdBox'); + uploadCanvasAsFile(canvas, `${label}_${indexFileValue}.jpg`, indexFileValue, label); + }).catch(function (error) { + showAlertMessage('.alert-msg', 'مشکلی در پردازش PDF رخ داده است!', 3500); + }); }).catch(function (error) { showAlertMessage('.alert-msg', 'خطا در دریافت صفحه PDF!', 3500); }); @@ -149,12 +175,152 @@ $(document).ready(function () { fileReader.readAsArrayBuffer(fileInputFile); - } else { - showAlertMessage('.alert-msg', 'فرمت فایل باید یکی از موارد jpeg, jpg یا png باشد.', 3500); + } + else { + showAlertMessage('.alert-msg', 'فرمت فایل باید یکی از موارد jpeg, jpg, png یا pdf باشد.', 3500); + return; + } + + deleteButton.removeClass('disable'); + if (pdBox.find('button.Rejected').length > 0) { + pdBox.find(".btnSendToChecker").removeClass("disable"); } } }); + //$(document).off('change', '.file-input').on('change', '.file-input', function (e) { + // e.preventDefault(); + + // const fileInputFile = this.files[0]; + // const indexFileValue = $(this).data('index'); + // const validExtensions = ['jpg', 'jpeg', 'png']; + + // const label = $(`#label_${indexFileValue}`).val(); + // const pdBox = $(this).closest('.pdBox'); + // const img = pdBox.find('.preview-image'); + + // if (fileInputFile) { + // const fileName = fileInputFile.name.toLowerCase(); + // const extension = fileName.split('.').pop(); + + // if (validExtensions.includes(extension)) { + // if (fileInputFile.size > 5000000) { + // showAlertMessage('.alert-msg', 'لطفا فایل حجم کمتر از 5 مگابایت را آپلود کنید.', 3500); + // $(this).val(''); + // return; + // } + + // // خواندن فایل و نمایش آن + // const reader = new FileReader(); + // reader.onload = function (event) { + // img.attr('src', event.target.result); + + // const base64String = event.target.result.split(',')[1]; + // const byteCharacters = atob(base64String); + // const byteNumbers = new Array(byteCharacters.length); + // for (let i = 0; i < byteCharacters.length; i++) { + // byteNumbers[i] = byteCharacters.charCodeAt(i); + // } + // const byteArray = new Uint8Array(byteNumbers); + // const blob = new Blob([byteArray], { type: fileInputFile.type }); + // const newFile = new File([blob], fileInputFile.name, { type: fileInputFile.type }); + + // let picturesPart = { + // Label: label, + // PictureFile: newFile + // }; + // pictures.push(picturesPart); + // }; + + // reader.readAsDataURL(fileInputFile); + + // //uploadFile(fileInputFile, indexFileValue, label); + // } else { + // showAlertMessage('.alert-msg', 'فرمت فایل باید یکی از موارد jpeg, jpg یا png باشد.', 3500); + // } + // } + + // console.log(pictures); + //}); + + + + + + //$(document).off('change', '.file-input').on('change', '.file-input', function (e) { + // e.preventDefault(); + + // const fileInputFile = this.files[0]; + // const indexFileValue = $(this).data('index'); + // const validExtensions = ['jpg', 'jpeg', 'png']; + // const validPdfExtensions = ['pdf']; + + // const label = $(`#label_${indexFileValue}`).val(); + + // if (fileInputFile) { + // const fileName = fileInputFile.name.toLowerCase(); + // const extension = fileName.split('.').pop(); + + // if (validExtensions.includes(extension)) { + // if (fileInputFile.size > 5000000) { + // showAlertMessage('.alert-msg', 'لطفا فایل حجم کمتر از 5 مگابایت را آپلود کنید.', 3500); + // $(this).val(''); + // return; + // } + // uploadFile(fileInputFile, indexFileValue, label); + // } else if (validPdfExtensions.includes(extension)) { + + // var fileReader = new FileReader(); + + // fileReader.onload = function () { + // var typedarray = new Uint8Array(this.result); + // pdfjsLib.getDocument(typedarray).promise.then(function (pdf) { + // totalPageCount = pdf.numPages; + + // if (totalPageCount > 1) { + // showAlertMessage('.alert-msg', 'آپلود مجاز نیست! تعداد صفحات نباید بیشتر از ۱ باشد.', 3500); + // return; + // } + + // pdf.getPage(1).then(function (page) { // فقط صفحه اول پردازش می‌شود + // var scale = 2.0; + // var viewport = page.getViewport({ scale: scale }); + + // var canvas = document.createElement("canvas"); + // canvas.className = "page"; + // canvas.title = "Page 1"; + // canvas.height = viewport.height; + // canvas.width = viewport.width; + + // var context = canvas.getContext("2d"); + + // page.render({ + // canvasContext: context, + // viewport: viewport + // }) + // .promise.then(function () { + // uploadCanvasAsFile(canvas, `${label}_${indexFileValue}.jpg`, indexFileValue, label); + // }) + // .catch(function (error) { + // showAlertMessage('.alert-msg', 'مشکلی در پردازش PDF رخ داده است!', 3500); + // }); + // }).catch(function (error) { + // showAlertMessage('.alert-msg', 'خطا در دریافت صفحه PDF!', 3500); + // }); + + // }).catch(function (error) { + // showAlertMessage('.alert-msg', 'خطا در بارگذاری فایل PDF!', 3500); + // }); + // }; + + // fileReader.readAsArrayBuffer(fileInputFile); + + // } else { + // showAlertMessage('.alert-msg', 'فرمت فایل باید یکی از موارد jpeg, jpg یا png باشد.', 3500); + // } + // } + //}); + $(document).off('click', '.btnDeletingPD').on('click', '.btnDeletingPD', function (event) { event.preventDefault(); const indexId = $(this).data('index'); @@ -223,6 +389,57 @@ function cancelOperation() { }); } +var indexCount = 0; +var activeUploads = 0; +function showLoadingAnimation(indexId) { + uploadFileCount = uploadFileCount + 1; + + //const pdBox = $('input[data-index="' + indexId + '"]').closest('.pdBox'); + //const spinner = pdBox.find('.spinner-loading-progress'); + //const percentageText = pdBox.find('.percentageText'); + + //spinner.show(); + //activeUploads++; + //$('#createUploadingFiles').prop('disabled', true).addClass('disable'); + + //let simulatedProgress = 0; + //const progressInterval = setInterval(function () { + // if (simulatedProgress < 100) { + // simulatedProgress += 2; + // spinner.css('width', `${simulatedProgress}%`); + // percentageText.text(`${simulatedProgress}%`); + // } + + // if (simulatedProgress >= 100) { + // clearInterval(progressInterval); + // } + //}, 30); + + //setTimeout(function () { + // clearInterval(progressInterval); + // spinner.css('width', '100%'); + // percentageText.text('100%'); + + // spinner.hide(); + // spinner.css('width', '0%'); + // handleActiveUploads(); + //}, 2300); +} + +//function uploadCanvasAsFile(canvas, fileName, indexFileValue, label) { +// canvas.toBlob(function (blob) { +// if (!blob) { +// showAlertMessage('.alert-msg', 'مشکلی در تبدیل تصویر رخ داده است!', 3500); +// return; +// } + +// let file = new File([blob], fileName, { type: 'image/png' }); + +// uploadFile(file, indexFileValue, label); + +// }, "image/png"); +//} + function uploadCanvasAsFile(canvas, fileName, indexFileValue, label) { canvas.toBlob(function (blob) { if (!blob) { @@ -231,137 +448,160 @@ function uploadCanvasAsFile(canvas, fileName, indexFileValue, label) { } let file = new File([blob], fileName, { type: 'image/png' }); + const imageUrl = URL.createObjectURL(blob); - uploadFile(file, indexFileValue, label); + const img = $(`#${label}`); + img.attr('src', imageUrl); + + let existingIndex = command.findIndex(item => item.Label === label); + if (existingIndex !== -1) { + command[existingIndex].PictureFile = file; + } else { + let picturesPart = { + Label: label, + PictureFile: file + }; + command.push(picturesPart); + } + + showLoadingAnimation(indexFileValue); }, "image/png"); } -var indexCount = 0; -var activeUploads = 0; -function uploadFile(file, indexId, label) { - const formData = new FormData(); - formData.append('command.EmployeeId', employeeId); - formData.append('command.Label', label); - formData.append('command.PictureFile', file); +//var indexCount = 0; +//var activeUploads = 0; +//function uploadFile(file, indexId, label) { +// const formData = new FormData(); +// formData.append('command.EmployeeId', employeeId); +// formData.append('command.WorkshopId', workshopId); +// formData.append('command.Label', label); +// formData.append('command.PictureFile', file); - const pdBox = $('input[data-index="' + indexId + '"]').closest('.pdBox'); - const spinner = pdBox.find('.spinner-loading-progress'); +// const pdBox = $('input[data-index="' + indexId + '"]').closest('.pdBox'); +// const spinner = pdBox.find('.spinner-loading-progress'); - const percentageText = pdBox.find('.percentageText'); +// const percentageText = pdBox.find('.percentageText'); - spinner.show(); - activeUploads++; - $('#createUploadingFiles').prop('disabled', true).addClass('disable'); +// spinner.show(); +// activeUploads++; +// $('#createUploadingFiles').prop('disabled', true).addClass('disable'); - const xhr = new XMLHttpRequest(); - xhr.open('POST', saveUploadFileModalAjax, true); - xhr.setRequestHeader('RequestVerificationToken', antiForgeryToken); +// const xhr = new XMLHttpRequest(); +// xhr.open('POST', saveUploadFileModalAjax, true); +// xhr.setRequestHeader('RequestVerificationToken', antiForgeryToken); - const uploadStartTime = new Date().getTime(); - let simulatedProgress = 0; - let actualProgress = 0; - let isUploadComplete = false; +// const uploadStartTime = new Date().getTime(); +// let simulatedProgress = 0; +// let actualProgress = 0; +// let isUploadComplete = false; - // Simulate progress every 20ms, gradually increasing the bar until the actual progress is reached - const progressInterval = setInterval(function () { - if (simulatedProgress < actualProgress && !isUploadComplete) { - simulatedProgress += 1; // Gradually increase simulated progress - spinner.css('width', `${simulatedProgress}%`); - percentageText.text(`${simulatedProgress}%`); - } +// // Simulate progress every 20ms, gradually increasing the bar until the actual progress is reached +// const progressInterval = setInterval(function () { +// if (simulatedProgress < actualProgress && !isUploadComplete) { +// simulatedProgress += 1; // Gradually increase simulated progress +// spinner.css('width', `${simulatedProgress}%`); +// percentageText.text(`${simulatedProgress}%`); +// } - if (simulatedProgress >= 100) { - clearInterval(progressInterval); // Stop once the progress hits 100% - } - }, 30); // Increases by 1% every 20ms, making it smooth +// if (simulatedProgress >= 100) { +// clearInterval(progressInterval); // Stop once the progress hits 100% +// } +// }, 30); // Increases by 1% every 20ms, making it smooth - // Actual upload progress listener - xhr.upload.addEventListener('progress', function (e) { - if (e.lengthComputable) { - actualProgress = Math.round((e.loaded / e.total) * 100); +// // Actual upload progress listener +// xhr.upload.addEventListener('progress', function (e) { +// if (e.lengthComputable) { +// actualProgress = Math.round((e.loaded / e.total) * 100); - // If the actual progress is slow, allow the simulated progress to match it naturally - if (actualProgress >= simulatedProgress) { - simulatedProgress = actualProgress; - spinner.css('width', `${simulatedProgress}%`); - percentageText.text(`${simulatedProgress}%`); - } - } - }); +// // If the actual progress is slow, allow the simulated progress to match it naturally +// if (actualProgress >= simulatedProgress) { +// simulatedProgress = actualProgress; +// spinner.css('width', `${simulatedProgress}%`); +// percentageText.text(`${simulatedProgress}%`); +// } +// } +// }); - // On upload completion - xhr.onload = function () { - spinner.css('transition', 'all 2s ease-in'); +// // On upload completion +// xhr.onload = function () { +// spinner.css('transition', 'all 2s ease-in'); +// const uploadEndTime = new Date().getTime(); +// const timeDiff = uploadEndTime - uploadStartTime; +// const minUploadTime = 2500; // Minimum of 2 seconds for the whole process - const uploadEndTime = new Date().getTime(); - const timeDiff = uploadEndTime - uploadStartTime; - const minUploadTime = 2500; // Minimum of 2 seconds for the whole process +// const response = JSON.parse(xhr.responseText); +// isUploadComplete = true; // Mark the upload as complete +// const delayTime = Math.max(minUploadTime - timeDiff, 0); - const response = JSON.parse(xhr.responseText); - isUploadComplete = true; // Mark the upload as complete +// setTimeout(function () { +// clearInterval(progressInterval); // Clear the interval when done +// simulatedProgress = 100; +// spinner.css('width', '100%'); +// percentageText.text('100%'); - const delayTime = Math.max(minUploadTime - timeDiff, 0); +// var id2 = $("#employeeIdForList").val(); - setTimeout(function () { - clearInterval(progressInterval); // Clear the interval when done - simulatedProgress = 100; - spinner.css('width', '100%'); - percentageText.text('100%'); +// if (xhr.status === 200 && response.isSuccedded) { +// indexCount++; +// const reader = new FileReader(); +// reader.onload = function (e) { - var id2 = $("#employeeIdForList").val(); +// uploadFileCount = uploadFileCount + 1; - if (xhr.status === 200 && response.isSuccedded) { - indexCount++; - const reader = new FileReader(); - reader.onload = function (e) { +// const pdBox = $('input[data-index="' + indexId + '"]').closest('.pdBox'); +// const img = pdBox.find('.preview-image'); +// img.attr('src', e.target.result); - uploadFileCount = uploadFileCount + 1; +// //employeePicture = $('#EmployeePicture').attr('src'); +// //nationalCardFront = $('#NationalCardFront').attr('src'); +// //nationalCardRear = $('#NationalCardRear').attr('src'); +// //militaryServiceCard = $('#MilitaryServiceCard').attr('src'); +// //idCardPage1 = $('#IdCardPage1').attr('src'); +// //idCardPage2 = $('#IdCardPage2').attr('src'); +// //idCardPage3 = $('#IdCardPage3').attr('src'); +// //idCardPage4 = $('#IdCardPage4').attr('src'); +// //console.log(idCardPage2); - const pdBox = $('input[data-index="' + indexId + '"]').closest('.pdBox'); - const img = pdBox.find('.preview-image'); - img.attr('src', e.target.result); +// // updatePreviewImage(indexId, id2, e.target.result); - //updatePreviewImage(indexId, id2, e.target.result); +// }; +// if (pdBox.hasClass("complete") || pdBox.hasClass("discomplete")) { - }; - if (pdBox.hasClass("complete") || pdBox.hasClass("discomplete")) { +// pdBox.removeClass("discomplete complete"); +// pdBox.find(".sign").removeClass("discompleteSign completeSign"); +// pdBox.find(".sign").empty(); +// pdBox.find(".btnDeletingPD").removeClass("Rejected Confirmed"); +// pdBox.find("confirmedMessage ").remove(); +// pdBox.find(".resultMessage").empty(); +// } - pdBox.removeClass("discomplete complete"); - pdBox.find(".sign").removeClass("discompleteSign completeSign"); - pdBox.find(".sign").empty(); - pdBox.find(".btnDeletingPD").removeClass("Rejected Confirmed"); - pdBox.find("confirmedMessage ").remove(); - pdBox.find(".resultMessage").empty(); - } +// pdBox.find('.btnDeletingPD').removeClass('disable').addClass("Unsubmitted"); - pdBox.find('.btnDeletingPD').removeClass('disable').addClass("Unsubmitted"); +// reader.readAsDataURL(file); +// } else { +// showAlertMessage('.alert-msg', response.message || 'Error uploading file', 3500); +// $('input[type="file"][data-index="' + indexId + '"]').val(''); +// } +// spinner.css('width', '0%'); // Reset the progress bar +// spinner.hide(); +// handleActiveUploads(); +// }, delayTime); // Ensure a minimum of 2 seconds for the full process +// }; - reader.readAsDataURL(file); - } else { - showAlertMessage('.alert-msg', response.message || 'Error uploading file', 3500); - $('input[type="file"][data-index="' + indexId + '"]').val(''); - } +// // Handle upload error +// xhr.onerror = function () { +// clearInterval(progressInterval); // Stop progress on error +// showAlertMessage('.alert-msg', 'مشکلی در آپلود فایل به وجود آمد.', 3500); +// $('input[type="file"][data-index="' + indexId + '"]').val(''); +// spinner.css('width', '0%'); +// spinner.hide(); +// handleActiveUploads(); +// }; - spinner.css('width', '0%'); // Reset the progress bar - spinner.hide(); - handleActiveUploads(); - }, delayTime); // Ensure a minimum of 2 seconds for the full process - }; - - // Handle upload error - xhr.onerror = function () { - clearInterval(progressInterval); // Stop progress on error - showAlertMessage('.alert-msg', 'مشکلی در آپلود فایل به وجود آمد.', 3500); - $('input[type="file"][data-index="' + indexId + '"]').val(''); - spinner.css('width', '0%'); - spinner.hide(); - handleActiveUploads(); - }; - - xhr.send(formData); -} +// xhr.send(formData); +//} function handleActiveUploads() { activeUploads--; @@ -386,17 +626,19 @@ function removeEmployeeDocumentByLabel(indexId, employeeId) { $.ajax({ url: deleteFileAjaxUrl, method: 'POST', - data: { label: label, employeeId: employeeId}, + data: { label: label, employeeId: employeeId, workshopId: workshopId }, headers: { 'RequestVerificationToken': antiForgeryToken }, success: function (response) { if (response.isSuccedded) { uploadFileCount = uploadFileCount - 1; showAlertMessage('.alert-success-msg', 'تصویر موجود با موفقیت حذف شد.', 3500); - $(`#label_${indexId}`).val(''); + /* $(`#label_${indexId}`).val('');*/ pdBox.find('.btnDeletingPD').removeClass("Unsubmitted"); + pdBox.find('.uploaderSign').hide(); updatePreviewImage(Number(indexId), Number(employeeId), "/assetsclient/images/pd-image.png"); + } else { showAlertMessage('.alert-success-msg', response.message, 3500); } @@ -409,48 +651,58 @@ function removeEmployeeDocumentByLabel(indexId, employeeId) { function updatePreviewImage(indexId, id2, result) { switch (indexId) { - case 0: - $(`#employeePicture_${id2}.preview-image`).attr('src', result); - break; - case 1: - $(`#nationalCardFront_${id2}.preview-image`).attr('src', result); - break; - case 2: - $(`#nationalCardRear_${id2}.preview-image`).attr('src', result); - break; - case 3: - $(`#militaryServiceCard_${id2}.preview-image`).attr('src', result); - break; - case 4: - $(`#idCardPage1_${id2}.preview-image`).attr('src', result); - break; - case 5: - $(`#idCardPage2_${id2}.preview-image`).attr('src', result); - break; - case 6: - $(`#idCardPage3_${id2}.preview-image`).attr('src', result); - break; - case 7: - $(`#idCardPage4_${id2}.preview-image`).attr('src', result); - break; - default: - console.warn('Unexpected indexId:', indexId); + case 0: + $(`#employeePicture_${id2}.preview-image`).attr('src', result); + break; + case 1: + $(`#nationalCardFront_${id2}.preview-image`).attr('src', result); + break; + case 2: + $(`#nationalCardRear_${id2}.preview-image`).attr('src', result); + break; + case 3: + $(`#militaryServiceCard_${id2}.preview-image`).attr('src', result); + break; + case 4: + $(`#idCardPage1_${id2}.preview-image`).attr('src', result); + break; + case 5: + $(`#idCardPage2_${id2}.preview-image`).attr('src', result); + break; + case 6: + $(`#idCardPage3_${id2}.preview-image`).attr('src', result); + break; + case 7: + $(`#idCardPage4_${id2}.preview-image`).attr('src', result); + break; + default: + console.warn('Unexpected indexId:', indexId); } } function saveSubmit(id) { var loading = $(".spinner-loading"); - loading.show(); - var data = { - 'cmd.EmployeeDocumentsId': id - } + //var data = { + // 'cmd.EmployeeDocumentsId': id + //} + + var formData = new FormData(); + formData.append('employeeId', employeeId); + + command.forEach((item, index) => { + formData.append(`command[${index}].Label`, item.Label); + formData.append(`command[${index}].PictureFile`, item.PictureFile); + }); + $.ajax({ - url: saveSubmitAjax, + url: saveGroupSubmitAjax, method: 'POST', - data: data, + data: formData, + processData: false, + contentType: false, headers: { 'RequestVerificationToken': antiForgeryToken }, success: function (response) { loading.hide(); @@ -476,21 +728,15 @@ function saveSubmit(id) { showAlertMessage('.alert-msg', 'مشکلی در ارسال تصویر به وجود آمد.', 3500); } }); - - } function cancelOP() { - - var data = { - 'cmd.EmployeeDocumentsId': id - } $.ajax({ url: saveSubmitAjax, method: 'POST', - data: {employeeId:employeeId,}, + data: { employeeId: employeeId, }, headers: { 'RequestVerificationToken': antiForgeryToken }, success: function (response) { loading.hide(); @@ -510,4 +756,4 @@ function cancelOP() { }); -} +} \ No newline at end of file diff --git a/ServiceHost/wwwroot/AssetsClient/pages/WorkFlow/EmployeeDocuments/css/Index.css b/ServiceHost/wwwroot/AssetsClient/pages/WorkFlow/EmployeeDocuments/css/Index.css new file mode 100644 index 00000000..3a4d6876 --- /dev/null +++ b/ServiceHost/wwwroot/AssetsClient/pages/WorkFlow/EmployeeDocuments/css/Index.css @@ -0,0 +1,635 @@ +#navbar-animmenu { + width: 20%; + padding: 0 0; + position: relative; +} + + #navbar-animmenu ul { + background: #CAF5F5; + padding: 0; + margin: 0; + height: 700px; + } + + #navbar-animmenu ul li a i { + margin-left: 10px; + } + + #navbar-animmenu ul li span { + background-color: #dd2a2a; + width: 26px; + display: flex; + height: 26px; + align-items: center; + justify-content: center; + border-radius: 24px; + margin: 0 0 0 12px; + color: #fff; + font-size: 14px; + font-weight: 700; + } + + #navbar-animmenu li { + list-style-type: none; + z-index: 4; + position: relative; + cursor: pointer; + } + + #navbar-animmenu ul li a { + color: #484848; + text-decoration: none; + font-size: 15px; + line-height: 60px; + display: block; + padding: 0px 30px 0 20px; + transition-duration: 0.6s; + transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); + position: relative; + } + + #navbar-animmenu > ul > li.active > a { + color: #000000; + background-color: transparent; + transition: all 0.7s; + } + +.countNumber { + margin: 0 0 0 12px; + font-size: 12px; + background-color: #dd2a2a; + width: 24px; + height: 24px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 40px; + color: #fff; + font-weight: 600; + padding: 2px 0 0 0; +} + +/* Vertical selector styling */ +.verti-selector { + display: inline-block; + position: absolute; + width: 97%; + left: 0px; + transition-duration: 0.6s; + transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); + background-color: #fff; + border-radius: 0 50px 50px 0; + /* border-top-right-radius: 15px; + border-bottom-right-radius: 15px;*/ + height: 45px; + z-index: 3; +} + + .verti-selector .top, + .verti-selector .bottom { + position: absolute; + width: 25px; + height: 25px; + background-color: #fff; + } + + .verti-selector .top { + bottom: -25px; + left: 0; + } + + .verti-selector .bottom { + top: -25px; + left: 0; + } + + .verti-selector .top:before, + .verti-selector .bottom:before { + content: ''; + position: absolute; + width: 50px; + height: 50px; + border-radius: 50%; + background-color: #CAF5F5; + } + + .verti-selector .top.last-role::before { + background-color: #f5f5f5; + } + + .verti-selector .top:before { + top: 0; + right: -25px; + } + + .verti-selector .bottom:before { + bottom: 0; + right: -25px; + } + +#accountList { + width: 80%; + background-color: #ffffff; + height: 700px; + overflow-y: scroll; + overflow-x: hidden; +} + +.createRoleBox { + width: 100%; + background-color: #ffffff; + z-index: 6; + display: block !important; + position: relative; + padding: 11px 6px; + border-bottom: 2px solid transparent; + border-image: linear-gradient(to left, #B1B1B1, #FFFFFF); + border-image-slice: 1; +} + +.sweet-alert button { + font-family: 'IRANYekanX'; +} + +.btn-create { + background: #84CC16; + border-radius: 7px; + padding: 4px 10px; + font-size: 13px; + color: #ffffff; + text-align: center; + color: #FFF; + text-align: center; + font-size: 11px; + font-style: normal; + font-weight: 400; +} + + .btn-create:hover { + background: #71b112; + } + +#hideCircle { + transition: border-radius 0.5s ease; + height: 80px; + background-color: #f5f5f5; + pointer-events: none; +} + +.isActiveTxt { + background-color: #ECFCCB; + border: 1px solid #B3EB52; + border-radius: 50px; + padding: 3px 9px; + color: #0B5959; + font-size: 11px; + width: 70px; + text-align: center; +} + +.btn-edit-role { + border: 1px solid transparent; + width: 30px; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #009EE2; + margin: auto 0 auto 1px; + /* background-color: #ffffff; */ + background-color: rgba(52, 209, 209, 0.20); + box-shadow: 0; + transition: ease .2s; +} + + .btn-edit-role:hover { + color: #ffffff; + /* background-color: #009EE2; */ + background-color: rgba(52, 209, 209, 0.40); + } + +.btn-delete-role { + border: 1px solid transparent; + width: 30px; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #FF5151; + margin: auto 1px auto 0; + background: rgba(209, 50, 50, 0.15); + transition: ease .2s; +} + + .btn-delete-role:hover { + background-color: rgba(209, 50, 50, 0.25); + } + +.btn-info { + border: 1px solid transparent; + width: 30px; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #009EE2; + margin: auto 0 auto 1px; + /* background-color: #ffffff; */ + background-color: #B4DBFD; + box-shadow: 0; + transition: ease .2s; +} + + .btn-info:hover { + background-color: #a2c8e9 + } + + .btn-info svg { + color: #3B82F6; + } + +.close-btn-search { + position: absolute; + top: 50%; + left: 4px; + transform: translateY(-50%); + color: #fff; + background-color: #f87171; + width: 26px; + height: 26px; + display: flex; + align-items: center; + justify-content: center; +} + +.Rtable--collapse .Rtable-row { + flex-wrap: nowrap; + padding: 1px; +} + + .Rtable--collapse .Rtable-row.SubAccountRowMobile { + flex-wrap: nowrap; + padding: 1px; + outline: 1px solid #dddddd; + } + +.roleTitle { + font-size: 12px; + font-weight: 500; +} + +.roleName { + font-size: 16px; + font-weight: 700; +} + + +/********************************** Sub Account Table **********************************/ +.rightHeaderMenu { + width: 20%; + display: flex; + align-items: center; + justify-content: space-between; +} + +.leftHeaderMenu { + width: 80%; + display: flex; + align-items: center; + justify-content: space-between; +} + +.subAccountHeaderList { +} + + +.roleSubaccountListMobile .width1 { + width: 10% !important; +} + +.roleSubaccountListMobile .width2 { + width: 10% !important; +} + +.roleSubaccountListMobile .width3 { + width: 10% !important; +} + +.roleSubaccountListMobile .width4 { + width: 20% !important; +} + +.roleSubaccountListMobile .width5 { + width: 20% !important; +} + +.roleSubaccountListMobile .width6 { + width: 20% !important; +} + +.roleSubaccountListMobile .width7 { + width: 10% !important; +} + +.bgSubRow { + outline: transparent !important; + background-color: #CEF4F4 !important; +} +/********************************** Sub Account Table **********************************/ + +.switch { + position: relative; + display: inline-block; + width: 40px; + height: 24px; +} + + /* Hide default HTML checkbox */ + .switch input { + opacity: 0; + width: 0; + height: 0; + } + +/* The slider */ +.sliderEUP { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #ccc; + transition: 0.4s; + border-radius: 24px; +} + + /* Rounded slider */ + .sliderEUP:before { + position: absolute; + content: ""; + height: 20px; + width: 20px; + left: 2px; + bottom: 2px; + background-color: white; + transition: 0.4s; + border-radius: 50%; + } + +/* Checked state */ +input:checked + .sliderEUP { + background-color: #2FBFBF; +} + + /* Move the slider to the right when checked */ + input:checked + .sliderEUP:before { + transform: translateX(16px); + } + +/* Disable state */ +.disable + .sliderEUP { + background-color: #ccc; + cursor: not-allowed; +} + + .disable + .sliderEUP:before { + background-color: #999; + } + + + + + +.leftHeaderMenu .Rtable-cell.width1 { + width: 7% +} + +.leftHeaderMenu .Rtable-cell.width2 { + width: 13% +} + +.leftHeaderMenu .Rtable-cell.width3 { + width: 10% +} + +.leftHeaderMenu .Rtable-cell.width4 { + width: 20% +} + +.leftHeaderMenu .Rtable-cell.width5 { + width: 20% +} + +.leftHeaderMenu .Rtable-cell.width6 { + width: 20% +} + +.leftHeaderMenu .Rtable-cell.width7 { + width: 10% +} + +.Rtable .workflow-list .width1 { + width: 7% +} + +.Rtable .workflow-list .width2 { + width: 13% +} + +.Rtable .workflow-list .width3 { + width: 10% +} + +.Rtable .workflow-list .width4 { + width: 20% +} + +.Rtable .workflow-list .width5 { + width: 20% +} + +.Rtable .workflow-list .width6 { + width: 20% +} + +.Rtable .workflow-list .width7 { + width: 10% +} + +.btn-workflow-absent { + border: 1px solid transparent; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #FF5151; + margin: auto 1px auto 0; + background-color: #ffffff; + background: rgba(209, 50, 50, 0.15); + transition: ease .2s; + width: 55px; +} + +.btn-workflow-rollcall-edit { + border: 1px solid transparent; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #009EE2; + margin: auto 0 auto 1px; + background-color: #ffffff; + background-color: rgba(52, 209, 209, 0.20); + transition: ease .2s; + width: 55px; +} + +.btn-workflow-leave { + border: 1px solid transparent; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #d97706; + margin: auto 1px auto 0; + background-color: #ffffff; + background: rgba(217, 119, 6, 0.18); + transition: ease .2s; + width: 55px; +} + +.btn-workflow-accept { + border: 1px solid transparent; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #65a30d; + margin: auto 1px auto 0; + background-color: #ffffff; + background: rgba(101, 163, 13, 0.15); + transition: ease .2s; + width: 55px; +} + +.operations-btns-main { + padding: 15px; + width: 97%; + margin: 0 auto 10px; + display: none; + border-radius: 0px 0px 8px 8px; + background: #F1F5F9; + box-shadow: 0px 4px 5px 0px rgba(0, 0, 0, 0.03) inset; +} + +.number-of-count { + background-color: #caf5f5; + margin: 0 10px 0 0; + border-radius: 5px; + display: inline-block; + padding: 0 5px; + color: #368686; + font-weight: 700; +} + +.toggle { + cursor: pointer; + font-size: 12px; +} + + .toggle svg { + stroke: #ffffff; + transition: transform 0.3s ease; + } + + .toggle.open svg { + transform: rotate(-90deg); + } + +@media (max-width: 1366px) { + #navbar-animmenu ul li a { + font-size: 13px; + font-weight: 700; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + } + + #accountList { + height: 440px; + } + + #navbar-animmenu ul { + height: 440px; + } +} + +@media (max-width: 767px) { + .Rtable--collapse .Rtable-row { + outline: 1.8px solid #ddd !important; + } + + .Rtable .workflow-list .width1 { + width: 5% !important; + } + + .Rtable .workflow-list .width2 { + width: 50% !important; + } + + .Rtable .workflow-list .width4 { + width: 20% !important; + } + + .Rtable--collapse .Rtable-row .Rtable-cell .Rtable-cell--content { + text-align: right; + } + + .btn-workflow-accept, + .btn-workflow-leave, + .btn-workflow-absent, + .btn-workflow-rollcall-edit { + width: 100%; + margin: 1px 0; + } + + .employee-name { + font-weight: 800; + } + + + + + + + + /* responsive Mobile */ + #navbar-animmenu { + width: 100%; + } + + #navbar-animmenu ul { + display: flex; + height: auto; + overflow: scroll; + } + + .verti-selector { + display: none + } + + #navbar-animmenu li.active { + background-color: #fff; + width: 100%; + } + + #accountList { + width: 100%; + height: auto; + } +} + +.preview-image { + width: 50px; + height: 35px; + border-radius: 8px; + object-fit: cover; +} + +.txtMonilePD { + display: none +} diff --git a/ServiceHost/wwwroot/AssetsClient/pages/WorkFlow/EmployeeDocuments/js/Index.js b/ServiceHost/wwwroot/AssetsClient/pages/WorkFlow/EmployeeDocuments/js/Index.js new file mode 100644 index 00000000..7b0ffaed --- /dev/null +++ b/ServiceHost/wwwroot/AssetsClient/pages/WorkFlow/EmployeeDocuments/js/Index.js @@ -0,0 +1,368 @@ +var ajaxService = new AjaxService(antiForgeryToken); + +var lengthMenu = 0; +var loadFunctionClientRejectedDocument = true; + +loadMenuAnime(); +$(document).ready(function () { + //CountWorkFlowOfAbsentAndCut(); + loadClientRejectedDocument(); + + $("#clickAbsentTab").click(function () { + //$('.rejectedDocumentWorkFlowLists').fadeOut(200, function () { + // $('.rejectedDocumentWorkFlowLists').fadeIn(200); + //}); + if (loadFunctionClientRejectedDocument) { + loadWorkFlowsAbsentsList(); + } + }); +}); + +function loadMenuAnime() { + var tabsNewAnim = $('#navbar-animmenu'); + var selectorNewAnim = $('#navbar-animmenu').find('li').length; + var activeItemNewAnim = tabsNewAnim.find('.active'); + var activeHeightNewAnimHeight = activeItemNewAnim.innerHeight(); + var itemPosNewAnimTop = activeItemNewAnim.position(); + $(".verti-selector").css({ + "top": itemPosNewAnimTop.top + "px", + "height": activeHeightNewAnimHeight + "px" + }); + + $('.active').each(function () { + var targetForm = $(this).data('target'); + $('#' + targetForm).show(); + }); + + if (lengthMenu === 1) { + if ($('.main-navbar li').hasClass('lastRole')) { + $('.verti-selector .top').addClass('last-role'); + $('#hideCircle').css('border-radius', '25px 0 0 0'); + } else { + $('.verti-selector .top').removeClass('last-role'); + $('#hideCircle').css('border-radius', '0 0 0 0'); + } + } + + $("#navbar-animmenu").on("click", "li", function (e) { + if ($(this).hasClass('lastRole')) { + //$('.verti-selector .top').addClass('last-role'); + $('#hideCircle').css('border-radius', '25px 0 0 0'); + } else { + //$('.verti-selector .top').removeClass('last-role'); + $('#hideCircle').css('border-radius', '0 0 0 0'); + } + + $('#navbar-animmenu ul li').removeClass("active"); + $(this).addClass('active'); + + var activeHeightNewAnimHeight = $(this).innerHeight(); + var itemPosNewAnimTop = $(this).position(); + $(".verti-selector").css({ + "top": itemPosNewAnimTop.top + "px", + "height": activeHeightNewAnimHeight + "px" + }); + + $('.form-section').hide(); + $('.accountListHead').text($(this).find('a').text()); + var targetForm = $(this).data('target'); + $('#' + targetForm).show(); + }); + + //$("#navbar-animmenu").on("click", "li", function (e) { + // var targetForm = $(this).data('target'); + // $('#navbar-animmenu ul li').removeClass("active"); + // $(this).addClass('active'); + + // var activeHeightNewAnimHeight = $(this).innerHeight(); + // var itemPosNewAnimTop = $(this).position(); + + // $(".verti-selector").stop(true, true).animate({ + // "top": itemPosNewAnimTop.top + "px", + // "height": activeHeightNewAnimHeight + "px" + // }, 300); // انیمیشن با مدت زمان 300 میلی‌ثانیه + + // $('.form-section').fadeOut(200); + // $('#' + targetForm).fadeIn(300); // انیمیشن تغییر صفحه + //}); +} + +$(document).on('click', ".openActionMain", function () { + $('.toggle').not($(this).find('.toggle')).removeClass('open'); + + $(this).next().find(".operations-btns-main").slideToggle(500); + $(".operations-btns-main").not($(this).next().find(".operations-btns-main")).slideUp(500); + + $(this).find('.toggle').toggleClass('open'); +}); + +$(document).on('click', ".openAction", function () { + if (window.matchMedia('(max-width: 768px)').matches) { + $(this).next().find(".operations-btns").slideToggle(500); + $(".operations-btns").not($(this).next().find(".operations-btns")).slideUp(500); + } +}); + +function loadClientRejectedDocument() { + var html = ``; + ajaxService.get(clientRejectedDocumentForClientUrl) + .then(response => { + + var data = response.data; + + if (response.success) { + CountWorkFlowOfTabs(data.length); + if (data.length > 0) { + + data.forEach(function (item, i) { + html += `
    +
    +
    +
    + ردیف +
    +
    + + ${i + 1} + +
    +
    + +
    +
    نام پرسنل
    +
    + ${item.employeeFullName} +

    +
    +
    + +
    +
    +
    + +
    +
    +
    `; + if (item.employeePicture.picturePath) { + html += ``; + } else { + html += ``; + } + html += `
    +
    عکس پرسنلی
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    `; + if (item.nationalCardFront.picturePath) { + html += ``; + } else { + html += ``; + } + html += `
    +
    کارت ملی رو
    +
    +
    + +
    +
    +
    `; + if (item.nationalCardRear.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    کارت ملی پشت
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    `; + if (item.militaryServiceCard.picturePath) { + html += ``; + } else { + html += ``; + } + html += `
    +
    کارت پایان خدمت
    +
    +
    + +
    +
    +
    + +
    +
    +
    پیغام:
    +
    + +
    +
    +
    `; + if (item.idCardPage1.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    شناسنامه صفحه اول
    +
    +
    +
    +
    +
    `; + if (item.idCardPage2.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    شناسنامه صفحه دوم
    +
    +
    +
    +
    +
    `; + if (item.idCardPage3.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    شناسنامه صفحه سوم
    +
    +
    +
    +
    +
    `; + if (item.idCardPage4.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    شناسنامه صفحه چهارم
    +
    +
    + +
    +
    +
    + + +
    +
    + + + +
    +
    +
    `; + }); + + } else { + html += `
    +
    +
    +
    + +
    اطلاعاتی وجود ندارد.
    +
    +
    +
    +
    `; + } + + $(`#loadRejectedDocumentWorkFlow`).html(html); + $(`#loadingSkeletonRejectedDocument`).hide(); + } + + }); +} + +var countGlobal = 0; +function CountWorkFlowOfTabs(dataCount) { + countGlobal = dataCount; + $('.spinner-grow').hide(); + + if (countGlobal === 0) { + $('#CountRejectedDocument').hide(); + } else { + $('#CountRejectedDocument').show(); + $('#CountRejectedDocument').text(dataCount); + } +} + + + +function showModalLeave(employeeId, dateFa, employeeName) { + var goTo = `#showmodal=/Client/Company/WorkFlow/RollCall?handler=LeaveCreate&Command.StartLeave=${dateFa}&Command.EmployeeId=${employeeId}&Command.EmployeeFullName=${employeeName}`; + window.location.href = goTo; +} + + + +function updateIndexesWorkFlow(dateDiv) { + let index = 1; + + $(`#${dateDiv} .employee-row:visible .table-number`).each(function () { + $(this).text(index++); + }); +} + +function updateMainWorkFlow(dateDiv) { + let indexMain = 1; + + $(`#${dateDiv} .number-of-count`).each(function () { + var text = Number($(this).text()); + $(this).text(text - 1); + + if (text - 1 === 0) { + $(`#${dateDiv}`).next().remove(); + $(`#${dateDiv}`).remove(); + + $(`.Rtable-cell.width1 .Rtable-cell--content span`).each(function () { + $(this).text(indexMain++); + }); + } + }); +} + + + +function showModalEmployeeDocuments(id) { + var goTo = `#showmodal=/Client/Company/WorkFlow/EmployeeDocuments/Index?employeeId=${id}&handler=CreateUploadDocument`; + window.location.href = goTo; +} + +function checkImage() { + $('.documentFileBox').each(function () { + if ($(this).find('img.uploaded').length > 0) { + // Add the highlighted-border class to the documentFileBox + $(this).addClass('highlighted-border'); + } + }); +} \ No newline at end of file diff --git a/ServiceHost/wwwroot/AssetsClient/pages/WorkFlow/EmployeeDocuments/js/ModalUploadDocument.js b/ServiceHost/wwwroot/AssetsClient/pages/WorkFlow/EmployeeDocuments/js/ModalUploadDocument.js new file mode 100644 index 00000000..d4273457 --- /dev/null +++ b/ServiceHost/wwwroot/AssetsClient/pages/WorkFlow/EmployeeDocuments/js/ModalUploadDocument.js @@ -0,0 +1,775 @@ +var employeePicture; +var nationalCardFront; +var nationalCardRear; +var militaryServiceCard; +var idCardPage1; +var idCardPage2; +var idCardPage3; +var idCardPage4; +var uploadFileCount = UploadedCount; +var command = []; + +var pendingMessage = `
    بررسی
    `; +var pendingIcon = ``; +var confirmMessage = `
    تایید
    `; +var confirmIcon = ``; +var rejectMessage = `
    رد شده
    `; +var rejectIcon = ``; + + + +$(document).ready(function () { + var employeeId = $("#employeeIdForList").val(); + + //$('.btnDeletingPD').each(function () { + // if ($(this).hasClass('Unsubmitted')) { // Remove the extra class selector '.btnDeletingPD' + // $(this).closest('.pdBox').addClass('justUploaded'); // Add 'justUploaded' to the closest parent .pdBox + // } + //}); + + + $(".btnDeletingPD ").each(function () { + if ($(this).hasClass("SubmittedByAdmin") || $(this).hasClass("Rejected") || $(this).hasClass("Confirmed")) { + $(this).addClass("disable"); + } else { + return; + } + }); + + $(document).off('click', '.btnUploadingPD').on('click', '.btnUploadingPD', function (event) { + event.preventDefault(); + const index = $(this).data('index'); + $('input[type="file"][data-index="' + index + '"]').click(); + }); + + $('.pdBox').each(function () { + if ($(".isTrue").hasClass("isTrue") && $(".Unsubmitted").hasClass("Unsubmitted") || $(".SubmittedByClient").hasClass("SubmittedByClient")) { + $(".btnCreateNew").prop("disabled", false); + $(".btnCreateNew ").removeClass("disable"); + } else { + $(".btnCreateNew ").addClass("disable"); + } + }); + + $('.pdBox').each(function () { + // Check if there's a button with the 'submitted' class inside the pdBox + if ($(this).find('button.SubmittedByAdmin').length > 0) { + $(this).addClass('pending'); + $(this).find(".pdImageBox .sign").addClass("pendingSign").html(pendingIcon); + $(this).find(".btnUploadingPD").addClass("disable"); + $(this).find(".resultMessage").html(pendingMessage); + } + if ($(this).find('button.Confirmed').length > 0) { + $(this).addClass('complete'); + $(this).find(".pdImageBox .sign").addClass("completeSign").html(confirmIcon); + $(this).find(".resultMessage").html(confirmMessage); + } + if ($(this).find('button.Rejected').length > 0) { + $(this).addClass('discomplete'); + $(this).find(".pdImageBox .sign").addClass("discompleteSign").html(rejectIcon); + $(this).find(".resultMessage").html(rejectMessage); + } + }); + + $(document).off('change', '.file-input').on('change', '.file-input', function (e) { + e.preventDefault(); + + const fileInputFile = this.files[0]; + const indexFileValue = $(this).data('index'); + const validExtensions = ['jpg', 'jpeg', 'png']; + const validPdfExtensions = ['pdf']; + + const label = $(`#label_${indexFileValue}`).val(); + const pdBox = $(this).closest('.pdBox'); + const img = pdBox.find('.preview-image'); + var deleteButton = pdBox.find('.btnDeletingPD'); + + if (fileInputFile) { + const fileName = fileInputFile.name.toLowerCase(); + const extension = fileName.split('.').pop(); + + // بررسی فرمت‌های تصویر (jpeg, jpg, png) + if (validExtensions.includes(extension)) { + if (fileInputFile.size > 5000000) { + showAlertMessage('.alert-msg', 'لطفا فایل حجم کمتر از 5 مگابایت را آپلود کنید.', 3500); + $(this).val(''); + return; + } + + const reader = new FileReader(); + reader.onload = function (event) { + img.attr('src', event.target.result); + + const base64String = event.target.result.split(',')[1]; + const byteCharacters = atob(base64String); + const byteNumbers = new Array(byteCharacters.length); + for (let i = 0; i < byteCharacters.length; i++) { + byteNumbers[i] = byteCharacters.charCodeAt(i); + } + const byteArray = new Uint8Array(byteNumbers); + const blob = new Blob([byteArray], { type: fileInputFile.type }); + const newFile = new File([blob], fileInputFile.name, { type: fileInputFile.type }); + + let existingIndex = command.findIndex(item => item.Label === label); + if (existingIndex !== -1) { + command[existingIndex].PictureFile = newFile; + } else { + let picturesPart = { + Label: label, + PictureFile: newFile + }; + command.push(picturesPart); + } + }; + + reader.readAsDataURL(fileInputFile); + $('#createUploadingFiles').prop('disabled', false).removeClass('disable'); + + pdBox.removeClass(); + pdBox.addClass('pdBox'); + + showLoadingAnimation(indexFileValue); + } + else if (validPdfExtensions.includes(extension)) { + var fileReader = new FileReader(); + + fileReader.onload = function () { + var typedarray = new Uint8Array(this.result); + pdfjsLib.getDocument(typedarray).promise.then(function (pdf) { + totalPageCount = pdf.numPages; + + if (totalPageCount > 1) { + showAlertMessage('.alert-msg', 'آپلود مجاز نیست! تعداد صفحات نباید بیشتر از ۱ باشد.', 3500); + return; + } + + pdf.getPage(1).then(function (page) { + var scale = 2.0; + var viewport = page.getViewport({ scale: scale }); + + var canvas = document.createElement("canvas"); + canvas.className = "page"; + canvas.title = "Page 1"; + canvas.height = viewport.height; + canvas.width = viewport.width; + + var context = canvas.getContext("2d"); + + page.render({ + canvasContext: context, + viewport: viewport + }).promise.then(function () { + pdBox.removeClass(); + pdBox.addClass('pdBox'); + uploadCanvasAsFile(canvas, `${label}_${indexFileValue}.jpg`, indexFileValue, label); + }).catch(function (error) { + showAlertMessage('.alert-msg', 'مشکلی در پردازش PDF رخ داده است!', 3500); + }); + }).catch(function (error) { + showAlertMessage('.alert-msg', 'خطا در دریافت صفحه PDF!', 3500); + }); + + }).catch(function (error) { + showAlertMessage('.alert-msg', 'خطا در بارگذاری فایل PDF!', 3500); + }); + }; + + fileReader.readAsArrayBuffer(fileInputFile); + + } + else { + showAlertMessage('.alert-msg', 'فرمت فایل باید یکی از موارد jpeg, jpg, png یا pdf باشد.', 3500); + return; + } + + deleteButton.removeClass('disable'); + if (pdBox.find('button.Rejected').length > 0) { + pdBox.find(".btnSendToChecker").removeClass("disable"); + } + } + }); + + //$(document).off('change', '.file-input').on('change', '.file-input', function (e) { + // e.preventDefault(); + + // const fileInputFile = this.files[0]; + // const indexFileValue = $(this).data('index'); + // const validExtensions = ['jpg', 'jpeg', 'png']; + + // const label = $(`#label_${indexFileValue}`).val(); + // const pdBox = $(this).closest('.pdBox'); + // const img = pdBox.find('.preview-image'); + + // if (fileInputFile) { + // const fileName = fileInputFile.name.toLowerCase(); + // const extension = fileName.split('.').pop(); + + // if (validExtensions.includes(extension)) { + // if (fileInputFile.size > 5000000) { + // showAlertMessage('.alert-msg', 'لطفا فایل حجم کمتر از 5 مگابایت را آپلود کنید.', 3500); + // $(this).val(''); + // return; + // } + + // // خواندن فایل و نمایش آن + // const reader = new FileReader(); + // reader.onload = function (event) { + // img.attr('src', event.target.result); + + // const base64String = event.target.result.split(',')[1]; + // const byteCharacters = atob(base64String); + // const byteNumbers = new Array(byteCharacters.length); + // for (let i = 0; i < byteCharacters.length; i++) { + // byteNumbers[i] = byteCharacters.charCodeAt(i); + // } + // const byteArray = new Uint8Array(byteNumbers); + // const blob = new Blob([byteArray], { type: fileInputFile.type }); + // const newFile = new File([blob], fileInputFile.name, { type: fileInputFile.type }); + + // let picturesPart = { + // Label: label, + // PictureFile: newFile + // }; + // pictures.push(picturesPart); + // }; + + // reader.readAsDataURL(fileInputFile); + + // //uploadFile(fileInputFile, indexFileValue, label); + // } else { + // showAlertMessage('.alert-msg', 'فرمت فایل باید یکی از موارد jpeg, jpg یا png باشد.', 3500); + // } + // } + + // console.log(pictures); + //}); + + + + + + //$(document).off('change', '.file-input').on('change', '.file-input', function (e) { + // e.preventDefault(); + + // const fileInputFile = this.files[0]; + // const indexFileValue = $(this).data('index'); + // const validExtensions = ['jpg', 'jpeg', 'png']; + // const validPdfExtensions = ['pdf']; + + // const label = $(`#label_${indexFileValue}`).val(); + + // if (fileInputFile) { + // const fileName = fileInputFile.name.toLowerCase(); + // const extension = fileName.split('.').pop(); + + // if (validExtensions.includes(extension)) { + // if (fileInputFile.size > 5000000) { + // showAlertMessage('.alert-msg', 'لطفا فایل حجم کمتر از 5 مگابایت را آپلود کنید.', 3500); + // $(this).val(''); + // return; + // } + // uploadFile(fileInputFile, indexFileValue, label); + // } else if (validPdfExtensions.includes(extension)) { + + // var fileReader = new FileReader(); + + // fileReader.onload = function () { + // var typedarray = new Uint8Array(this.result); + // pdfjsLib.getDocument(typedarray).promise.then(function (pdf) { + // totalPageCount = pdf.numPages; + + // if (totalPageCount > 1) { + // showAlertMessage('.alert-msg', 'آپلود مجاز نیست! تعداد صفحات نباید بیشتر از ۱ باشد.', 3500); + // return; + // } + + // pdf.getPage(1).then(function (page) { // فقط صفحه اول پردازش می‌شود + // var scale = 2.0; + // var viewport = page.getViewport({ scale: scale }); + + // var canvas = document.createElement("canvas"); + // canvas.className = "page"; + // canvas.title = "Page 1"; + // canvas.height = viewport.height; + // canvas.width = viewport.width; + + // var context = canvas.getContext("2d"); + + // page.render({ + // canvasContext: context, + // viewport: viewport + // }) + // .promise.then(function () { + // uploadCanvasAsFile(canvas, `${label}_${indexFileValue}.jpg`, indexFileValue, label); + // }) + // .catch(function (error) { + // showAlertMessage('.alert-msg', 'مشکلی در پردازش PDF رخ داده است!', 3500); + // }); + // }).catch(function (error) { + // showAlertMessage('.alert-msg', 'خطا در دریافت صفحه PDF!', 3500); + // }); + + // }).catch(function (error) { + // showAlertMessage('.alert-msg', 'خطا در بارگذاری فایل PDF!', 3500); + // }); + // }; + + // fileReader.readAsArrayBuffer(fileInputFile); + + // } else { + // showAlertMessage('.alert-msg', 'فرمت فایل باید یکی از موارد jpeg, jpg یا png باشد.', 3500); + // } + // } + //}); + + $(document).off('click', '.btnDeletingPD').on('click', '.btnDeletingPD', function (event) { + event.preventDefault(); + const indexId = $(this).data('index'); + + swal.fire({ + title: "اخطار", + text: "آیا میخواهید تصویر موجود را حذف کنید؟", + icon: "warning", + showCancelButton: true, + confirmButtonText: "بله", + cancelButtonText: "خیر", + confirmButtonColor: '#84cc16', + reverseButtons: true + }).then((result) => { + if (result.isConfirmed) { + removeEmployeeDocumentByLabel(indexId, employeeId); + const pdBox = $('input[data-index="' + indexId + '"]').closest('.pdBox'); + const img = pdBox.find('.preview-image'); + img.attr('src', '/assetsclient/images/pd-image.png'); + $(this).addClass('disable'); + } else { + $(this).removeClass('disable'); + } + }); + + }); + + $(".exitModal").click(function () { + if (uploadFileCount > 0) { + swal.fire({ + title: "اخطار", + text: "در صورت انصراف عملیات ثبت نخواهد شد!", + icon: "warning", + showCancelButton: true, + confirmButtonText: "بله", + cancelButtonText: "خیر", + confirmButtonColor: '#84cc16', + reverseButtons: true + }).then((result) => { + if (result.isConfirmed) { + cancelOperation(); + } + }); + } else { + $('#MainModal').modal('hide'); + } + }); +}); + +function cancelOperation() { + $.ajax({ + url: cancelOperationUrl, + method: 'POST', + data: { employeeId: employeeId }, + headers: { 'RequestVerificationToken': antiForgeryToken }, + success: function (response) { + if (response.success) { + $('#MainModal').modal('hide'); + } else { + showAlertMessage('.alert-success-msg', response.message, 3500); + } + }, + error: function (response) { + showAlertMessage('.alert-msg', response.message, 3500); + } + }); +} + +var indexCount = 0; +var activeUploads = 0; +function showLoadingAnimation(indexId) { + uploadFileCount = uploadFileCount + 1; + + //const pdBox = $('input[data-index="' + indexId + '"]').closest('.pdBox'); + //const spinner = pdBox.find('.spinner-loading-progress'); + //const percentageText = pdBox.find('.percentageText'); + + //spinner.show(); + //activeUploads++; + //$('#createUploadingFiles').prop('disabled', true).addClass('disable'); + + //let simulatedProgress = 0; + //const progressInterval = setInterval(function () { + // if (simulatedProgress < 100) { + // simulatedProgress += 2; + // spinner.css('width', `${simulatedProgress}%`); + // percentageText.text(`${simulatedProgress}%`); + // } + + // if (simulatedProgress >= 100) { + // clearInterval(progressInterval); + // } + //}, 30); + + //setTimeout(function () { + // clearInterval(progressInterval); + // spinner.css('width', '100%'); + // percentageText.text('100%'); + + // spinner.hide(); + // spinner.css('width', '0%'); + // handleActiveUploads(); + //}, 2300); +} + +//function uploadCanvasAsFile(canvas, fileName, indexFileValue, label) { +// canvas.toBlob(function (blob) { +// if (!blob) { +// showAlertMessage('.alert-msg', 'مشکلی در تبدیل تصویر رخ داده است!', 3500); +// return; +// } + +// let file = new File([blob], fileName, { type: 'image/png' }); + +// uploadFile(file, indexFileValue, label); + +// }, "image/png"); +//} + +function uploadCanvasAsFile(canvas, fileName, indexFileValue, label) { + canvas.toBlob(function (blob) { + if (!blob) { + showAlertMessage('.alert-msg', 'مشکلی در تبدیل تصویر رخ داده است!', 3500); + return; + } + + let file = new File([blob], fileName, { type: 'image/png' }); + const imageUrl = URL.createObjectURL(blob); + + const img = $(`#${label}`); + img.attr('src', imageUrl); + + let existingIndex = command.findIndex(item => item.Label === label); + if (existingIndex !== -1) { + command[existingIndex].PictureFile = file; + } else { + let picturesPart = { + Label: label, + PictureFile: file + }; + command.push(picturesPart); + } + + $('#createUploadingFiles').prop('disabled', false).removeClass('disable'); + showLoadingAnimation(indexFileValue); + + }, "image/png"); +} + +//var indexCount = 0; +//var activeUploads = 0; +//function uploadFile(file, indexId, label) { +// const formData = new FormData(); +// formData.append('command.EmployeeId', employeeId); +// formData.append('command.WorkshopId', workshopId); +// formData.append('command.Label', label); +// formData.append('command.PictureFile', file); + +// const pdBox = $('input[data-index="' + indexId + '"]').closest('.pdBox'); +// const spinner = pdBox.find('.spinner-loading-progress'); + +// const percentageText = pdBox.find('.percentageText'); + +// spinner.show(); +// activeUploads++; +// $('#createUploadingFiles').prop('disabled', true).addClass('disable'); + +// const xhr = new XMLHttpRequest(); +// xhr.open('POST', saveUploadFileModalAjax, true); +// xhr.setRequestHeader('RequestVerificationToken', antiForgeryToken); + +// const uploadStartTime = new Date().getTime(); +// let simulatedProgress = 0; +// let actualProgress = 0; +// let isUploadComplete = false; + +// // Simulate progress every 20ms, gradually increasing the bar until the actual progress is reached +// const progressInterval = setInterval(function () { +// if (simulatedProgress < actualProgress && !isUploadComplete) { +// simulatedProgress += 1; // Gradually increase simulated progress +// spinner.css('width', `${simulatedProgress}%`); +// percentageText.text(`${simulatedProgress}%`); +// } + +// if (simulatedProgress >= 100) { +// clearInterval(progressInterval); // Stop once the progress hits 100% +// } +// }, 30); // Increases by 1% every 20ms, making it smooth + +// // Actual upload progress listener +// xhr.upload.addEventListener('progress', function (e) { +// if (e.lengthComputable) { +// actualProgress = Math.round((e.loaded / e.total) * 100); + +// // If the actual progress is slow, allow the simulated progress to match it naturally +// if (actualProgress >= simulatedProgress) { +// simulatedProgress = actualProgress; +// spinner.css('width', `${simulatedProgress}%`); +// percentageText.text(`${simulatedProgress}%`); +// } +// } +// }); + +// // On upload completion +// xhr.onload = function () { +// spinner.css('transition', 'all 2s ease-in'); +// const uploadEndTime = new Date().getTime(); +// const timeDiff = uploadEndTime - uploadStartTime; +// const minUploadTime = 2500; // Minimum of 2 seconds for the whole process + +// const response = JSON.parse(xhr.responseText); +// isUploadComplete = true; // Mark the upload as complete +// const delayTime = Math.max(minUploadTime - timeDiff, 0); + +// setTimeout(function () { +// clearInterval(progressInterval); // Clear the interval when done +// simulatedProgress = 100; +// spinner.css('width', '100%'); +// percentageText.text('100%'); + +// var id2 = $("#employeeIdForList").val(); + +// if (xhr.status === 200 && response.isSuccedded) { +// indexCount++; +// const reader = new FileReader(); +// reader.onload = function (e) { + +// uploadFileCount = uploadFileCount + 1; + +// const pdBox = $('input[data-index="' + indexId + '"]').closest('.pdBox'); +// const img = pdBox.find('.preview-image'); +// img.attr('src', e.target.result); + +// //employeePicture = $('#EmployeePicture').attr('src'); +// //nationalCardFront = $('#NationalCardFront').attr('src'); +// //nationalCardRear = $('#NationalCardRear').attr('src'); +// //militaryServiceCard = $('#MilitaryServiceCard').attr('src'); +// //idCardPage1 = $('#IdCardPage1').attr('src'); +// //idCardPage2 = $('#IdCardPage2').attr('src'); +// //idCardPage3 = $('#IdCardPage3').attr('src'); +// //idCardPage4 = $('#IdCardPage4').attr('src'); +// //console.log(idCardPage2); + +// // updatePreviewImage(indexId, id2, e.target.result); + +// }; + +// if (pdBox.hasClass("complete") || pdBox.hasClass("discomplete")) { + +// pdBox.removeClass("discomplete complete"); +// pdBox.find(".sign").removeClass("discompleteSign completeSign"); +// pdBox.find(".sign").empty(); +// pdBox.find(".btnDeletingPD").removeClass("Rejected Confirmed"); +// pdBox.find("confirmedMessage ").remove(); +// pdBox.find(".resultMessage").empty(); +// } + +// pdBox.find('.btnDeletingPD').removeClass('disable').addClass("Unsubmitted"); + +// reader.readAsDataURL(file); +// } else { +// showAlertMessage('.alert-msg', response.message || 'Error uploading file', 3500); +// $('input[type="file"][data-index="' + indexId + '"]').val(''); +// } +// spinner.css('width', '0%'); // Reset the progress bar +// spinner.hide(); +// handleActiveUploads(); +// }, delayTime); // Ensure a minimum of 2 seconds for the full process +// }; + +// // Handle upload error +// xhr.onerror = function () { +// clearInterval(progressInterval); // Stop progress on error +// showAlertMessage('.alert-msg', 'مشکلی در آپلود فایل به وجود آمد.', 3500); +// $('input[type="file"][data-index="' + indexId + '"]').val(''); +// spinner.css('width', '0%'); +// spinner.hide(); +// handleActiveUploads(); +// }; + +// xhr.send(formData); +//} + +function handleActiveUploads() { + activeUploads--; + if (activeUploads === 0) { + $('#createUploadingFiles').prop('disabled', false).removeClass('disable'); + } +} + +function showAlertMessage(selector, message, timeout) { + $(selector).show(); + $(selector + ' p').text(message); + setTimeout(function () { + $(selector).hide(); + $(selector + ' p').text(''); + }, timeout); +} + +function removeEmployeeDocumentByLabel(indexId, employeeId) { + const label = $(`#label_${indexId}`).val(); + const pdBox = $('input[data-index="' + indexId + '"]').closest('.pdBox'); + + $.ajax({ + url: deleteFileAjaxUrl, + method: 'POST', + data: { label: label, employeeId: employeeId }, + headers: { 'RequestVerificationToken': antiForgeryToken }, + success: function (response) { + if (response.isSuccedded) { + uploadFileCount = uploadFileCount - 1; + + showAlertMessage('.alert-success-msg', 'تصویر موجود با موفقیت حذف شد.', 3500); + /* $(`#label_${indexId}`).val('');*/ + pdBox.find('.btnDeletingPD').removeClass("Unsubmitted"); + pdBox.find('.uploaderSign').hide(); + updatePreviewImage(Number(indexId), Number(employeeId), "/assetsclient/images/pd-image.png"); + + + } else { + showAlertMessage('.alert-success-msg', response.message, 3500); + } + }, + error: function (response) { + showAlertMessage('.alert-msg', response.message, 3500); + } + }); +} + +function updatePreviewImage(indexId, id2, result) { + switch (indexId) { + case 0: + $(`#employeePicture_${id2}.preview-image`).attr('src', result); + break; + case 1: + $(`#nationalCardFront_${id2}.preview-image`).attr('src', result); + break; + case 2: + $(`#nationalCardRear_${id2}.preview-image`).attr('src', result); + break; + case 3: + $(`#militaryServiceCard_${id2}.preview-image`).attr('src', result); + break; + case 4: + $(`#idCardPage1_${id2}.preview-image`).attr('src', result); + break; + case 5: + $(`#idCardPage2_${id2}.preview-image`).attr('src', result); + break; + case 6: + $(`#idCardPage3_${id2}.preview-image`).attr('src', result); + break; + case 7: + $(`#idCardPage4_${id2}.preview-image`).attr('src', result); + break; + default: + console.warn('Unexpected indexId:', indexId); + } +} + +function saveSubmit(id) { + var loading = $(".spinner-loading"); + + loading.show(); + + //var data = { + // 'cmd.EmployeeDocumentsId': id + //} + + var formData = new FormData(); + formData.append('employeeId', employeeId); + + command.forEach((item, index) => { + formData.append(`command[${index}].Label`, item.Label); + formData.append(`command[${index}].PictureFile`, item.PictureFile); + }); + + $.ajax({ + url: saveGroupSubmitAjax, + method: 'POST', + data: formData, + processData: false, + contentType: false, + headers: { 'RequestVerificationToken': antiForgeryToken }, + success: function (response) { + loading.hide(); + if (response.isSuccedded) { + + + $(`#loadRejectedDocumentWorkFlow`).html(''); + loadClientRejectedDocument(); + $('#MainModal').modal('hide'); + _RefreshCountMenu(); + _RefreshCountEmployeeDocumentsMenu(); + + //window.location.reload(); + + //var id2 = $("#employeeIdForList").val(); + + //$(".pdBox").each(function () { + // var indexId = $(this).find('.btnUploadingPD').data('index'); + // var imgSrc = $(this).find('.preview-image').attr("src"); + // updatePreviewImage(indexId, id2, imgSrc); + //}); + + + //showAlertMessage('.alert-success-msg', 'تصویر موجود با موفقیت ارسال شد.', 3500); + //$('#MainModal').modal('hide'); + + //if (rejectCount === 0) { + // // remove item of list + //} + } else { + showAlertMessage('.alert-msg', response.message, 3500); + } + }, + error: function () { + loading.hide(); + showAlertMessage('.alert-msg', 'مشکلی در ارسال تصویر به وجود آمد.', 3500); + } + }); + + +} + +function cancelOP() { + + $.ajax({ + url: saveSubmitAjax, + method: 'POST', + data: { employeeId: employeeId, }, + headers: { 'RequestVerificationToken': antiForgeryToken }, + success: function (response) { + loading.hide(); + $('#MainModal').modal('hide'); + + if (response.isSuccedded) { + showAlertMessage('.alert-success-msg', 'تصویر موجود با موفقیت ارسال شد.', 3500); + + } else { + showAlertMessage('.alert-msg', response.message, 3500); + } + }, + error: function () { + loading.hide(); + showAlertMessage('.alert-msg', 'مشکلی در ارسال تصویر به وجود آمد.', 3500); + } + }); + + +} \ No newline at end of file diff --git a/WorkFlow/Application/WorkFlow.Application.Contracts/AdminWorkFlow/IAdminWorkFlowApplication.cs b/WorkFlow/Application/WorkFlow.Application.Contracts/AdminWorkFlow/IAdminWorkFlowApplication.cs index 3dc06f8f..2100f396 100644 --- a/WorkFlow/Application/WorkFlow.Application.Contracts/AdminWorkFlow/IAdminWorkFlowApplication.cs +++ b/WorkFlow/Application/WorkFlow.Application.Contracts/AdminWorkFlow/IAdminWorkFlowApplication.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; using _0_Framework.Application; @@ -56,10 +57,17 @@ public interface IAdminWorkFlowApplication Task EditEmployeeInEmployeeDocumentWorkFlow(EditEmployeeInEmployeeDocument command); + /// + /// لیست کارگاه هایی که از کلاینت، پرسنلی را شروع به کار زدند و مدارک آنها کامل آپلود نشده است + /// + /// + /// + /// + Task> GetWorkshopDocumentCreatedEmployeeForAdmin(List workshops, long roleId); #endregion - Task GetEmployeeDocumentWorkFlowCountsForAdmin(List workshopIds); - Task GetWorkFlowCountsForAdmin(List workshopIds, long accountId); + Task GetEmployeeDocumentWorkFlowCountsForAdmin(List workshopIds, long roleId); + Task GetWorkFlowCountsForAdmin(List workshopIds, long accountId, long roleId); Task GetWorkFlowCountForChecker(); @@ -85,6 +93,7 @@ public interface IAdminWorkFlowApplication #endregion + } /// @@ -112,7 +121,7 @@ public class ClientLeftWorkEmployeesWorkFlowViewModel /// public string LeftWorkDate { get; set; } = string.Empty; - + } /// diff --git a/WorkFlow/Application/WorkFlow.Application.Contracts/WorkFlow/IWorkFlowApplication.cs b/WorkFlow/Application/WorkFlow.Application.Contracts/WorkFlow/IWorkFlowApplication.cs index 0e3186a3..518c2ee4 100644 --- a/WorkFlow/Application/WorkFlow.Application.Contracts/WorkFlow/IWorkFlowApplication.cs +++ b/WorkFlow/Application/WorkFlow.Application.Contracts/WorkFlow/IWorkFlowApplication.cs @@ -11,13 +11,17 @@ public interface IWorkFlowApplication Task CreateRollCallConfirmedWithoutLunchBreak(CreateRollCallConfirmedWithoutLunchBreak command); - Task GetCountAllWorkFlows(long workshopId); + Task GetCountAllWorkFlows(long workshopId, long accountId); Task GetRollCallAbsentsWorkFlows(long workshopId); Task GetCountCutRollCallByBgService(long workshopId); - Task GetAllWorkFlowCount(long workshopId); + Task GetAllWorkFlowCount(long workshopId , long accountId); Task GetAllWorkFlowCountAsync(long workshopId); - Task GetAbsentRollCallWorkFlowsByDate(long workshopId, DateTime date); + Task GetAllRollCallCount(long workshopId); + Task GetAllEmployeeDocuments(long workshopId, long accountId); + + + Task GetAbsentRollCallWorkFlowsByDate(long workshopId, DateTime date); Task GetEmployeesWithoutLunchBreakByDate(long workshopId, DateTime date); Task GetRollCallWorkFlowsCutByBgServiceByDate(long workshopId, DateTime date); Task GetUndefinedRollCallsByDate(long workshopId, DateTime date); diff --git a/WorkFlow/Application/WorkFlow.Application/AdminWorkFlowApplication.cs b/WorkFlow/Application/WorkFlow.Application/AdminWorkFlowApplication.cs index 26e1608b..088551fc 100644 --- a/WorkFlow/Application/WorkFlow.Application/AdminWorkFlowApplication.cs +++ b/WorkFlow/Application/WorkFlow.Application/AdminWorkFlowApplication.cs @@ -5,21 +5,20 @@ using WorkFlow.Infrastructure.ACL.Employee; using WorkFlow.Infrastructure.ACL.EmployeeDocuments; using WorkFlow.Infrastructure.ACL.Workshop; - namespace WorkFlow.Application { - public class AdminWorkFlowApplication : IAdminWorkFlowApplication - { - private readonly IWorkFlowEmployeeDocumentsACL _workFlowEmployeeDocumentsACL; + public class AdminWorkFlowApplication : IAdminWorkFlowApplication + { + private readonly IWorkFlowEmployeeDocumentsACL _workFlowEmployeeDocumentsACL; private readonly IWorkFlowWorkshopACL _workFlowWorkshopACL; private readonly IWorkFlowEmployeeACL _workFlowEmployeeACL; - public AdminWorkFlowApplication(IWorkFlowEmployeeDocumentsACL workFlowEmployeeDocumentsACL, IWorkFlowWorkshopACL workFlowWorkshopAcl, IWorkFlowEmployeeACL workFlowEmployeeAcl) + public AdminWorkFlowApplication(IWorkFlowEmployeeDocumentsACL workFlowEmployeeDocumentsACL, IWorkFlowWorkshopACL workFlowWorkshopACL, IWorkFlowEmployeeACL workFlowEmployeeACL) { _workFlowEmployeeDocumentsACL = workFlowEmployeeDocumentsACL; - _workFlowWorkshopACL = workFlowWorkshopAcl; - _workFlowEmployeeACL = workFlowEmployeeAcl; + _workFlowWorkshopACL = workFlowWorkshopACL; + _workFlowEmployeeACL = workFlowEmployeeACL; } #region Pooya @@ -29,28 +28,29 @@ namespace WorkFlow.Application return _workFlowEmployeeDocumentsACL.GetWorkshopDocumentsAwaitingReviewForChecker(workshops); } - public async Task GetEmployeeDocumentWorkFlowCountsForAdmin(List workshopIds) + + + public async Task GetEmployeeDocumentWorkFlowCountsForAdmin(List workshopIds,long roleId) { - var submittedDocumentsByClient = await _workFlowEmployeeDocumentsACL.GetAdminWorkFlowCountForSubmittedDocuments(workshopIds); + var count = 0; + count += await _workFlowEmployeeDocumentsACL.GetWorkshopDocumentRejectedForAdmin(workshopIds,roleId); - var newEmployees = await _workFlowEmployeeDocumentsACL.GetAdminWorkFlowCountForNewEmployees(workshopIds); + count+= await _workFlowEmployeeDocumentsACL.GetCreatedEmployeesWorkshopDocumentForAdmin(workshopIds,roleId); + //count+= await _workFlowEmployeeDocumentsACL.GetClientRejectedDocumentWorkshopsForAdmin(workshopIds, roleId); - return submittedDocumentsByClient + newEmployees; + return count; } - - - public async Task GetWorkFlowCountsForAdmin(List workshopIds, long accountId) + public async Task GetWorkFlowCountsForAdmin(List workshopIds, long accountId,long roleId) { - var employeeDocumentWorkFlowCounts = await GetEmployeeDocumentWorkFlowCountsForAdmin(workshopIds); + var employeeDocumentWorkFlowCounts = await GetEmployeeDocumentWorkFlowCountsForAdmin(workshopIds, roleId); var startWork = await GetWorkshopsForEmployeeStartWorkCount(accountId); var leftWork = await GetWorkshopsForLeftWorkTempCount(accountId); return employeeDocumentWorkFlowCounts + startWork + leftWork; } - public async Task GetWorkFlowCountForChecker() { return await _workFlowEmployeeDocumentsACL.GetCheckerWorkFlowCount(); @@ -64,6 +64,7 @@ namespace WorkFlow.Application return _workFlowEmployeeDocumentsACL.GetWorkshopsWithDocumentsAwaitingUploadForAdmin(workshops); } + #endregion #region Mahan @@ -118,6 +119,15 @@ namespace WorkFlow.Application #endregion + #region آپلود مدارک پرسنل + + public async Task> GetWorkshopDocumentCreatedEmployeeForAdmin(List workshops, long roleId) + { + return await _workFlowEmployeeDocumentsACL.GetWorkshopDocumentCreatedEmployeeForAdmin(workshops, roleId); + } + + #endregion + #endregion } diff --git a/WorkFlow/Application/WorkFlow.Application/WorkFlowApplication.cs b/WorkFlow/Application/WorkFlow.Application/WorkFlowApplication.cs index 448087a8..aa609e69 100644 --- a/WorkFlow/Application/WorkFlow.Application/WorkFlowApplication.cs +++ b/WorkFlow/Application/WorkFlow.Application/WorkFlowApplication.cs @@ -1,6 +1,7 @@ using _0_Framework.Application; using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using Company.Domain.RollCallAgg.DomainService; +using CompanyManagment.App.Contracts.EmployeeDocuments; using WorkFlow.Application.Contracts.RollCallConfirmedAbsence; using WorkFlow.Application.Contracts.RollCallConfirmedWithoutLunchBreak; using WorkFlow.Application.Contracts.Shared; @@ -21,8 +22,8 @@ public class WorkFlowApplication : IWorkFlowApplication private readonly IWorkFlowCustomizedWorkshopSettingsACL _customizedWorkshopSettingsACL; private readonly IRollCallDomainService _rollCallDomainService; private readonly IRollCallConfirmedWithoutLunchBreakRepository _rollCallConfirmedWithoutLunchBreakRepository; - - public WorkFlowApplication(IRollCallConfirmedAbsenceRepository absenceRepository, IWorkFlowRollCallACL rollCallACL, IWorkFlowCheckoutACL checkoutACL, IWorkFlowCustomizedWorkshopSettingsACL customizedWorkshopSettingsACL, IRollCallConfirmedWithoutLunchBreakRepository rollCallConfirmedWithoutLunchBreakRepository, IRollCallDomainService rollCallDomainService) + private readonly IEmployeeDocumentsApplication _employeeDocumentsApplication; + public WorkFlowApplication(IRollCallConfirmedAbsenceRepository absenceRepository, IWorkFlowRollCallACL rollCallACL, IWorkFlowCheckoutACL checkoutACL, IWorkFlowCustomizedWorkshopSettingsACL customizedWorkshopSettingsACL, IRollCallConfirmedWithoutLunchBreakRepository rollCallConfirmedWithoutLunchBreakRepository, IRollCallDomainService rollCallDomainService, IEmployeeDocumentsApplication employeeDocumentsApplication) { _absenceRepository = absenceRepository; _rollCallACL = rollCallACL; @@ -30,6 +31,7 @@ public class WorkFlowApplication : IWorkFlowApplication _customizedWorkshopSettingsACL = customizedWorkshopSettingsACL; _rollCallConfirmedWithoutLunchBreakRepository = rollCallConfirmedWithoutLunchBreakRepository; _rollCallDomainService = rollCallDomainService; + _employeeDocumentsApplication = employeeDocumentsApplication; } public async Task CreateRollCallConfirmedAbsence(CreateRollCallConfirmedAbsence command) @@ -57,16 +59,16 @@ public class WorkFlowApplication : IWorkFlowApplication var newEntity = new RollCallConfirmedWithoutLunchBreak(command.RollCallId, entity.EmployeeId, entity.WorkshopId, entity.RollCallDate); - _rollCallConfirmedWithoutLunchBreakRepository.Create(newEntity); + await _rollCallConfirmedWithoutLunchBreakRepository.CreateAsync(newEntity); await _rollCallConfirmedWithoutLunchBreakRepository.SaveChangesAsync(); return op.Succcedded(); } - public async Task GetCountAllWorkFlows(long workshopId) + public async Task GetCountAllWorkFlows(long workshopId,long accountId) { int count = 0; - count += await GetAllWorkFlowCount(workshopId); + count += await GetAllWorkFlowCount(workshopId,accountId); return count; } public Task GetRollCallAbsentsWorkFlows(long workshopId) @@ -81,29 +83,53 @@ public class WorkFlowApplication : IWorkFlowApplication { return (await GetRollCallWorkFlowsCutByBgService(workshopId)).Count; } - public async Task GetAllWorkFlowCount(long workshopId) - { - var count = 0; - var activeServiceByWorkshopId = _rollCallACL.GetActiveServiceByWorkshopId(workshopId); - if (activeServiceByWorkshopId == null) - { - return count; - } - //count += _rollCallACL.GetRollCallAbsentsWorkFlows(accId, workshopId); - count += (await GetAbsentRollCallWorkFlows(workshopId))?.Count ?? 0; - count += (await GetRollCallWorkFlowsCutByBgService(workshopId))?.Count ?? 0; - count += (await GetEmployeesWithoutLunchBreak(workshopId))?.Count ?? 0; - //count += (await GetRollCallsOverlappingLeaves(workshopId))?.Count ?? 0; - count += (await GetUndefinedRollCalls(workshopId))?.Count ?? 0; + + + public async Task GetAllWorkFlowCount(long workshopId,long accountId) + { + var count = 0; + // RollCall + + count += await GetAllRollCallCount(workshopId); + + count += await GetAllEmployeeDocuments(workshopId,accountId ); + + // Employee Documents + return count; } + + public async Task GetAllEmployeeDocuments(long workshopId, long accountId) + { + int count = 0; + count += (await _employeeDocumentsApplication.GetClientRejectedDocumentForClient(workshopId, accountId)).Count; + return count; + } + public Task GetAllWorkFlowCountAsync(long workshopId) { return Task.FromResult(20); } + public async Task GetAllRollCallCount(long workshopId) + { + int count = 0; + var activeServiceByWorkshopId = _rollCallACL.GetActiveServiceByWorkshopId(workshopId); + if (activeServiceByWorkshopId == null) + { + return count; + } + //count += _rollCallACL.GetRollCallAbsentsWorkFlows(accId, workshopId); + count += (await GetAbsentRollCallWorkFlows(workshopId))?.Count ?? 0; + count += (await GetRollCallWorkFlowsCutByBgService(workshopId))?.Count ?? 0; + count += (await GetEmployeesWithoutLunchBreak(workshopId))?.Count ?? 0; + //count += (await GetRollCallsOverlappingLeaves(workshopId))?.Count ?? 0; + count += (await GetUndefinedRollCalls(workshopId))?.Count ?? 0; + return count; + } + #region Methods For Ajax /// @@ -342,8 +368,6 @@ public class WorkFlowApplication : IWorkFlowApplication } - - #region Methods For OnGet diff --git a/WorkFlow/Infrastructure/WorkFlow.Infrastructure.ACL/EmployeeDocuments/IWorkFlowEmployeeDocumentsACL.cs b/WorkFlow/Infrastructure/WorkFlow.Infrastructure.ACL/EmployeeDocuments/IWorkFlowEmployeeDocumentsACL.cs index 26071c07..2caf93e1 100644 --- a/WorkFlow/Infrastructure/WorkFlow.Infrastructure.ACL/EmployeeDocuments/IWorkFlowEmployeeDocumentsACL.cs +++ b/WorkFlow/Infrastructure/WorkFlow.Infrastructure.ACL/EmployeeDocuments/IWorkFlowEmployeeDocumentsACL.cs @@ -3,25 +3,37 @@ using WorkFlow.Application.Contracts.AdminWorkFlow; namespace WorkFlow.Infrastructure.ACL.EmployeeDocuments { - public interface IWorkFlowEmployeeDocumentsACL - { - List GetWorkshopDocumentsAwaitingReviewForChecker(List workshops); + public interface IWorkFlowEmployeeDocumentsACL + { + List GetWorkshopDocumentsAwaitingReviewForChecker(List workshops); List GetWorkshopsWithDocumentsAwaitingUploadForAdmin(List workshops); - Task GetAdminWorkFlowCountForSubmittedDocuments(List workshopIds); Task GetAdminWorkFlowCountForNewEmployees(List workshopIds); Task GetCheckerWorkFlowCount(); + Task GetWorkshopDocumentRejectedForAdmin(List workshops, long roleId); + Task GetCreatedEmployeesWorkshopDocumentForAdmin(List workshops, long roleId); + Task GetClientRejectedDocumentWorkshopsForAdmin(List workshops, long roleId); + + + /// + /// لیست کارگاه هایی که از کلاینت، پرسنلی را شروع به کار زدند و مدارک آنها کامل آپلود نشده است + /// + /// + /// + /// + Task> GetWorkshopDocumentCreatedEmployeeForAdmin( + List workshops, long roleId); } - public class WorkFlowEmployeeDocumentsACL : IWorkFlowEmployeeDocumentsACL - { - private readonly IEmployeeDocumentsApplication _employeeDocumentsApplication; + public class WorkFlowEmployeeDocumentsACL : IWorkFlowEmployeeDocumentsACL + { + private readonly IEmployeeDocumentsApplication _employeeDocumentsApplication; - public WorkFlowEmployeeDocumentsACL(IEmployeeDocumentsApplication employeeDocumentsApplication) - { - _employeeDocumentsApplication = employeeDocumentsApplication; - } + public WorkFlowEmployeeDocumentsACL(IEmployeeDocumentsApplication employeeDocumentsApplication) + { + _employeeDocumentsApplication = employeeDocumentsApplication; + } public List GetWorkshopsWithDocumentsAwaitingUploadForAdmin(List workshops) @@ -30,8 +42,8 @@ namespace WorkFlow.Infrastructure.ACL.EmployeeDocuments { WorkshopId = x.WorkshopId, UploadItemsCount = x.EmployeesWithoutDocumentCount, - WorkshopName = x.WorkshopFullName, - EmployerName = x.EmployerName, + WorkshopName = x.WorkshopFullName, + EmployerName = x.EmployerName, }).ToList(); } @@ -48,15 +60,44 @@ namespace WorkFlow.Infrastructure.ACL.EmployeeDocuments return await _employeeDocumentsApplication.GetCheckerWorkFlowCount(); } + public async Task GetWorkshopDocumentRejectedForAdmin(List workshops, long roleId) + { + return (await _employeeDocumentsApplication.GetWorkshopDocumentRejectedForAdmin(workshops, roleId)).Count; + } + + public async Task GetCreatedEmployeesWorkshopDocumentForAdmin(List workshops, long roleId) + { + return (await _employeeDocumentsApplication.GetCreatedEmployeesWorkshopDocumentForAdmin(workshops, roleId)) + .Count; + } + + public async Task GetClientRejectedDocumentWorkshopsForAdmin(List workshops, long roleId) + { + return (await _employeeDocumentsApplication.GetClientRejectedDocumentWorkshopsForAdmin(workshops, roleId)) + .Count; + } + + public async Task> GetWorkshopDocumentCreatedEmployeeForAdmin(List workshops, long roleId) + { + return (await _employeeDocumentsApplication.GetWorkshopDocumentCreatedEmployeeForAdmin(workshops, roleId)).Select(x => new WorkshopWithDocumentsViewModelForWorkFlow() + { + WorkshopId = x.WorkshopId, + UploadItemsCount = x.EmployeesWithoutDocumentCount, + WorkshopName = x.WorkshopFullName, + EmployerName = x.EmployerName, + }).ToList(); + + } + public List GetWorkshopDocumentsAwaitingReviewForChecker(List workshops) - { - return _employeeDocumentsApplication.GetWorkshopsWithDocumentsAwaitingReviewForCheckerWorkFlow().Select(x=> new WorkshopWithDocumentsViewModelForWorkFlow() - { - WorkshopId = x.WorkshopId, - UploadItemsCount = x.SubmittedItemsCount - }).ToList(); - } + { + return _employeeDocumentsApplication.GetWorkshopsWithDocumentsAwaitingReviewForCheckerWorkFlow().Select(x => new WorkshopWithDocumentsViewModelForWorkFlow() + { + WorkshopId = x.WorkshopId, + UploadItemsCount = x.SubmittedItemsCount + }).ToList(); + } - } + } }