diff --git a/Company.Domain/ClassificationSchemeAgg/IClassificationGroupRepository.cs b/Company.Domain/ClassificationSchemeAgg/IClassificationGroupRepository.cs index e636b438..8da1913a 100644 --- a/Company.Domain/ClassificationSchemeAgg/IClassificationGroupRepository.cs +++ b/Company.Domain/ClassificationSchemeAgg/IClassificationGroupRepository.cs @@ -21,6 +21,27 @@ public interface IClassificationGroupRepository : IRepository Task> GetGroupAndJobs(long schemeId); + /// + /// دریافت لیست گروه ها + /// + /// + /// + Task> GetGroupList(long schemeId); + + /// + /// دریافت لیست مشاغل برای مودال ایجاد و ویرایش + /// + /// + /// + Task GetCreateOrEditJobsData(long groupId); + + /// + /// چک میکند که آی پرسنلی وجود دارد که این شغل به او نسبت داده شده + /// + /// + /// + /// + Task CheckIfEmployeeHasThisJob(long jobId, long groupId); /// /// دریافت مشاغل گروه توسط آی دی گروه diff --git a/CompanyManagment.App.Contracts/ClassificationScheme/AddOrEditJobInGroupDto.cs b/CompanyManagment.App.Contracts/ClassificationScheme/AddOrEditJobInGroupDto.cs new file mode 100644 index 00000000..035ba02e --- /dev/null +++ b/CompanyManagment.App.Contracts/ClassificationScheme/AddOrEditJobInGroupDto.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; + +namespace CompanyManagment.App.Contracts.ClassificationScheme; + +public class AddOrEditJobInGroupDto +{ + /// + /// آی دی گروه + /// + public long GroupId { get; set; } + + /// + /// شماره گروه نوع عددی + /// + public int GroupNoInt { get; set; } + + + public List AddJobListDto { get; set; } +} + + +/// +/// لیست مشغال افزوده شده به گروه +/// +public class AddJobListDto +{ + /// + /// آی دی شغل در مشاغل اداره کار + /// + public long JobId { get; set; } + + /// + /// نام شغل + /// + public string JobName { get; set; } +} diff --git a/CompanyManagment.App.Contracts/ClassificationScheme/GetGroupAndJobSchemeListDto.cs b/CompanyManagment.App.Contracts/ClassificationScheme/GetGroupAndJobSchemeListDto.cs new file mode 100644 index 00000000..af6b0148 --- /dev/null +++ b/CompanyManagment.App.Contracts/ClassificationScheme/GetGroupAndJobSchemeListDto.cs @@ -0,0 +1,22 @@ +using System.Collections.Generic; + +namespace CompanyManagment.App.Contracts.ClassificationScheme; + +public class GetGroupAndJobSchemeListDto +{ + /// + /// آی دی گروه + /// + public long GroupId { get; set; } + + /// + /// شماره گروه نوع عددی + /// + public int GroupNoInt { get; set; } + + /// + /// آیا شغلی به گروه اضافه شده + /// + public bool HasAnyJob { get; set; } +} + diff --git a/CompanyManagment.App.Contracts/ClassificationScheme/IClassificationSchemeApplication.cs b/CompanyManagment.App.Contracts/ClassificationScheme/IClassificationSchemeApplication.cs index d87424ba..ca1e99e5 100644 --- a/CompanyManagment.App.Contracts/ClassificationScheme/IClassificationSchemeApplication.cs +++ b/CompanyManagment.App.Contracts/ClassificationScheme/IClassificationSchemeApplication.cs @@ -185,6 +185,8 @@ public interface IClassificationSchemeApplication Task BaseYearComputeOneGroup(DateTime schemeStart, DateTime? schemeEnd, DateTime contractStart, DateTime contractEnd, string groupNo, long employeeId, long workshopId); + #region ForApi + /// /// چک کردن امکان حذف طرح /// @@ -199,4 +201,30 @@ public interface IClassificationSchemeApplication /// Task DeleteScheme(long id); + /// + /// تب گروه ها و مشاغل + /// لیست گروه ها + /// + /// + /// + Task> GetGroupList(long schemeId); + + + /// + /// دریافت لیست مشاغل برای مودال ایجاد و ویرایش + /// + /// + /// + Task GetCreateOrEditJobsData(long groupId); + + /// + /// چک میکند که آی پرسنلی وجود دارد که این شغل به او نسبت داده شده + /// + /// + /// + /// + Task CheckIfEmployeeHasThisJob(long jobId, long groupId); + + #endregion + } \ No newline at end of file diff --git a/CompanyManagment.Application/ClassificationSchemeApplication.cs b/CompanyManagment.Application/ClassificationSchemeApplication.cs index fdc2f332..96066e73 100644 --- a/CompanyManagment.Application/ClassificationSchemeApplication.cs +++ b/CompanyManagment.Application/ClassificationSchemeApplication.cs @@ -132,11 +132,18 @@ public class ClassificationSchemeApplication : IClassificationSchemeApplication return await _classificationGroupRepository.GetGroupAndJobs(schemeId); } + public async Task> GetGroupList(long schemeId) + { + return await _classificationGroupRepository.GetGroupList(schemeId); + } + public async Task> GetGroupJobs(long groupId) { return await _classificationGroupRepository.GetGroupJobs(groupId); } + + public async Task CheckEmployeeHasThisJob(long id, long groupId) { return await _classificationGroupRepository.CheckEmployeeHasThisJob(id, groupId); @@ -607,4 +614,20 @@ public class ClassificationSchemeApplication : IClassificationSchemeApplication return op.Failed("یافت نشد"); } + + + public async Task GetCreateOrEditJobsData(long groupId) + { + return await _classificationGroupRepository.GetCreateOrEditJobsData(groupId); + } + + public async Task CheckIfEmployeeHasThisJob(long jobId, long groupId) + { + var op = new OperationResult(); + var checkExistAny = await _classificationGroupRepository.CheckIfEmployeeHasThisJob(jobId, groupId); + if (checkExistAny) + return op.Failed("این شغل قبلا به پرسنلی از این گروه داده شده و نمیتوانید آن را حذف کنید"); + + return op.Succcedded(-1,"حذف با موفقیت انجام شد"); + } } \ No newline at end of file diff --git a/CompanyManagment.EFCore/Repository/ClassificationGroupRepository.cs b/CompanyManagment.EFCore/Repository/ClassificationGroupRepository.cs index 9b33ab36..74c37171 100644 --- a/CompanyManagment.EFCore/Repository/ClassificationGroupRepository.cs +++ b/CompanyManagment.EFCore/Repository/ClassificationGroupRepository.cs @@ -65,6 +65,8 @@ public class ClassificationGroupRepository : RepositoryBasex.GroupNoInt).ToListAsync(); } + + /// /// دریافت مشاغل گروه توسط آی دی گروه /// @@ -164,4 +166,63 @@ public class ClassificationGroupRepository : RepositoryBase> GetGroupList(long schemeId) + { + return await _context.ClassificationGroups.Where(x => x.ClassificationSchemeId == schemeId) + .Include(x => x.ClassificationGroupJobs).Select(x => new GetGroupAndJobSchemeListDto + { + GroupId = x.id, + GroupNoInt = Convert.ToInt32(x.GroupNo), + HasAnyJob = x.ClassificationGroupJobs.Any() + + }).OrderBy(x => x.GroupNoInt).ToListAsync(); + } + + + public async Task GetCreateOrEditJobsData(long groupId) + { + var result = await _context.ClassificationGroups.Where(x => x.id == groupId) + .Include(x => x.ClassificationGroupJobs).FirstOrDefaultAsync(); + if (result == null) + return new AddOrEditJobInGroupDto(); + + return new AddOrEditJobInGroupDto() + { + GroupId = result.id, + GroupNoInt = Convert.ToInt32(result.GroupNo), + AddJobListDto = result.ClassificationGroupJobs.Select(job => new AddJobListDto + { + JobId = job.JobId, + JobName = $"{job.JobName} - {job.JobCode}" + }).ToList(), + }; + } + + + /// + /// چک میکند که آی پرسنلی وجود دارد که این شغل به او نسبت داده شده + /// + /// + /// + /// + public async Task CheckIfEmployeeHasThisJob(long jobId, long groupId) + { + var result = await _context.ClassificationGroups.Where(x => x.id == groupId) + .Include(x => x.ClassificationGroupJobs).FirstOrDefaultAsync(); + var job = result.ClassificationGroupJobs.FirstOrDefault(x => x.JobId == jobId); + if (job == null) + return false; + + var id = job.id; + return await _context.ClassificationEmployees.AnyAsync(x => + x.ClassificationGroupJobId == id && x.ClassificationGroupId == groupId); + } + #endregion } \ No newline at end of file diff --git a/ServiceHost/Areas/Admin/Controllers/ClassificationSchemeController.cs b/ServiceHost/Areas/Admin/Controllers/ClassificationSchemeController.cs index a5a4e598..18337e9e 100644 --- a/ServiceHost/Areas/Admin/Controllers/ClassificationSchemeController.cs +++ b/ServiceHost/Areas/Admin/Controllers/ClassificationSchemeController.cs @@ -21,6 +21,8 @@ public class ClassificationSchemeController : AdminBaseController _authHelper = authHelper; } + #region SchemeTab + /// /// لیست طرح /// @@ -29,7 +31,7 @@ public class ClassificationSchemeController : AdminBaseController [HttpGet] public async Task> GetList(long workshopId) { - var result =await _classificationSchemeApplication.GetClassificationSchemeList(workshopId); + var result = await _classificationSchemeApplication.GetClassificationSchemeList(workshopId); return result; } @@ -66,7 +68,7 @@ public class ClassificationSchemeController : AdminBaseController [HttpPut("Scheme")] public async Task> EditScheme([FromBody] EditClassificationSchemeDto command) { - var result =await _classificationSchemeApplication.EditClassificationScheme(command); + var result = await _classificationSchemeApplication.EditClassificationScheme(command); return result; } @@ -78,7 +80,7 @@ public class ClassificationSchemeController : AdminBaseController [HttpGet("CheckToDeleteScheme")] public async Task CheckToDeleteScheme(long id) { - var result =await _classificationSchemeApplication.CheckToDeleteScheme(id); + var result = await _classificationSchemeApplication.CheckToDeleteScheme(id); return result; } @@ -93,4 +95,47 @@ public class ClassificationSchemeController : AdminBaseController var result = await _classificationSchemeApplication.DeleteScheme(id); return result; } + + #endregion + + #region GroupsTab + /// + /// دریافت لیست گروه ها + /// + /// + /// + [HttpGet("GetGroupList")] + public async Task> GetGroupList(long schemeId) + { + var result = await _classificationSchemeApplication.GetGroupList(schemeId); + return result; + } + + /// + /// دریافت لیست مشاغل گروه برای مودال افزودن و ویرایش + /// + /// + /// + [HttpGet("GetCreateOrEditJobsData")] + public async Task GetCreateOrEditJobsData(long groupId) + { + var result = await _classificationSchemeApplication.GetCreateOrEditJobsData(groupId); + return result; + } + + /// + /// چک میکند که آیا امکان حذف شغل از گروه وجود دارد + /// + /// + /// + /// + [HttpGet("CheckDeleteJobFromGroup")] + public async Task> CheckDeleteJobFromGroup(long jobId, long groupId) + { + var result = await _classificationSchemeApplication.CheckIfEmployeeHasThisJob(jobId, groupId); + return result; + } + + + #endregion } \ No newline at end of file