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 }));
        }
Example #2
0
        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));
        }