private bool TestForExistingOrganization(Models.OrganizationRequest value) { try { //SQL Statement var sqlString = "SELECT COUNT(*) FROM organizations WHERE name = @name"; using (var connection = new NpgsqlConnection(connectionString)) { connection.Open(); using (var command = new NpgsqlCommand(sqlString, connection)) { command.Parameters.AddWithValue("@name", NpgsqlTypes.NpgsqlDbType.Text, value.OrganizationName); command.Prepare(); var count = Convert.ToInt64(command.ExecuteScalar()); if (count >= 1) { return(true); } else { return(false); } } } } catch (Exception ex) { //Log Exception _logger.LogError(ex, "organization name verification failed"); return(false); } }
public ActionResult Post([FromBody] Models.OrganizationRequest value) { var result = organizationService.Initialize(value); if (result == null) { return(NotFound()); } else { return(Ok(result)); } }
private long CreateUser(Models.OrganizationRequest value, long organization, out long securityTokenOut) { try { //SQL Statement var sqlString = "INSERT INTO users (id, first_name, description, organization, email_address, password, security_token, role, agreed_to_terms_and_policies, enabled, last_name) " + "VALUES (@id, @first_name, @description, @organization, @email_address, @password, @security_token, @role, @agreed_to_terms_and_policies, @enabled, @last_name)"; //Create UNIX Timestamp var utcDateTime = DateTime.UtcNow; var dto = new DateTimeOffset(utcDateTime); var unixDateTime = dto.ToUnixTimeMilliseconds(); var random = new Random(); int rnd = random.Next(1000000000, 2000000000); long securityToken = unixDateTime - rnd; using (var connection = new NpgsqlConnection(connectionString)) { connection.Open(); using (var command = new NpgsqlCommand(sqlString, connection)) { command.Parameters.AddWithValue("@id", NpgsqlTypes.NpgsqlDbType.Bigint, unixDateTime); command.Parameters.AddWithValue("@first_name", NpgsqlTypes.NpgsqlDbType.Varchar, value.FirstName); command.Parameters.AddWithValue("@last_name", NpgsqlTypes.NpgsqlDbType.Varchar, value.LastName); command.Parameters.AddWithValue("@description", NpgsqlTypes.NpgsqlDbType.Varchar, value.UserDescription); command.Parameters.AddWithValue("@organization", NpgsqlTypes.NpgsqlDbType.Bigint, organization); command.Parameters.AddWithValue("@email_address", NpgsqlTypes.NpgsqlDbType.Varchar, value.UserEmailAddress); command.Parameters.AddWithValue("@password", NpgsqlTypes.NpgsqlDbType.Varchar, value.UserPassword); command.Parameters.AddWithValue("@security_token", NpgsqlTypes.NpgsqlDbType.Bigint, securityToken); command.Parameters.AddWithValue("@role", NpgsqlTypes.NpgsqlDbType.Bigint, 1); command.Parameters.AddWithValue("@agreed_to_terms_and_policies", NpgsqlTypes.NpgsqlDbType.Bigint, value.AgreeToTermsAndPolicies); command.Parameters.AddWithValue("@enabled", NpgsqlTypes.NpgsqlDbType.Bigint, 1); command.Prepare(); command.ExecuteNonQuery(); //Log Success securityTokenOut = securityToken; return(unixDateTime); } } } catch (Exception ex) { //Log Exception //_logger.LogError(ex, "user creation failed"); securityTokenOut = 0; return(0); } }
private Guid CreateUser(Models.OrganizationRequest value, Guid organization, Guid userId, out Guid securityTokenOut) { try { //SQL Statement var sqlString = "INSERT INTO users (id, first_name, last_name, description, email_address, password, security_token, organization, primary_user, role, created, created_by) " + "VALUES (@id, @first_name, @last_name, @description, @email_address, @password, @security_token, @organization, @primary_user, @role, @created, @created_by)"; //Guid idGuid = Guid.NewGuid(); Guid securityTokenGuid = Guid.NewGuid(); using (var connection = new NpgsqlConnection(connectionString)) { connection.Open(); using (var command = new NpgsqlCommand(sqlString, connection)) { command.Parameters.AddWithValue("@id", NpgsqlTypes.NpgsqlDbType.Uuid, userId); command.Parameters.AddWithValue("@first_name", NpgsqlTypes.NpgsqlDbType.Text, value.FirstName); command.Parameters.AddWithValue("@last_name", NpgsqlTypes.NpgsqlDbType.Text, value.LastName); command.Parameters.AddWithValue("@description", NpgsqlTypes.NpgsqlDbType.Text, value.UserDescription); command.Parameters.AddWithValue("@email_address", NpgsqlTypes.NpgsqlDbType.Text, value.UserEmailAddress); command.Parameters.AddWithValue("@password", NpgsqlTypes.NpgsqlDbType.Text, value.UserPassword); command.Parameters.AddWithValue("@security_token", NpgsqlTypes.NpgsqlDbType.Uuid, securityTokenGuid); command.Parameters.AddWithValue("@organization", NpgsqlTypes.NpgsqlDbType.Uuid, organization); command.Parameters.AddWithValue("@primary_user", NpgsqlTypes.NpgsqlDbType.Bigint, 1); command.Parameters.AddWithValue("@role", NpgsqlTypes.NpgsqlDbType.Bigint, 1); command.Parameters.AddWithValue("@created", NpgsqlTypes.NpgsqlDbType.TimestampTz, DateTime.UtcNow); command.Parameters.AddWithValue("@created_by", NpgsqlTypes.NpgsqlDbType.Uuid, userId); command.Prepare(); command.ExecuteNonQuery(); //Log Success securityTokenOut = securityTokenGuid; return(userId); } } } catch (Exception ex) { //Log Exception _logger.LogError(ex, "user creation failed"); securityTokenOut = errorGuid; return(errorGuid); } }
private Guid CreateOrganization(Models.OrganizationRequest value, Guid userId) { try { //SQL Statement var sqlString = "INSERT INTO organizations (id, name, description, created, created_by) " + "VALUES (@id, @name, @description, @created, @created_by)"; Guid idGuid = Guid.NewGuid(); using (var connection = new NpgsqlConnection(connectionString)) { connection.Open(); using (var command = new NpgsqlCommand(sqlString, connection)) { command.Parameters.AddWithValue("@id", NpgsqlTypes.NpgsqlDbType.Uuid, idGuid); command.Parameters.AddWithValue("@name", NpgsqlTypes.NpgsqlDbType.Text, value.OrganizationName); command.Parameters.AddWithValue("@description", NpgsqlTypes.NpgsqlDbType.Text, value.OrganizationDescription); command.Parameters.AddWithValue("@created", NpgsqlTypes.NpgsqlDbType.TimestampTz, DateTime.UtcNow); command.Parameters.AddWithValue("@created_by", NpgsqlTypes.NpgsqlDbType.Uuid, userId); command.Prepare(); command.ExecuteNonQuery(); return(idGuid); } } } catch (Exception ex) { //Log Exception _logger.LogError(ex, "organization creation failed"); return(errorGuid); } }
private long CreateOrganization(Models.OrganizationRequest value) { try { //SQL Statement var sqlString = "INSERT INTO organizations (id, name, description) " + "VALUES (@id, @name, @description)"; //Create UNIX Timestamp var utcDateTime = DateTime.UtcNow; var dto = new DateTimeOffset(utcDateTime); var unixDateTime = dto.ToUnixTimeMilliseconds(); using (var connection = new NpgsqlConnection(connectionString)) { connection.Open(); using (var command = new NpgsqlCommand(sqlString, connection)) { command.Parameters.AddWithValue("@id", NpgsqlTypes.NpgsqlDbType.Bigint, unixDateTime); command.Parameters.AddWithValue("@name", NpgsqlTypes.NpgsqlDbType.Varchar, value.OrganizationName); command.Parameters.AddWithValue("@description", NpgsqlTypes.NpgsqlDbType.Varchar, value.OrganizationDescription); command.Prepare(); command.ExecuteNonQuery(); return(unixDateTime); } } } catch (Exception ex) { //Log Exception //_logger.LogError(ex, "organization creation failed"); return(0); } }
public Models.OrganizationResponse Initialize(Models.OrganizationRequest value) { Models.OrganizationResponse response = new Models.OrganizationResponse(); bool existingOrganization; Guid organization; Guid group; Guid user; Guid securityToken; Guid userIdGuid; try { //Test to see if an Organization of the same name already exists if (existingOrganization = TestForExistingOrganization(value)) { //Log Failure response.Status = "error"; response.Message = "organization already exists"; response.Id = errorGuid; response.SecurityToken = errorGuid; return(response); } else { //Create a new User Id UUID userIdGuid = Guid.NewGuid(); //Create a new Organization if ((organization = CreateOrganization(value, userIdGuid)) != errorGuid) { if ((group = CreateGroup(organization, userIdGuid)) != errorGuid) { //Create a User with Creator Role priveleges within the new Organization if ((user = CreateUser(value, organization, userIdGuid, out securityToken)) != errorGuid) { //Log Success response.Status = "success"; response.Message = "initialization succeeded"; response.Id = user; response.SecurityToken = securityToken; return(response); } else { //Log Failure response.Status = "error"; response.Message = "user was not created"; response.Id = errorGuid; response.SecurityToken = errorGuid; return(response); } } else { //Log Failure response.Status = "error"; response.Message = "group was not created"; response.Id = errorGuid; response.SecurityToken = errorGuid; return(response); } } else { //Log Failure response.Status = "error"; response.Message = "organization was not created"; response.Id = errorGuid; response.SecurityToken = errorGuid; return(response); } } } catch (Exception ex) { //Log Exception _logger.LogError(ex, "initialization failed"); response.Status = "error"; response.Message = "initialization failed"; response.Id = errorGuid; return(response); } }
public Models.OrganizationResponse Initialize(Models.OrganizationRequest value) { Models.OrganizationResponse response = new Models.OrganizationResponse(); bool existingOrganization; long organization; long thingGroup; long user; long securityToken = 0; try { //Ensure user agreed to the terms and policies before creating a new Organization if (value.AgreeToTermsAndPolicies != 0) { //Test to see if an Organization of the same name already exists if (existingOrganization = TestForExistingOrganization(value)) { //Log Failure response.Status = "error"; response.Message = "organization already exists"; response.Id = 0; response.SecurityToken = 0; return(response); } else { //Create a new Organization if ((organization = CreateOrganization(value)) != 0) { if ((thingGroup = CreateThingGroup(organization)) != 0) { //Create a User with Creator Role priveleges within the new Organization if ((user = CreateUser(value, organization, out securityToken)) != 0) { //Log Success response.Status = "success"; response.Message = "initialization succeeded"; response.Id = user; response.SecurityToken = securityToken; return(response); } else { //Log Failure response.Status = "error"; response.Message = "user was not created"; response.Id = 0; response.SecurityToken = 0; return(response); } } else { //Log Failure response.Status = "error"; response.Message = "thing group was not created"; response.Id = 0; response.SecurityToken = 0; return(response); } } else { //Log Failure response.Status = "error"; response.Message = "organization was not created"; response.Id = 0; response.SecurityToken = 0; return(response); } } } else { //Log Failure response.Status = "error"; response.Message = "user did not agree to terms and policies"; response.Id = 0; response.SecurityToken = 0; return(response); } } catch (Exception ex) { //Log Exception //_logger.LogError(ex, "initialization failed"); response.Status = "error"; response.Message = "initialization failed"; response.Id = 0; return(response); } }