Files
Backend-Api/CompanyManagment.EFCore/Repository/PersonnelCodeRepository.cs
2025-03-08 21:49:34 +03:30

101 lines
3.5 KiB
C#

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<long, PersonnelCodeDomain>, 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<PersonnelCodeViewModel> 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
}