69 lines
2.1 KiB
C#
69 lines
2.1 KiB
C#
using api.Domain;
|
|
using api.DTOs;
|
|
using api.Repositories;
|
|
|
|
namespace api.Services
|
|
{
|
|
public class PersonService(IPersonRepository PersonRepository) : IPersonService
|
|
{
|
|
private readonly IPersonRepository _personRepository = PersonRepository;
|
|
|
|
public async Task AddPersonAsync(PersonDto personDto)
|
|
{
|
|
Person person = Person.Create(
|
|
username: personDto.Username,
|
|
realName: personDto.RealName,
|
|
birthday: personDto.Birthday
|
|
);
|
|
|
|
await _personRepository.AddAsync(person);
|
|
}
|
|
|
|
public async Task<IEnumerable<PersonDto>> GetAllPersonsAsync()
|
|
{
|
|
IEnumerable<Person> persons = await _personRepository.GetAllAsync();
|
|
|
|
return persons.Select(p => new PersonDto
|
|
{
|
|
Username = p.Username,
|
|
RealName = p.RealName,
|
|
Birthday = p.Birthday
|
|
});
|
|
}
|
|
|
|
public async Task<PersonDto> GetPersonByUsernameAsync(string username)
|
|
{
|
|
Person person = await personExists(username);
|
|
|
|
return new PersonDto
|
|
{
|
|
Username = person.Username,
|
|
RealName = person.RealName,
|
|
Birthday = person.Birthday
|
|
};
|
|
}
|
|
|
|
public async Task UpdatePersonAsync(string username, PersonDto personDto)
|
|
{
|
|
|
|
await personExists(username);
|
|
|
|
Person updatedPerson = Person.Create(username: personDto.Username, realName: personDto.RealName, birthday: personDto.Birthday);
|
|
await _personRepository.UpdateAsync(updatedPerson);
|
|
}
|
|
|
|
public async Task DeletePersonAsync(string username)
|
|
{
|
|
await personExists(username);
|
|
}
|
|
|
|
private async Task<Person> personExists(string username)
|
|
{
|
|
Person? person = await _personRepository.GetByUsernameAsync(username);
|
|
|
|
if (person == null) throw new KeyNotFoundException("Person not found");
|
|
|
|
return person;
|
|
}
|
|
}
|
|
} |