Files
Backend-Api/CompanyManagment.EFCore/Repository/RollCallEmployeeRepository.cs
2024-07-09 19:31:25 +03:30

79 lines
3.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using _0_Framework.InfraStructure;
using Company.Domain.RollCallEmployeeAgg;
using CompanyManagment.App.Contracts.RollCallEmployee;
using Microsoft.EntityFrameworkCore;
namespace CompanyManagment.EFCore.Repository;
public class RollCallEmployeeRepository : RepositoryBase<long, RollCallEmployee>, IRollCallEmployeeRepository
{
private readonly CompanyContext _context;
public RollCallEmployeeRepository(CompanyContext context) : base(context)
{
_context = context;
}
public List<RollCallEmployeeViewModel> GetByWorkshopId(long workshopId)
{
var query = _context.RollCallEmployees.Select(x => new RollCallEmployeeViewModel()
{
Id = x.id,
WorkshopId = x.WorkshopId,
EmployeeFullName = x.EmployeeFullName,
IsActiveString = x.IsActiveString,
HasUploadedImage = x.HasUploadedImage
}).Where(x => x.WorkshopId == workshopId);
return query.ToList();
}
public EditRollCallEmployee GetDetails(long id)
{
return _context.RollCallEmployees.Select(x => new RollCallEmployeeViewModel()
{
Id = x.id,
WorkshopId = x.WorkshopId,
EmployeeFullName = x.EmployeeFullName,
IsActiveString = x.IsActiveString,
HasUploadedImage = x.HasUploadedImage
}).FirstOrDefault(x => x.Id == id);
}
public RollCallEmployeeViewModel GetByEmployeeIdAndWorkshopId(long employeeId, long workshopId)
{
return _context.RollCallEmployees.Select(x => new RollCallEmployeeViewModel()
{
Id = x.id,
WorkshopId = x.WorkshopId,
EmployeeFullName = x.EmployeeFullName,
IsActiveString = x.IsActiveString,
HasUploadedImage = x.HasUploadedImage
}).FirstOrDefault(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId);
}
public List<RollCallEmployeeViewModel> GetPersonnelRollCallList(long workshopId)
{
var nowFa = DateTime.Now;
var employee = _context.Employees.Include(x => x.LeftWorks).Where(l => l.LeftWorks.Any(c => c.StartWorkDate <= nowFa && c.LeftWorkDate > nowFa && c.WorkshopId == workshopId));
return employee.Select(x => new RollCallEmployeeViewModel
{
WorkshopId = workshopId,
EmployeeId = x.id,
EmployeeFullName= x.FName + ' ' + x.LName,
NationalCode = x.NationalCode,
IsActiveString = _context.RollCallEmployees.Any(r => r.EmployeeId == x.id && r.WorkshopId == workshopId && r.IsActiveString == "true") ? "true" : "false",
HasUploadedImage = _context.RollCallEmployees.Any(r => r.EmployeeId == x.id && r.WorkshopId == workshopId && r.HasUploadedImage == "true") ? "true" : "false",
}).ToList();
}
public int activedPerson(long workshopId)
{
return _context.RollCallEmployees.Count(x => x.WorkshopId == workshopId && x.IsActiveString == "true" && x.HasUploadedImage == "true");
}
}