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