using FindAndDrive.Domain.Interfaces.Providers; using FindAndDrive.Domain.Interfaces.Repositories; using FindAndDrive.Domain.Interfaces.Services; using FindAndDrive.Domain.Models.DTO.Request; using FindAndDrive.Domain.Models.DTO.Response; using FindAndDrive.Domain.Models.Entities; namespace FindAndDrive.Domain.Services; public class ClientService : IClientService { private readonly IClientRepository _clientRepository; private readonly IDateTimeProvider _dateTimeProvider; public ClientService(IClientRepository clientRepository, IDateTimeProvider dateTimeProvider) { _clientRepository = clientRepository; _dateTimeProvider = dateTimeProvider; } public async Task GetClient(Guid clientId) { return await _clientRepository.FindFirst(w => w.ClientId == clientId); } public async Task> GetActiveClients() { var clients = await _clientRepository.GetActiveClients(); return clients.Select(s => new ClientResponse { ModifiedAt = s.ModifiedAt, ClientId = s.ClientId, ClientName = s.ClientName, CreatedAt = s.CreatedAt }).ToList(); } public async Task CreateClient(CreateClientRequest request) { var client = new Client { Active = true, ClientId = Guid.NewGuid(), ClientName = request.ClientName, CreatedAt = _dateTimeProvider.GetSouthAfricanDateTime(), ModifiedAt = null }; return await _clientRepository.Create(client); } public async Task UpdateClient(UpdateClientRequest request) { var client = await _clientRepository.FindFirst(w => w.ClientId == request.ClientId); client.ClientName = request.ClientName; client.ModifiedAt = _dateTimeProvider.GetSouthAfricanDateTime(); await _clientRepository.Update(client); } }