implemented IPersonService in PersonService
This commit is contained in:
1 parent
2d83a2d3c5
commit
27a1ed624e
1 file changed
+69
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user