ajout d'un methode d'extension générique pour ajouter Item

Genericite
Victor GABORIT 1 year ago
parent df34ec238a
commit 5f68add0fe

@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Model.Business; using Model.Business;
using Model.DTO; using Model.DTO;
using Model.Mappers;
using Services; using Services;
namespace API.Controllers namespace API.Controllers
@ -90,7 +91,8 @@ namespace API.Controllers
} }
_logger.LogInformation("[INFORMATION] Un utilisateur a été créé : username - {username}, password - {password}, email - {email}, isAdmin - {isAdmin}", dto.Username, dto.Password, dto.Email, dto.IsAdmin); _logger.LogInformation("[INFORMATION] Un utilisateur a été créé : username - {username}, password - {password}, email - {email}, isAdmin - {isAdmin}", dto.Username, dto.Password, dto.Email, dto.IsAdmin);
return Created(nameof(GetUsers), _dataService.UserService.CreateUser(dto.Username, dto.Password, dto.Email, dto.IsAdmin)); //return Created(nameof(GetUsers), _dataService.UserService.CreateUser(dto.Username, dto.Password, dto.Email, dto.IsAdmin));
return Created(nameof(GetUsers), _dataService.UserService.AddItem(dto.FromDTOToModel().FromModelToEntity()));
} }
[HttpPut] [HttpPut]

@ -158,9 +158,13 @@ namespace ModelToEntity
throw new NotImplementedException(); throw new NotImplementedException();
} }
public Task<T?> AddItem<T>(T? item) public async Task<T?> AddItem<T>(T? item) where T : class
{ {
throw new NotImplementedException(); using (var context = new UserDbContext())
{
return await context.CreateItemAsync(item);
}
} }
} }

@ -15,17 +15,18 @@ namespace ModelToEntity
{ {
internal static class Extension internal static class Extension
{ {
internal static async Task<T?> AddItemAsync<T>(this DbContext context, T? item) where T : class public static Task<T?> CreateItemAsync<T>(this DbContext context, T? item) where T : class
{ {
if (item == null || await context.Set<T>().ContainsAsync(item)) if (item == null || context.Set<T>().Contains(item))
{ {
return default(T); return Task.FromResult<T?>(default(T));
} }
context.Set<T>().Add(item); context.Set<T>().Add(item);
await context.SaveChangesAsync(); context.SaveChangesAsync();
return item; return Task.FromResult<T?>(item); ;
} }
} }
} }

@ -56,9 +56,10 @@ namespace Services
return newUserEntity.FromModelToDTO(); return newUserEntity.FromModelToDTO();
} }
public async Task<T?> AddItem<T>(T? item) public async Task<T?> AddItem<T>(T? item) where T : class
{ {
throw new NotImplementedException(); var newItem = dataServiceEF.AddItem(item);
return await newItem;
} }
} }
} }

@ -4,7 +4,7 @@ using Model.DTO;
namespace Services namespace Services
{ {
public interface IDataService<T> public interface IDataService<T> where T : class
{ {
IUserDataService<T?> UserService { get; } IUserDataService<T?> UserService { get; }
IInquiryDataService InquiryDataService { get; } IInquiryDataService InquiryDataService { get; }

@ -1,7 +1,7 @@
namespace Shared namespace Shared
{ {
public interface IGenericService<T> public interface IGenericService<T> where T : class
{ {
public Task<T?> AddItem<T>(T? item); public Task<T?> AddItem<T>(T? item) where T : class;
} }
} }

@ -10,7 +10,7 @@ using Model.Business;
namespace Services namespace Services
{ {
public interface IUserDataService<T> : IGenericService<T?> public interface IUserDataService<T> : IGenericService<T?> where T : class
{ {
public Task<IEnumerable<T?>> GetUsers(int page, int number); public Task<IEnumerable<T?>> GetUsers(int page, int number);
public Task<T?> GetUserById(int id); public Task<T?> GetUserById(int id);

Loading…
Cancel
Save