@ -7,35 +7,92 @@ using System.Text;
using System.Threading.Tasks ;
using Model.Mappers ;
using Model.Business ;
using Microsoft.EntityFrameworkCore ;
namespace Services
{
public class User DataService : IDataService
public class Inquiry DataService : IDataService
{
private UserDbContext DbContext { get ; set ; }
public User DataService( UserDbContext context )
public Inquiry DataService( UserDbContext context )
{
DbContext = context ;
context . Database . EnsureCreated ( ) ;
}
public IEnumerable < InquiryDTO > GetInquiries ( )
{
throw new NotImplementedException ( ) ;
}
public UserDTO GetUserById ( int id )
{
throw new NotImplementedException ( ) ;
var userEntity = DbContext . Users . FirstOrDefault ( u = > u . Id = = id ) ;
if ( userEntity = = null )
{
throw new ArgumentException ( "Impossible de trouver l'utilisateur" , nameof ( id ) ) ;
}
return userEntity . FromEntityToModel ( ) . FromModelToDTO ( ) ;
}
public UserDTO GetUserByUsername ( string username )
{
throw new NotImplementedException ( ) ;
var userEntity = DbContext . Users . FirstOrDefault ( u = > u . Username = = username ) ;
if ( userEntity = = null )
{
throw new ArgumentException ( "Impossible de trouver l'utilisateur" , nameof ( username ) ) ;
}
return userEntity . FromEntityToModel ( ) . FromModelToDTO ( ) ;
}
public IEnumerable < UserDTO > GetUsers ( int page , int number )
{
return DbContext . Users . Skip ( ( page - 1 ) * number ) . Take ( number ) . ToList ( ) . Select ( u = > u . FromEntityToModel ( ) . FromModelToDTO ( ) ) ;
}
public bool DeleteUser ( int id )
{
var userEntity = DbContext . Users . FirstOrDefault ( u = > u . Id = = id ) ;
if ( userEntity = = null )
{
return false ;
}
DbContext . Users . Remove ( userEntity ) ;
DbContext . SaveChanges ( ) ;
return true ;
}
public UserDTO UpdateUser ( int id , UserDTO user )
{
var updatingUser = GetUserById ( id ) ;
if ( updatingUser = = null )
{
throw new ArgumentException ( "Impossible de trouver l'utilisateur" , nameof ( id ) ) ;
}
updatingUser . Username = user . Username ;
updatingUser . Password = user . Password ;
updatingUser . Email = user . Email ;
updatingUser . IsAdmin = user . IsAdmin ;
var updatedUser = updatingUser . FromDTOToModel ( ) . FromModelToEntity ( ) ;
// Permet d'indiquer en Db que l'entité a été modifiée.
DbContext . Entry ( updatedUser ) . State = EntityState . Modified ;
return updatedUser . FromEntityToModel ( ) . FromModelToDTO ( ) ;
}
public UserDTO CreateUser ( string username , string password , string email , bool isAdmin )
{
var newUserEntity = new UserDTO
{
Username = username ,
Password = password ,
Email = email ,
IsAdmin = isAdmin
} ;
DbContext . Users . Add ( newUserEntity . FromDTOToModel ( ) . FromModelToEntity ( ) ) ;
DbContext . SaveChanges ( ) ;
return newUserEntity ;
}
public IEnumerable < InquiryDTO > GetInquiries ( int page , int number )
{
throw new NotImplementedException ( ) ;
}
}
}