using System.Collections.Generic; using System.Linq; using _0_Framework.InfraStructure; using Company.Domain.PersonnelCodeAgg; using CompanyManagment.App.Contracts.PersonnleCode; namespace CompanyManagment.EFCore.Repository; public class PersonnelCodeRepository : RepositoryBase, IPersonnelCodeRepository { private readonly CompanyContext _context; public PersonnelCodeRepository(CompanyContext context) : base(context) { _context = context; } public EditPersonnelCode GetDetails(long id) { return _context.PersonnelCodeSet.Select(x => new EditPersonnelCode() { Id = x.id, WorkshopId = x.WorkshopId, EmployeeId = x.EmployeeId, PersonnelCode = x.PersonnelCode }).FirstOrDefault(x => x.Id == id); } public List Search(PersonnelCodeSearchModel searchModel) { var query = _context.PersonnelCodeSet.Select(x => new PersonnelCodeViewModel() { Id = x.id, WorkshopId = x.WorkshopId, EmployeeId = x.EmployeeId, PersonnelCode = x.PersonnelCode }); if (searchModel.WorkshopId != 0 && searchModel.EmployeeId != 0) { query = query.Where(x => x.WorkshopId == searchModel.WorkshopId && x.EmployeeId == searchModel.EmployeeId); } else if (searchModel.EmployeeId != 0 && searchModel.WorkshopId == 0) { query = query.Where(x => x.EmployeeId == searchModel.EmployeeId); } else if (searchModel.WorkshopId != 0 && searchModel.EmployeeId == 0) { query = query.Where(x => x.WorkshopId == searchModel.WorkshopId); } return query.OrderByDescending(x => x.Id).ToList(); } public PersonnelCodeViewModel GetPersonnelCodeViewModel(PersonnelCodeSearchModel searchModel) { var result= new PersonnelCodeViewModel(); var query = _context.PersonnelCodeSet.Where(x => x.WorkshopId == searchModel.WorkshopId && x.EmployeeId == searchModel.EmployeeId).FirstOrDefault(); if (query != null) { result.Id = query.id; result.WorkshopId = query.WorkshopId; result.EmployeeId = query.EmployeeId; result.PersonnelCode = query.PersonnelCode; result.HasPersonelCode = true; } else { var newSearchModel= new PersonnelCodeSearchModel(); var list = _context.PersonnelCodeSet.Where(x => x.WorkshopId == searchModel.WorkshopId ).ToList(); long personelMax = list.Count>0? list.Max(x=>x.PersonnelCode):0; personelMax = personelMax + 1; result.PersonnelCode = personelMax; result.HasPersonelCode = false; } return result; } public long GetPSCodeByWorkshopIdAndEmployeeId(long workshopId, long employeeId) { return _context.PersonnelCodeSet.FirstOrDefault(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId)!.PersonnelCode; } public long GetEmployeeIdByPersonelCode(long personleCode, long workshopId) { var res =_context.PersonnelCodeSet.FirstOrDefault(x => x.PersonnelCode == personleCode && x.WorkshopId == workshopId); if(res != null) return res.EmployeeId; return 0; } #region Mahan public long GetLastPersonnelCodeByWorkshop(long workshopId) { return _context.PersonnelCodeSet.Where(x => x.WorkshopId == workshopId).Max(x => x.PersonnelCode); } #endregion }