public IActionResult CreateUser([FromBody] UserCreationDto user) { _logger.Info($"Event:{LoggingEvents.UserCreate},Method:{nameof(CreateUser)}, Message: trying create a new user. Payload: {JsonConvert.SerializeObject(user)}"); if (user == null) { _logger.Warn($"Event:{LoggingEvents.UserCreate},Method:{nameof(CreateUser)}, Error: model is null."); return(BadRequest()); } var userNameFound = _userApplication.UserNameExists(user.UserName); if (userNameFound.IsSuccessful) { _logger.Warn($"Event:{LoggingEvents.UserCreate},Method:{nameof(CreateUser)}, Error: username {user.UserName} exists, try using another one."); return(BadRequest()); } var emailFound = _userApplication.EmailExists(user.Email); if (emailFound.IsSuccessful) { _logger.Warn($"Event:{LoggingEvents.UserCreate},Method:{nameof(CreateUser)}, Error: email {user.Email} exists, try using another one."); return(BadRequest()); } var userCreated = _userApplication.Create(user); if (userCreated.IsFailure) { _logger.Warn($"Event:{LoggingEvents.UserCreate},Method:{nameof(CreateUser)}, Error: the following validations rules were broken: {JsonConvert.SerializeObject(userCreated.Errors)}"); } _logger.Info($"Event:{LoggingEvents.UserCreate},Method:{nameof(CreateUser)}, Message: user was created successfully."); return(CreatedAtRoute("GetUser", new { userId = userCreated.Data.Id }, CreateLink(userCreated.Data))); }