public Models.UserResponse CreateUser(Models.UserRequest value, long organization) { Models.UserResponse response = new Models.UserResponse(); try { //SQL Statement var sqlString = "INSERT INTO users (id, first_name, description, organization, email_address, password, security_token, role, user_group, agreed_to_terms_and_policies, enabled, last_name) " + "VALUES (@id, @first_name, @description, @organization, @email_address, @password, @security_token, @role, @user_group, @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, value.Role); command.Parameters.AddWithValue("@user_group", NpgsqlTypes.NpgsqlDbType.Bigint, value.UserGroup); command.Parameters.AddWithValue("@agreed_to_terms_and_policies", NpgsqlTypes.NpgsqlDbType.Bigint, value.AgreeToTermsAndPolicies); command.Parameters.AddWithValue("@enabled", NpgsqlTypes.NpgsqlDbType.Bigint, value.Enabled); command.Prepare(); command.ExecuteNonQuery(); //Log Success response.Status = "success"; response.Message = "user created"; response.Id = unixDateTime; response.SecurityToken = securityToken; return(response); } } } catch (Exception ex) { //Log Exception //_logger.LogError(ex, "user creation failed"); response.Status = "error"; response.Message = "user creation failed"; response.Id = 0; response.SecurityToken = 0; return(response); } }
public Models.UserResponse CreateUser(Models.UserRequest value, Guid organization) { Models.UserResponse response = new Models.UserResponse(); 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)"; //Create a new User Id UUID Guid userIdGuid = Guid.NewGuid(); //Create a new Security Token UUID 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, userIdGuid); 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.Description); command.Parameters.AddWithValue("@email_address", NpgsqlTypes.NpgsqlDbType.Text, value.EmailAddress); command.Parameters.AddWithValue("@password", NpgsqlTypes.NpgsqlDbType.Text, value.Password); 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, 0); command.Parameters.AddWithValue("@role", NpgsqlTypes.NpgsqlDbType.Bigint, value.Role); command.Parameters.AddWithValue("@created", NpgsqlTypes.NpgsqlDbType.TimestampTz, DateTime.UtcNow); command.Parameters.AddWithValue("@created_by", NpgsqlTypes.NpgsqlDbType.Uuid, value.CreatedBy); command.Prepare(); command.ExecuteNonQuery(); //Log Success response.Status = "success"; response.Message = "user created"; response.Id = userIdGuid; response.SecurityToken = securityTokenGuid; return(response); } } } catch (Exception ex) { //Log Exception _logger.LogError(ex, "user creation failed"); response.Status = "error"; response.Message = "user creation failed"; response.Id = errorGuid; response.SecurityToken = errorGuid; return(response); } }
public ActionResult Login(Models.UserResponse userResponse) { if (!ModelState.IsValid) { return(View()); } else { return(View("Index")); } }
public ActionResult Register(Models.UserResponse userResponse) { if (ModelState.IsValid) { return(View("Thanks", userResponse)); } else { var school = new Entities(); school.AddUser4(userResponse.UserEmail, userResponse.UserPassword, false); return(View()); } }
public async Task <IActionResult> SendSurveyResponses([FromBody] SurveyAnswerRequest request) { Response <SurveyStat> response = new Response <SurveyStat>(); try { var isFaulted = IsAuthenticationFaulted(UserIdentity); if (isFaulted) { response = new Response <SurveyStat> { ResponseBody = new SuccessResponse <SurveyStat> { Data = null, ResponseCode = "E009", ResponseMessage = "You do not have the permission to carry out this operation, kindly login and try again." } }; return(Unauthorized(response.ResponseBody)); } if (request.Responses.Count == 0) { ModelState.AddModelError("questionId", "questionId is required!"); ModelState.AddModelError("optionId", "optionId is required!"); } if (!ModelState.IsValid) { var requestResponse = ApiResponseFormatter.RequestResponse(ModelState); return(BadRequest(requestResponse)); } User userCredentials; Survey survey; using (var _context = new MiniSurveyContext()) { userCredentials = await _context.Users.Where(x => x.Id == UserIdentity) .Include(x => x.UserResponses) .FirstOrDefaultAsync(); survey = await _context.Surveys.Where(a => a.Id == request.SurveyId).FirstOrDefaultAsync(); } if (userCredentials == null) { response = new Response <SurveyStat> { ResponseBody = new SuccessResponse <SurveyStat> { Data = null, ResponseCode = "E003", ResponseMessage = "You do not have the permission to submit your response. Kindly login or register to share your opinion." } }; return(Unauthorized(response.ResponseBody)); } if (survey == null) { response = new Response <SurveyStat> { ResponseBody = new SuccessResponse <SurveyStat> { Data = null, ResponseCode = "E012", ResponseMessage = "The survey you selected does not exist. Kindly try again later." } }; return(NotFound(response.ResponseBody)); } if (userCredentials.UserResponses.Count == 0) { List <Models.UserResponse> selectedResponses = new List <Models.UserResponse>(); foreach (var userResponse in request.Responses) { Models.UserResponse selectedResponse = new Models.UserResponse { QuestionId = userResponse.QuestionId, OptionId = userResponse.OptionId, UserId = userCredentials.Id, DateResponded = DateTime.UtcNow, SurveyId = request.SurveyId, TextResponse = userResponse.TextAnswer }; selectedResponses.Add(selectedResponse); } using (var _context = new MiniSurveyContext()) { _context.UserResponses.AddRange(selectedResponses); await _context.SaveChangesAsync(); } } List <Models.UserResponse> userResponses = new List <Models.UserResponse>(); List <Models.QuestionOption> questionOptions = new List <QuestionOption>(); using (var _context = new MiniSurveyContext()) { userResponses = await _context.UserResponses.ToListAsync(); questionOptions = await _context.QuestionOptions.Include(a => a.Question).Include(a => a.Option).ToListAsync(); } var totalUserIds = userResponses.Select(a => a.UserId).Distinct().ToList(); var totalQuestionIds = userResponses.Select(a => a.QuestionId).Distinct().ToList(); var totalUsersCount = totalUserIds.Count; var totalQuestionsCount = totalQuestionIds.Count; List <Poll> polls = new List <Poll>(); foreach (var questionId in totalQuestionIds) { var selectedQuestionOptions = questionOptions.Where(a => a.QuestionId == questionId); var questionResponses = userResponses.Where(a => a.QuestionId == questionId); var question = selectedQuestionOptions.FirstOrDefault().Question; List <OpinionPoll> questionOpinions = new List <OpinionPoll>(); if (selectedQuestionOptions != null) { foreach (var selectedQuestionOption in selectedQuestionOptions) { var option = selectedQuestionOption.Option; var responseCount = questionResponses.Count(a => a.OptionId == option.Id); var numberDivision = (double)responseCount / (double)totalUsersCount; var responsePercentage = numberDivision * 100; var roundedUpPercentage = Math.Round(responsePercentage, 1); OpinionPoll opinionPoll = new OpinionPoll { OptionId = option.Id, Option = option.Text, Percentage = roundedUpPercentage }; questionOpinions.Add(opinionPoll); } } Poll poll = new Poll { QuestionId = questionId, Question = question.Text, OpinionPolls = questionOpinions }; polls.Add(poll); } SurveyStat stat = new SurveyStat { Polls = polls, TotalParticipants = totalUsersCount, TotalQuestions = totalQuestionsCount }; response = new Response <SurveyStat> { ResponseBody = new SuccessResponse <SurveyStat> { Data = stat, ResponseCode = "00", ResponseMessage = "You have successfully shared your opinion in the survey. Kindly view our stats to compare your responses with those of others." } }; return(Ok(response.ResponseBody)); } catch (Exception) { response = new Response <SurveyStat> { ResponseBody = new SuccessResponse <SurveyStat> { Data = null, ResponseCode = "E001", ResponseMessage = "Sorry, we are unable to process your request at the moment, kindly try again later." } }; return(StatusCode(500, response.ResponseBody)); } }