ldap-cesi/ldap-cesi/Services/SalarieService.cs

240 lines
7.9 KiB
C#

using AutoMapper;
using ldap_cesi.DTOs;
using ldap_cesi.DTOs.Inputs.Salarie;
using ldap_cesi.DTOs.Inputs.Service;
using ldap_cesi.DTOs.Outputs.Salarie;
using ldap_cesi.Entities;
using ldap_cesi.Models;
using ldap_cesi.Repository.Services;
using ldap_cesi.Services.Interfaces;
using ldap_cesi.Validator.Salarie;
namespace ldap_cesi.Services;
public class SalarieService : ServiceBase<Salarie, SalarieDto, SalarieCreateDto, SalarieUpdateDto>, ISalarieService
{
private IRepositorySalarie _repositorySalarie;
private readonly IRepositorySite _repositorySite;
private readonly IRepositoryService _repositoryService;
private readonly IMapper _mapper;
public SalarieService(IRepositorySalarie repositorySalarie, IMapper mapper, IRepositorySite repositorySite, IRepositoryService repositoryService, ILogger<SalarieService> logger) : base(repositorySalarie, mapper, logger)
{
_repositorySalarie = repositorySalarie;
_repositorySite = repositorySite;
_repositoryService = repositoryService;
_mapper = mapper;
}
public async Task<IResponseDataModel<List<Salarie>>> GetAllWithoutIService()
{
var salaries = await _repositorySalarie.GetAllAsync();
return new ResponseDataModel<List<Salarie>>
{
Success = true,
Data = salaries,
StatusCode = 200,
};
}
// public async Task<IResponseDataModel<Salarie>> GetById(int id)
// {
// var salarie = await _repositorySalarie.GetSalarieWithRelationsAsync(id);
// return new ResponseDataModel<Salarie>
// {
// Success = true,
// Data = salarie,
// StatusCode = 200,
// };
// }
public async Task<IResponseDataModel<SalarieOutputDetail>> GetCompletById(int id)
{
var salarie = await _repositorySalarie.GetSalarieWithRelationsAsync(id);
var salarieOutput = _mapper.Map<SalarieOutputDetail>(salarie);
return new ResponseDataModel<SalarieOutputDetail>
{
Success = true,
Data = salarieOutput,
StatusCode = 200,
};
}
public async Task<IResponseDataModel<List<SalarieListDto>>> GetSalariesBySite(int siteId)
{
var site = await _repositorySite.GetByIdAsync(siteId);
if (site == null)
{
return new ResponseDataModel<List<SalarieListDto>>
{
Success = false,
Message = "Site non trouvé",
StatusCode = 404
};
}
var salaries = await _repositorySalarie.GetSalariesBySiteAsync(siteId);
if (!salaries.Any())
{
return new ResponseDataModel<List<SalarieListDto>>
{
Success = true,
Message = "Aucun salarié trouvé pour ce site",
Data = new List<SalarieListDto>(),
StatusCode = 200
};
}
var salariesDto = _mapper.Map<List<SalarieListDto>>(salaries);
return new ResponseDataModel<List<SalarieListDto>>
{
Success = true,
Data = salariesDto,
StatusCode = 200
};
}
public async Task<IResponseDataModel<List<SalarieListDto>>> GetSalariesByService(int serviceId)
{
var service = await _repositoryService.GetByIdAsync(serviceId);
if (service == null)
{
return new ResponseDataModel<List<SalarieListDto>>
{
Success = false,
Message = "Service non trouvé",
StatusCode = 404
};
}
var salaries = await _repositorySalarie.GetSalariesByServiceAsync(serviceId);
var salariesDto = _mapper.Map<List<SalarieListDto>>(salaries);
return new ResponseDataModel<List<SalarieListDto>>
{
Success = true,
Data = salariesDto,
StatusCode = 200
};
}
public async Task<IResponseDataModel<List<SalarieListDto>>> RechercherParNom(string nom)
{
var salaries = await _repositorySalarie.SearchByNameAsync(nom);
var salariesDto = _mapper.Map<List<SalarieListDto>>(salaries);
return new ResponseDataModel<List<SalarieListDto>>
{
Success = true,
Data = salariesDto,
StatusCode = 200
};
}
// public async Task<IResponseDataModel<string>> Create(SalarieCreateDto salarieInput)
// {
// var validation = new SalarieCreateValidator();
// var result = validation.Validate(salarieInput);
// if (!result.IsValid)
// {
// return new ResponseDataModel<string>
// {
// StatusCode = 400,
// Success = false,
// Message = "Données salariées invalides: " + string.Join(", ", result.Errors)
// };
// }
// var service = _mapper.Map<Salarie>(salarieInput);
// var response = await _repositorySalarie.AddAsync(service);
// return new ResponseDataModel<string>
// {
// StatusCode = 201,
// Success = true,
// Data = response.Id.ToString(),
// };
// }
// public async Task<IResponseDataModel<Salarie>> Update(SalarieUpdateDto salarieInput)
// {
// var validation = new SalarieUpdateValidator();
// var result = validation.Validate(salarieInput);
// if (!result.IsValid)
// {
// return new ResponseDataModel<Salarie>
// {
// StatusCode = 400,
// Success = false,
// Message = "Données salariées invalides: " + string.Join(", ", result.Errors)
// };
// }
// var salarieFind = await _repositorySalarie.GetByIdAsync(salarieInput.Id);
// if (salarieFind == null)
// {
// return new ResponseDataModel<Salarie>
// {
// Success = false,
// Message = "Salarié introuvable.",
// StatusCode = 404
// };
// }
// var salarie = _mapper.Map(salarieInput, salarieFind);
// var response = await _repositorySalarie.UpdateAsync(salarie);
// if (!response)
// {
// return new ResponseDataModel<Salarie>
// {
// StatusCode = 500,
// Success = false,
// Message = "Erreur lors de la mise à jour du salarié : " + string.Join(", ", result.Errors)
// };
// }
// return new ResponseDataModel<Salarie>
// {
// StatusCode = 200,
// Success = true,
// Data = salarie,
// };
// }
// public async Task<IResponseDataModel<string>> Delete(int id)
// {
// if (id == null)
// {
// return new ResponseDataModel<string>
// {
// StatusCode = 400,
// Success = false,
// Message = "Id manquant"
// };
// }
// var salarie = await _repositorySalarie.GetByIdAsync(id);
// if (salarie == null)
// {
// return new ResponseDataModel<string>
// {
// Success = false,
// Message = "Salarié introuvable.",
// StatusCode = 404
// };
// }
// var response = await _repositorySalarie.DeleteAsync(salarie);
// if (!response)
// {
// return new ResponseDataModel<string>
// {
// StatusCode = 500,
// Success = false,
// Message = "Erreur durant la suppression du service"
// };
// }
// return new ResponseDataModel<string>
// {
// StatusCode = 200,
// Success = true,
// Data = salarie.Id.ToString(),
// };
// }
}