108 lines
3.7 KiB
C#
108 lines
3.7 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)
|
|
{
|
|
var codes = _context.PersonnelCodeSet.Where(x => x.WorkshopId == workshopId);
|
|
|
|
if (!codes.Any())
|
|
{
|
|
return 0; // مقدار پیشفرض یا هندل خاص تو این حالت
|
|
}
|
|
|
|
return codes.Max(x => x.PersonnelCode);
|
|
}
|
|
|
|
#endregion
|
|
} |