public ActionResult Enrol(EnrolModel model) { var qualificationIds = model.EnrolPostModels .Where(x => x.Selected) .Select(x => x.Qualification.QualificationId); var criterionIds = DatabaseContext.Criteria .Where(x => qualificationIds.Contains(x.ModuleSection.Module.Qualification.QualificationId)) .Select(x => x.CriterionId); foreach (var criterionId in criterionIds) { var newUserCriterion = new UserCriterion { CriterionId = criterionId, CriterionStatusId = (int)CriterionStatuses.NotStarted, UserId = model.User.UserId, UpdatedDate = DateTime.Now }; DatabaseContext.UserCriterions.Add(newUserCriterion); } DatabaseContext.SaveChanges(); return(RedirectToAction("Details", "Members", new { id = model.User.UserId })); }
public async Task <IActionResult> Enrol([FromBody] EnrolModel model) { var userExists = await userManager.FindByNameAsync(model.Username); if (userExists != null) { return(StatusCode(StatusCodes.Status500InternalServerError, new ResponseModel { Status = "Error", Message = "User already exists" })); } User user = new User() { Email = model.Email, SecurityStamp = Guid.NewGuid().ToString(), UserName = model.Username }; var result = await userManager.CreateAsync(user, model.Password); if (!result.Succeeded) { return(StatusCode(StatusCodes.Status500InternalServerError, new ResponseModel { Status = "Error", Message = "User creation failed! Please check user details and try again." })); } return(Ok(new ResponseModel { Status = "Success", Message = "User created successfully" })); }
public ActionResult Enrol(int id) { var user = DatabaseContext.Users.Find(id); var qualifications = DatabaseContext.Qualifications .Where(q => !q.UserQualifications.Select(uq => uq.UserId).Contains(id) && // Not already qualified !q.Modules.Any(m => m.ModuleSections.Any(ms => ms.Criteria.Any(c => c.UserCriterias.Any(uc => uc.UserId == id))))); var model = new EnrolModel(user, qualifications); return(View(model)); }