From e379727606bc5fea0955bb0da1a82b5d20041d57 Mon Sep 17 00:00:00 2001 From: SamSys Date: Tue, 17 Jun 2025 14:45:36 +0330 Subject: [PATCH] change --- .../Workshop/DTOs/AutoExtensionDto.cs | 64 +++++++++++++ .../DTOs/AutoExtensionEmployeeListDto.cs | 37 ++++++++ .../Repository/LeftWorkRepository.cs | 91 +++++++++++++++++++ 3 files changed, 192 insertions(+) create mode 100644 CompanyManagment.App.Contracts/Workshop/DTOs/AutoExtensionDto.cs create mode 100644 CompanyManagment.App.Contracts/Workshop/DTOs/AutoExtensionEmployeeListDto.cs diff --git a/CompanyManagment.App.Contracts/Workshop/DTOs/AutoExtensionDto.cs b/CompanyManagment.App.Contracts/Workshop/DTOs/AutoExtensionDto.cs new file mode 100644 index 00000000..48b93965 --- /dev/null +++ b/CompanyManagment.App.Contracts/Workshop/DTOs/AutoExtensionDto.cs @@ -0,0 +1,64 @@ +using System.Collections.Generic; +using Microsoft.AspNetCore.Mvc.Rendering; + +namespace CompanyManagment.App.Contracts.Workshop.DTOs; + +public class AutoExtensionDto +{ + /// + /// نام کارگاه + /// + public string WorkshopName { get; set; } + + /// + /// آیا کارفرما خطای اطلاعات هویتی دارد + /// + public bool EmployerWarning { get; set; } + + /// + /// پیام خطاهای کارفرما + /// + public string EmployerWarningMessage { get; set; } + + /// + /// آیا کارگاه پرسنل دارد + /// + public bool HavingPersonel { get; set; } + + /// + /// آی دی کارگاه + /// + public long WorkshopId { get; set; } + + /// + /// کد بایگانی کارگاه + /// + public string ArchiveCode { get; set; } + /// + /// آدرس کارگاه + /// + public string WAddress1 { get; set; } + + /// + /// آی دی کارفرما + /// + public long EmployerId { get; set; } + + /// + /// سلکت لیست پرسنل + /// + public SelectList EmployeeSelectList { get; set; } + + /// + /// لیست پرسنل + /// + public List EmployeeList { get; set; } + + /// + /// آیا مجاز به ایجاد قراداد است؟ + /// + public bool CreateContract { get; set; } + + + +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/Workshop/DTOs/AutoExtensionEmployeeListDto.cs b/CompanyManagment.App.Contracts/Workshop/DTOs/AutoExtensionEmployeeListDto.cs new file mode 100644 index 00000000..db9b0403 --- /dev/null +++ b/CompanyManagment.App.Contracts/Workshop/DTOs/AutoExtensionEmployeeListDto.cs @@ -0,0 +1,37 @@ +namespace CompanyManagment.App.Contracts.Workshop.DTOs; + +public class AutoExtensionEmployeeListDto +{ + /// + /// آی دی پرسنل + /// + public long EmployeeId { get; set; } + /// + /// نام کامل پرسنل + /// + public string EmployeeName { get; set; } + + /// + /// کد پرسنلی + /// + public long PersonnelCode { get; set; } + + /// + /// سمت + /// + public string JobType { get; set; } + + /// + /// آی دی شغل + /// + public long JobTypeId { get; set; } + + /// + /// آیا پرسنل اجازه ایجاد قرارداد دارد + /// + public bool EmployeeHasCreateContract { get; set; } + + + + +} \ No newline at end of file diff --git a/CompanyManagment.EFCore/Repository/LeftWorkRepository.cs b/CompanyManagment.EFCore/Repository/LeftWorkRepository.cs index bd43b4b4..e32e7553 100644 --- a/CompanyManagment.EFCore/Repository/LeftWorkRepository.cs +++ b/CompanyManagment.EFCore/Repository/LeftWorkRepository.cs @@ -6,8 +6,11 @@ using _0_Framework.Application; using _0_Framework.InfraStructure; using Company.Domain.LeftWorkAgg; using Company.Domain.PersonnelCodeAgg; +using CompanyManagment.App.Contracts.InsuranceList; using CompanyManagment.App.Contracts.LeftWork; using CompanyManagment.App.Contracts.PersonnleCode; +using CompanyManagment.App.Contracts.Workshop.DTOs; +using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.EntityFrameworkCore; namespace CompanyManagment.EFCore.Repository; @@ -728,4 +731,92 @@ public class LeftWorkRepository : RepositoryBase, ILeftWorkRepos } #endregion + + #region AutoExtentionEmployees + + public AutoExtensionDto AutoExtentionEmployees(long workshopId) + { + if (workshopId == 0) + return new AutoExtensionDto(); + + + var query = _context.LeftWorkList.Include(x => x.Employee).Include(w=>w.Workshop) + .Where(x => x.WorkshopId == workshopId) + .Join(_context.PersonnelCodeSet.AsSplitQuery().Where(p => p.WorkshopId == workshopId), + leftList => leftList.EmployeeId, + personnelCode => personnelCode.EmployeeId, + (leftList, personnelCode) => + new { leftList, personnelCode }) + .Join(_context.Jobs, + left => left.leftList.JobId, + job => job.id, + (left, job) => new { left, job }) + .Join(_context.EmployeeComputeOptionsSet.Where(o=>o.WorkshopId == workshopId), + leftResult => leftResult.left.leftList.EmployeeId, + options => options.EmployeeId, + (leftResult, options) => new { leftResult, options }) + .Select(result => new AutoExtensionEmployeeListDto() + { + + + EmployeeId = result.leftResult.left.leftList.EmployeeId, + EmployeeName = result.leftResult.left.leftList.EmployeeFullName, + PersonnelCode = result.leftResult.left.personnelCode == null ? 0 : result.leftResult.left.personnelCode.PersonnelCode, + + JobType = result.leftResult.job.JobName, + JobTypeId = result.leftResult.job.id, + EmployeeHasCreateContract = result.options == null ? result.leftResult.left.leftList.Workshop.CreateContract : result.options.CreateContract + + + }).ToList(); + + var workshop = _context.Workshops.FirstOrDefault(x => x.id == workshopId); + + if (query.Count > 0 && workshop != null) + { + + var result = new AutoExtensionDto() + { + WorkshopId = workshopId, + HavingPersonel = true, + WorkshopName = workshop.WorkshopFullName, + ArchiveCode = workshop.ArchiveCode, + WAddress1 = workshop.Address, + CreateContract = workshop.CreateContract, + EmployeeList = query.Select(x=> new AutoExtensionEmployeeListDto() + { + EmployeeId = x.EmployeeId, + EmployeeName = x.EmployeeName, + PersonnelCode = x.PersonnelCode, + JobType = x.JobType, + JobTypeId = x.JobTypeId, + EmployeeHasCreateContract = x.EmployeeHasCreateContract + + }).ToList(), + EmployeeSelectList = new SelectList(query.Where(x=>x.EmployeeHasCreateContract), "EmployeeId", "EmployeeName ") + + + }; + } + else + { + var result = new AutoExtensionDto() + { + WorkshopId = workshopId, + HavingPersonel = false, + WorkshopName = workshop.WorkshopFullName, + ArchiveCode = workshop.ArchiveCode, + WAddress1 = workshop.Address, + CreateContract = workshop.CreateContract + + + }; + } + + + return result; + } + + #endregion + } \ No newline at end of file