ultimate/Service/EmployeeService.cs
2023-06-12 10:26:01 +02:00

77 lines
No EOL
2.8 KiB
C#

// ***********************************************************************
// Assembly : Service
// Author : frede
// Created : 2023 06 11 10:40
//
// Last Modified By : frede
// Last Modified On : 2023 06 11 10:40
// ***********************************************************************
// <copyright file="EmployeeService.cs" company="FCS">
// Copyright (C) 2023-2023 FCS Frede's Computer Services.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see [https://www.gnu.org/licenses]
// </copyright>
// <summary></summary>
// ***********************************************************************
using AutoMapper;
using Contracts;
using Entities.Exceptions;
using Service.Contracts;
using Shared.DataTransferObjects;
namespace Service;
internal sealed class EmployeeService : IEmployeeService
{
public readonly IRepositoryManager _repository;
public readonly ILoggerManager _logger;
public readonly IMapper _mapper;
public EmployeeService(IRepositoryManager repository, ILoggerManager logger, IMapper mapper)
{
_repository = repository;
_logger = logger;
_mapper = mapper;
}
public IEnumerable<EmployeeDto> GetEmployees(Guid companyId, bool trackChanges)
{
var company = _repository.Company.GetCompany(companyId, trackChanges);
if (company == null)
{
throw new CompanyNotFoundException(companyId);
}
var employeesFromDb = _repository.Employee.GetEmployees(companyId, trackChanges);
var employeesDto = _mapper.Map<IEnumerable<EmployeeDto>>(employeesFromDb);
return employeesDto;
}
public EmployeeDto GetEmployee(Guid companyId, Guid employeeId, bool trackChanges)
{
var company = _repository.Company.GetCompany(companyId, trackChanges);
if (company == null)
{
throw new CompanyNotFoundException(companyId);
}
var employeeDb = _repository.Employee.GetEmployee(companyId, employeeId, trackChanges);
if (employeeDb == null)
{
throw new EmployeeNotFoundException(employeeId);
}
var employee = _mapper.Map<EmployeeDto>(employeeDb);
return employee;
}
}