public ICollection <EvaluationStudentViewModel> GetEvaluationStudent(ICollection <Evaluation> evaluations, string userId) { List <EvaluationStudentViewModel> evaluationStudentList = new List <EvaluationStudentViewModel>(); foreach (var evaluation in evaluations) { EvaluationStudentViewModel evaluationStudentViewModel = new EvaluationStudentViewModel { Id = evaluation.Id, QuestionNumbers = evaluation.Questions.Count(), QuizName = evaluation.Name, TotalScore = evaluation.Questions.Sum(c => c.Score), LimitDate = evaluation.LimitDate, MinutesDuration = evaluation.MinutesDuration }; EvaluationUser evaluationUser = evaluation.EvaluationUsers.Where(x => x.UserId == userId).FirstOrDefault(); if (evaluationUser != null) { evaluationStudentViewModel.GotScore = evaluationUser.Calification; evaluationStudentViewModel.IsTaken = evaluationUser.Active; evaluationStudentViewModel.TakenDate = evaluationUser.TakenDate; } evaluationStudentList.Add(evaluationStudentViewModel); } return(evaluationStudentList); }
public bool UserCanBeEvaluated(Evaluation evaluation, string UserId, List <Answer> answers = null) { EvaluationUser evaluationUser = evaluation.EvaluationUsers.Where(x => x.UserId == UserId).FirstOrDefault(); if (evaluation.LimitDate >= DateTime.Today) { User user = evaluation.Sections.Where(x => x.Users.Select(y => y.Id).Contains(UserId)).SelectMany(z => z.Users.Where(c => c.Id == UserId)).FirstOrDefault(); if (user != null && evaluationUser == null) { CreateEvaluationUser(evaluation, UserId); return(true); } else if (user != null) { if (!evaluationUser.Active && (DateTime.Now < evaluationUser.TakenDate.AddMinutes(evaluation.MinutesDuration))) { return(true); } else if (!evaluationUser.Active) { FillEvaluationForRunningOutTime(evaluationUser, answers); } } } return(false); }
public static void SeedUsers(UserManager <EvaluationUser> userManager) { if (userManager.FindByNameAsync("TestModerator").Result == null) { EvaluationUser user = new EvaluationUser(); user.UserName = "******"; user.Email = "*****@*****.**"; user.FirstName = "Epic"; user.LastName = "Moderator"; IdentityResult result = userManager.CreateAsync (user, "Moderator123").Result; if (result.Succeeded) { userManager.AddToRoleAsync(user, "Moderator").Wait(); } } if (userManager.FindByNameAsync("TestAdmin").Result == null) { EvaluationUser user = new EvaluationUser(); user.UserName = "******"; user.Email = "*****@*****.**"; user.FirstName = "Epic"; user.LastName = "Admin"; IdentityResult result = userManager.CreateAsync (user, "Admin123").Result; if (result.Succeeded) { userManager.AddToRoleAsync(user, "Admin").Wait(); } } if (userManager.FindByNameAsync("TestUser").Result == null) { EvaluationUser user = new EvaluationUser(); user.UserName = "******"; user.Email = "*****@*****.**"; user.FirstName = "Epic"; user.LastName = "Tester"; IdentityResult result = userManager.CreateAsync (user, "User123").Result; if (result.Succeeded) { userManager.AddToRoleAsync(user, "ApiUser").Wait(); } } }
public void CreateEvaluationUser(Evaluation evaluation, string userId) { EvaluationUser evaluationUser = new EvaluationUser { Id = Guid.NewGuid(), Active = false, TakenDate = DateTime.Now, UserId = userId }; evaluation.EvaluationUsers.Add(evaluationUser); }
public void FillEvaluationForRunningOutTime(EvaluationUser evaluationUser, List <Answer> answers = null) { evaluationUser.Active = true; evaluationUser.Answers = answers == null ? new List <Answer>() : answers; if (answers != null) { evaluationUser.Calification = evaluationUser.Evaluation.Questions.Where(x => answers.Select(y => y.QuestionOptionId).Contains(x.Options.Where(z => z.IsCorrectOption == true).Select(t => t.Id).FirstOrDefault())).Sum(f => f.Score); } else { evaluationUser.Calification = 0; } evaluationUser.TakenDate = DateTime.Now; }
public async Task <CreateUserResponse> Create(string firstName, string lastName, string email, string userName, string password) { var appUser = new EvaluationUser { Email = email, UserName = userName, FirstName = firstName, LastName = lastName }; var identityResult = await _userManager.CreateAsync(appUser, password); await _userManager.AddToRoleAsync(appUser, "APIUSER"); if (!identityResult.Succeeded) { return(new CreateUserResponse(appUser.Id, false, identityResult.Errors.Select(e => new Error(e.Code, e.Description)))); } return(new CreateUserResponse(appUser.Id, identityResult.Succeeded, identityResult.Succeeded ? null : identityResult.Errors.Select(e => new Error(e.Code, e.Description)))); }
public void TakeQuiz(Evaluation evaluation, QuizViewModel quiz, string userId) { int TotalScore = 0; //Aquí validar si el quiz tiene las mismas preguntas que el quiz int questionNumber = quiz.Questions.Where(x => evaluation.Questions.Select(y => y.Id).Contains(x.Id)).Count(); if (evaluation.Questions.Count() != questionNumber) { throw new Exception("El Quiz es falso"); } //Validar si el estudiante ya presentó este quiz; tomar en cuenta el active EvaluationUser evaluationUser = evaluation.EvaluationUsers.Where(x => x.UserId == userId).FirstOrDefault(); if (evaluationUser != null) { if (evaluationUser.Active) { throw new Exception("Estudiante ya presento este quiz"); } } List <Answer> answers = new List <Answer>(); foreach (var questionQuiz in quiz.Questions) { Question questionEvaluation = evaluation.Questions.Where(x => x.Id == questionQuiz.Id).FirstOrDefault(); Guid correctOption = questionEvaluation.Options.Where(x => x.IsCorrectOption == true).Select(y => y.Id).FirstOrDefault(); if (correctOption == questionQuiz.Options.SelectedAnswer) { TotalScore += questionEvaluation.Score; } answers.Add(new Answer { QuestionOptionId = questionQuiz.Options.SelectedAnswer }); } evaluationUser.UserId = userId; evaluationUser.EvaluationId = evaluation.Id; evaluationUser.Calification = TotalScore; evaluationUser.Active = true; evaluation.EvaluationUsers.Add(evaluationUser); }
public QuizViewModel ReviewQuiz(Evaluation evaluation, string userId, bool isUserRequired = false) { EvaluationUser evaluationUser = evaluation.EvaluationUsers.Where(x => x.UserId == userId).FirstOrDefault(); List <QuestionQuizViewModel> quizQuestions = new List <QuestionQuizViewModel>(); foreach (var question in evaluation.Questions) { Dictionary <Guid, string> dictionary = question.Options.ToDictionary(x => x.Id, x => x.Option); OptionQuizViewModel optionViewModel = new OptionQuizViewModel { CorrectAnswer = question.Options.Where(x => x.IsCorrectOption == true).Select(y => y.Id).FirstOrDefault(), SelectedAnswer = evaluationUser.Answers.Where(x => question.Options.Select(y => y.Id).Contains(x.QuestionOptionId)).Select(z => z.QuestionOptionId).FirstOrDefault(), Options = new SelectList(dictionary, "Key", "Value") }; QuestionQuizViewModel quizQuestion = new QuestionQuizViewModel { ImagePath = question.ImagePath, QuestionScore = question.Score, QuestionText = question.QuestionText, Options = optionViewModel }; quizQuestions.Add(quizQuestion); } QuizViewModel quizViewModel = new QuizViewModel { Id = evaluation.Id, QuizName = evaluation.Name, Score = evaluation.Questions.Sum(x => x.Score), GotScore = evaluationUser.Calification, Questions = quizQuestions, User = (isUserRequired) ? evaluationUser.User : null, }; return(quizViewModel); }
public async Task <IList <string> > GetRoles(EvaluationUser user) { return(await _userManager.GetRolesAsync(user)); }
public void Update(EvaluationUser entity) { _context.Entry(entity).State = EntityState.Modified; }
public async Task <bool> CheckPassword(EvaluationUser user, string password) { return(await _userManager.CheckPasswordAsync(user, password)); }