Ejemplo n.º 1
0
        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" }));
        }
Ejemplo n.º 2
0
        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());
        }