using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using _0_Framework.InfraStructure; using Company.Domain.ClassificationSchemeAgg; using CompanyManagment.App.Contracts.ClassificationScheme; using Microsoft.EntityFrameworkCore; namespace CompanyManagment.EFCore.Repository; public class ClassificationGroupRepository : RepositoryBase, IClassificationGroupRepository { private readonly CompanyContext _context; public ClassificationGroupRepository(CompanyContext context) : base(context) { _context = context; } /// /// دریافت گروه های طرح /// /// /// public async Task> GetGroups(long schemeId) { return await _context.ClassificationGroups .Where(x => x.ClassificationSchemeId == schemeId) .Select(x=> new ClassificationGroupList { GroupId = x.id, GroupNo = x.GroupNo, GroupNoInt = Convert.ToInt32(x.GroupNo) }).OrderBy(x=>x.GroupNoInt).ToListAsync(); } /// /// دریافت گروه ها و مشاغلشان برای تب تعیین مشاغل /// /// /// public async Task> GetGroupAndJobs(long schemeId) { return await _context.ClassificationGroups.Where(x => x.ClassificationSchemeId == schemeId) .Include(x => x.ClassificationGroupJobs).Select(x => new ClassificationGroupAndJobModel { GroupId = x.id, GroupNo = x.GroupNo, GroupNoInt = Convert.ToInt32(x.GroupNo), WorkshopId = x.WorkshopId, ClassificationSchemeId = x.ClassificationSchemeId, EditClassificationGroupJob = x.ClassificationGroupJobs.Select(jobs => new EditClassificationGroupJob() { Id = jobs.id, JobId = jobs.JobId, JobName = jobs.JobName, JobCode = jobs.JobCode, ClassificationGroupId = jobs.ClassificationGroupId, GroupNo = jobs.GroupNo, }).ToList(), }).OrderBy(x=>x.GroupNoInt).ToListAsync(); } /// /// دریافت مشاغل گروه توسط آی دی گروه /// /// /// public async Task> GetGroupJobs(long groupId) { return await _context.ClassificationGroupJobs .Where(x => x.ClassificationGroupId == groupId).Select(jobs => new EditClassificationGroupJob() { Id = jobs.id, JobId = jobs.JobId, JobName = jobs.JobName, JobCode = jobs.JobCode, ClassificationGroupId = jobs.ClassificationGroupId, GroupNo = jobs.GroupNo, }).ToListAsync(); } /// /// چک میکند که آی پرسنلی وجود دارد که این شغل به او نسبت داده شده /// /// /// /// public async Task CheckEmployeeHasThisJob(long id, long groupId) { return await _context.ClassificationEmployees.AnyAsync(x => x.ClassificationGroupJobId == id && x.ClassificationGroupId == groupId); } /// /// ایجاد مشاغل /// /// /// /// public async Task CreateJobs(List createClassificationGroupJob, List deleteJobList) { if (createClassificationGroupJob.Count > 0) { await _context.ClassificationGroupJobs.AddRangeAsync(createClassificationGroupJob); await _context.SaveChangesAsync(); } if (deleteJobList.Count > 0) { var deleteItems = _context.ClassificationGroupJobs.Where(x => deleteJobList.Contains(x.id)); _context.ClassificationGroupJobs.RemoveRange(deleteItems); await _context.SaveChangesAsync(); } return true; } /// /// در یافت اطلاعات گروه برای لود مودال ایجاد دستمزد های /// /// public async Task GetGroupToCreateSalariesModal(long schemeId) { var result = new SalaryAndRialCoefficientModel(); var scheme =await _context.ClassificationSchemes.FirstOrDefaultAsync(x => x.id == schemeId); var groups =await _context.ClassificationGroups.Where(x => x.ClassificationSchemeId == schemeId).ToListAsync(); if (scheme != null) { result.TypeOfCoefficient = scheme.TypeOfCoefficient; result.SchemeId = schemeId; result.SalariesAndCoefficientList = groups.Select(x => new EditClassificationGroupSalaryAndRialCoefficient { ClassificationGroupId = x.id, GroupNo = x.GroupNo, }).ToList(); } return result; } /// /// ایجاد گروه های بیست گانه /// /// /// public async Task CreateGroups(List groupList) { await _context.AddRangeAsync(groupList); await _context.SaveChangesAsync(); } }