public async Task <IActionResult> Create(EmployeeRequest employeeRequest) { _logger.LogInformation("Getting employees"); var employees = await _employeeService.GetEmployeesAsync(); if (employeeRequest.Role == "CEO" && employees.FindAll(x => x.Role == "CEO").Count > 0) { _logger.LogWarning("There can be only 1 employee with CEO role."); return(BadRequest(new { error = "There can be only 1 employee with CEO role" })); } if (!(employees.Find(x => x.Id == employeeRequest.BossId) is null)) { var employee = EmployeeMappings.ToEmployee(employeeRequest, employees); var created = await _employeeService.CreateEmployeeAsync(employee); if (!created) { _logger.LogWarning("Unable to create employee"); return(BadRequest(new { error = "Unable to create employee" })); } var response = EmployeeMappings.ToEmployeeResponse(employee); return(CreatedAtAction(nameof(GetAll), new { id = employee.Id }, response)); } return(BadRequest(new { error = "BossId not found" })); }
public async Task <IActionResult> Update(int employeeId, EmployeeRequest request) { _logger.LogInformation("Getting employees"); var employees = await _employeeService.GetEmployeesAsync(); _logger.LogInformation("Getting employee {Id}", employeeId); var employeeToUpdate = await _employeeService.GetEmployeeByIdAsync(employeeId); var employee = EmployeeMappings.ToEmployee(employeeToUpdate, request, employees); var updated = await _employeeService.UpdateEmployeeAsync(employee); if (updated) { return(Ok(employee)); } return(NotFound()); }