Files
CourseWork_GradeBook_Backend/GradeBookServer.Application/Services/UserService.cs

104 lines
3.1 KiB
C#

using GradeBookServer.Application.Common.Authentication;
using GradeBookServer.Application.DTOs.User;
using GradeBookServer.Application.Interfaces;
using GradeBookServer.Domain.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GradeBookServer.Application.Services
{
public class UserService
{
private readonly IUserRepository _repository;
private readonly JwtTokenGenerator _tokenGenerator;
public UserService(IUserRepository repository, JwtTokenGenerator tokenGenerator)
{
_repository = repository;
_tokenGenerator = tokenGenerator;
}
public async Task<UserReadDto?> AuthenticateAsync(UserLoginDto loginDto)
{
var user = await _repository.GetByLoginAsync(loginDto.Login);
if (user == null || user.Password != loginDto.Password)
return null;
return new UserReadDto
{
ID = user.ID,
Name = user.Name,
Email = user.Email,
PhoneNumber = user.PhoneNumber,
Role = user.Role
};
}
public async Task<UserReadDto?> GetCurrentUserAsync(int userId)
{
var user = await _repository.GetByIdAsync(userId);
if (user == null)
return null;
return new UserReadDto
{
ID = user.ID,
Name = user.Name,
Email = user.Email,
PhoneNumber = user.PhoneNumber,
Role = user.Role
};
}
public async Task<List<UserReadDto>> GetTeachersAsync()
{
var teachers = await _repository.GetTeachersAsync();
return teachers.Select(u => new UserReadDto
{
ID = u.ID,
Name = u.Name,
Email = u.Email,
PhoneNumber = u.PhoneNumber,
Role = u.Role
}).ToList();
}
public async Task<UserReadDto?> ValidateCredentialsAsync(string login, string password)
{
var user = await _repository.GetByLoginAsync(login);
if (user == null || user.Password != password)
return null;
return new UserReadDto
{
ID = user.ID,
Name = user.Name,
Email = user.Email,
PhoneNumber = user.PhoneNumber,
Role = user.Role
};
}
public async Task<TokenDto?> GenerateToken(int userID)
{
var user = await _repository.GetByIdAsync(userID);
if (user == null)
return null;
var token = _tokenGenerator.GenerateToken(user);
return (new TokenDto
{
Token = token,
User = new UserReadDto { ID = user.ID, Name = user.Name, Email = user.Email, PhoneNumber = user.PhoneNumber, Role = user.Role }
});
}
}
}