23 lines
1.3 KiB
C#
23 lines
1.3 KiB
C#
using System.Linq.Expressions;
|
|
using ldap_cesi.Models;
|
|
|
|
namespace ldap_cesi.Services.Interfaces;
|
|
|
|
public interface IServiceBase<T, TDto, TCreateDto, TUpdateDto>
|
|
where T : class
|
|
where TDto : class
|
|
where TCreateDto : class
|
|
where TUpdateDto : class
|
|
{
|
|
Task<IResponseDataModel<List<T>>> GetAll(int pageNumber, int pageSize);
|
|
Task<IResponseDataModel<T>> GetById(int id);
|
|
Task<IResponseDataModel<TDto>> GetByIdWithRelations(int id, params Expression<Func<T, object>>[] relationsAInclures); // préciser avec une ou des fonctions lambda les relations à inclure dans la réponse
|
|
Task<IResponseDataModel<List<TDto>>> GetAllWithRelationsAsync(int pageNumber, int pageSize, params Expression<Func<T, object>>[] relationsAInclure);
|
|
|
|
Task<IResponseDataModel<List<TDto>>> SearchWithRelations(string searchTerm, int pageNumber, int pageSize,
|
|
params Expression<Func<T, object>>[] includeProperties);
|
|
Task<IResponseDataModel<T>> Create(TCreateDto dto);
|
|
Task<IResponseDataModel<T>> Update(TUpdateDto dto);
|
|
Task<IResponseDataModel<string>> Delete(int id);
|
|
Task<IResponseDataModel<string>> DeleteWithDependencyCheck<TRelated>(int id, Expression<Func<TRelated, bool>> relationPredicate, string relationErrorMessage) where TRelated : class;
|
|
} |