|
|
|
@ -0,0 +1,94 @@
|
|
|
|
|
using AppException;
|
|
|
|
|
using Model;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Diagnostics;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
namespace Managers
|
|
|
|
|
{
|
|
|
|
|
public class UserDefaultManager : IUserManager
|
|
|
|
|
{
|
|
|
|
|
private IDataManager _dataManager;
|
|
|
|
|
private IPasswordManager _passwordManager;
|
|
|
|
|
private User? _currentConnectedUser = null;
|
|
|
|
|
|
|
|
|
|
public UserDefaultManager(IDataManager dataManager, IPasswordManager passwordManager)
|
|
|
|
|
{
|
|
|
|
|
_dataManager = dataManager;
|
|
|
|
|
_passwordManager = passwordManager;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public User? CurrentConnectedUser => _currentConnectedUser;
|
|
|
|
|
|
|
|
|
|
public bool AddUserToData(User user)
|
|
|
|
|
{
|
|
|
|
|
var userList = _dataManager.Data[nameof(User)];
|
|
|
|
|
|
|
|
|
|
if (userList.Exists(r => r.Equals(user)))
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
_dataManager.Data[nameof(User)].Add(user);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ICollection<User> GetAllUsers()
|
|
|
|
|
{
|
|
|
|
|
return _dataManager.GetFromData<User>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public User GetUserFromMail(string mail)
|
|
|
|
|
{
|
|
|
|
|
User? user = _dataManager.GetFromData<User>().ToList()
|
|
|
|
|
.Find(u => u.Mail == mail);
|
|
|
|
|
if (user is null)
|
|
|
|
|
throw new UserNotFoundException();
|
|
|
|
|
|
|
|
|
|
return user;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool LogIn(string mail, string password)
|
|
|
|
|
{
|
|
|
|
|
if (CurrentConnectedUser is not null)
|
|
|
|
|
throw new UserAlreadyConnectedException();
|
|
|
|
|
|
|
|
|
|
User? user = _dataManager.GetFromData<User>().ToList()
|
|
|
|
|
.Find(u => u.Mail == mail);
|
|
|
|
|
if (user is null)
|
|
|
|
|
throw new UserNotFoundException();
|
|
|
|
|
|
|
|
|
|
if (!_passwordManager.VerifyPassword(password, user.Password))
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
_currentConnectedUser = user;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void LogOut()
|
|
|
|
|
{
|
|
|
|
|
if (CurrentConnectedUser is null)
|
|
|
|
|
throw new NoUserConnectedException();
|
|
|
|
|
|
|
|
|
|
_currentConnectedUser = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool ModifyUserInData(User oldUser, User newUser)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var index = _dataManager.GetFromData<User>().ToList()
|
|
|
|
|
.FindIndex(u => u.Equals(oldUser));
|
|
|
|
|
_dataManager.Data[nameof(User)][index] = newUser;
|
|
|
|
|
}
|
|
|
|
|
catch (ArgumentNullException e)
|
|
|
|
|
{
|
|
|
|
|
Debug.WriteLine("User to modify not found.");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|