implemented IPersonService in PersonService

This commit is contained in:
marco committed 2026-08-30 18:29:20 +02:00
1 parent 2d83a2d3c5
commit 27a1ed624e
1 file changed
+69
+69
View File
@@ -0,0 +1,69 @@
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;
}
}
}