/// <summary> /// checks if the employee is in the table /// if yes, updates it /// if no adds it /// </summary> /// <param name="dto"></param> /// <returns></returns> public async Task <AlpApiResponse> AddOrEditEmployee(EmployeeDto dto) { var response = new AlpApiResponse(); try { _logger.LogDebug(new { action = nameof(AddOrEditEmployee), dto = dto?.ToString() }.ToString()); dto.Validate(); var oldEntity = await _context.Employee.FirstOrDefaultAsync(employee => employee.EmployeeId == dto.Id); if (oldEntity != null) { oldEntity.UpdateEntityByDto(dto); await _context.SaveChangesAsync(); } else { var entity = dto.DtoToEntity(); entity.Department = null; entity.Section = null; await _context.Employee.AddAsync(entity); await _context.SaveChangesAsync(); } } catch (Exception e) { _logger.LogError(new { exception = e, message = e.Message, innerException = e, innerExceptionMessage = e.InnerException?.Message }.ToString()); response.Message = e.Message; response.Success = false; } return(response); }