Files
probearbeit/api/Services/PersonService.cs
T
2026-08-31 14:13:22 +02:00

72 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)
{
Person person = await PersonExists(username);
string updatedName = string.IsNullOrWhiteSpace(personDto.RealName) ? person.RealName : personDto.RealName;
person.Update(realName: updatedName, birthday: personDto.Birthday);
await _personRepository.UpdateAsync(person);
}
public async Task DeletePersonAsync(string username)
{
await PersonExists(username);
await _personRepository.DeleteAsync(username);
}
private async Task<Person> PersonExists(string username)
{
username = Person.NormalizeUsername(username);
Person person = await _personRepository.GetByUsernameAsync(username);
return person;
}
}
}