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 Model.Business;
using Model.DTO;
using Model.Mappers;
using Services;
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);
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]

@ -158,9 +158,13 @@ namespace ModelToEntity
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 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);
await context.SaveChangesAsync();
context.SaveChangesAsync();
return item;
return Task.FromResult<T?>(item); ;
}
}
}

@ -56,9 +56,10 @@ namespace Services
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
{
public interface IDataService<T>
public interface IDataService<T> where T : class
{
IUserDataService<T?> UserService { get; }
IInquiryDataService InquiryDataService { get; }

@ -1,7 +1,7 @@
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
{
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<T?> GetUserById(int id);

Loading…
Cancel
Save