From 27a1ed624ed2d565401df448bf985cfe1cfcc617 Mon Sep 17 00:00:00 2001 From: marco Date: Sun, 30 Aug 2026 18:29:20 +0200 Subject: [PATCH] implemented IPersonService in PersonService --- api/Services/PersonService.cs | 69 +++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 api/Services/PersonService.cs diff --git a/api/Services/PersonService.cs b/api/Services/PersonService.cs new file mode 100644 index 0000000..318a13e --- /dev/null +++ b/api/Services/PersonService.cs @@ -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> GetAllPersonsAsync() + { + IEnumerable persons = await _personRepository.GetAllAsync(); + + return persons.Select(p => new PersonDto + { + Username = p.Username, + RealName = p.RealName, + Birthday = p.Birthday + }); + } + + public async Task 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 personExists(string username) + { + Person? person = await _personRepository.GetByUsernameAsync(username); + + if (person == null) throw new KeyNotFoundException("Person not found"); + + return person; + } + } +} \ No newline at end of file