public async Task <IActionResult> RegisterNewTeacher(RegisterTeacherViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                var newUser = new IdentityUser()
                {
                    Email = viewModel.Email, UserName = viewModel.Email
                };
                var result = await _userManager.CreateAsync(newUser, viewModel.Password);

                if (result.Succeeded)
                {
                    Teacher newTeacher = new Teacher()
                    {
                        Salary = viewModel.Salary, HireDate = viewModel.HireDate, AppUserId = newUser.Id
                    };
                    _dbContext.Add(newTeacher);
                    _dbContext.SaveChanges();

                    await _userManager.AddToRoleAsync(newUser, "TeacherRole");

                    await _signInManager.SignInAsync(newUser, true);

                    return(RedirectToAction("Index", "Home"));
                }
                else
                {
                    ModelState.AddModelError("Email", "This Email already exists");
                }
            }
            return(View(viewModel));
        }
Beispiel #2
0
        public ActionResult RegisterTeacher(RegisterTeacherViewModel model)
        {
            //extract data from model to login table
            var login = new Login();

            login.Adress      = model.Adress;
            login.Description = model.Description;
            login.Email       = model.Email;
            login.imageUrl    = model.imageUrl;
            login.Name        = model.Name;
            login.Password    = model.Password;
            login.phone       = model.phone;
            login.userType    = model.userType;

            //extract data from model to login table
            var teacher = new Teacher();

            teacher.Adress               = model.Adress;
            teacher.Description          = model.Description;
            teacher.Email                = model.Email;
            teacher.imageUrl             = model.imageUrl;
            teacher.Name                 = model.Name;
            teacher.Password             = model.Password;
            teacher.phone                = model.phone;
            teacher.DegreeImageUrl       = model.DegreeImageUrl;
            teacher.currentAccountStatus = "UnVerified";

            LoginServices.Instance.SaveLogin(login);
            TeacherServices.Instance.SaveTeacher(teacher);
            return(View());
        }
Beispiel #3
0
        public IActionResult RegisterTeacherForm()
        {
            RegisterTeacherViewModel model = new RegisterTeacherViewModel();

            model.Subjects = _dbContext.GetSubjects();
            return(View(model));
        }
Beispiel #4
0
        public ActionResult RegisterTeacher()
        {
            if (bool.TryParse(ConfigurationManager.AppSettings["UseRecaptcha"], out var useRecaptcha))
            {
                var model = new RegisterTeacherViewModel
                {
                    UseRecaptcha = useRecaptcha
                };
                if (ConfigurationManager.AppSettings["AllowRegisterTeacher"] == "true")
                {
                    return(View(model));
                }
                else
                {
                    TempData["Message"] = "Регистрация новых учителей в системе запрещена администратором.";
                }
                //ViewBag.ErrorMessage = "Регистрация новых учителей в системе запрещена администратором.";
            }
            else
            {
                TempData["Message"] = "Не удалось считать параметр конфигурации приложения.";
            }
            //ViewBag.ErrorMessage = "Не удалось считать параметр конфигурации приложения.";

            return(RedirectToAction("Index", "Home"));
            //return View("Error");
        }
Beispiel #5
0
        public async Task <ActionResult> RegisterTeacher(RegisterTeacherViewModel model)
        {
            var userdb = ApplicationDbContext.Create();


            //check if the user already registered in our system
            if (ModelState.IsValid)
            {
                var usercheck = await UserManager.FindByEmailAsync(model.Email);

                if (usercheck != null)
                {
                    ModelState.AddModelError("Email", "User Already registered");
                }
            }
            if (!await RoleManager.RoleExistsAsync("teacher"))
            {
                ModelState.AddModelError("", "Unkown Error , Teacher role deleted from the database maybe?");
            }
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, PhoneNumber = model.PhoneNumber
                };
                //Auto generate password and set it to the account
                string genpas = PasswordGenerator();
                var    result = await UserManager.CreateAsync(user, genpas);

                //put the user in the choosed role
                await UserManager.AddToRoleAsync(user.Id, "teacher");

                if (result.Succeeded)
                {
                    // await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);

                    // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);

                    var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    #region //create message body
                    StringBuilder message = new StringBuilder();
                    // generating the message
                    message.Append("Welcome " + user.FullName + "! You registered in our System as Teacher");
                    message.AppendLine("And Your password is (" + genpas + ") .<br/>");
                    message.AppendLine("We suggest you to change your auto generated pssword for more security .<br/>");
                    message.AppendLine(" Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a><br/>");
                    #endregion
                    await UserManager.SendEmailAsync(user.Id, "Confirm your account", message.ToString());

                    return(RedirectToAction("Index", "Courses"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form

            return(View());
        }
Beispiel #6
0
        public Register()
        {
            InitializeComponent();
            regTeacher = new RegisterTeacherViewModel();

            cbxCourses.ItemsSource = regTeacher.GetByEducation();
            //coursesList.ItemsSource = regTeacher.GetByEducation();
            //regTeacher.CreateCrazy(ShowCourse);
        }
Beispiel #7
0
        public async Task <ActionResult> RegisterTeacher(RegisterTeacherViewModel model)
        {
            if (ModelState.IsValid)
            {
                var appDbContext = HttpContext.GetOwinContext().Get <ApplicationDbContext>();

                using (var identitydbContextTransaction = appDbContext.Database.BeginTransaction())
                {
                    try
                    {
                        var user = new ApplicationUser {
                            UserName = model.Email, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName
                        };
                        var result = await UserManager.CreateAsync(user, model.Password);

                        if (result.Succeeded)
                        {
                            IdentityResult result1 = null;
                            IdentityResult result2 = null;
                            if (0 == user.Claims.Where(c => c.ClaimType == "Department").Count())
                            {
                                result1 = await UserManager.AddClaimAsync(user.Id, new Claim("Department", model.Department));
                            }
                            if (0 == user.Claims.Where(c => c.ClaimType == "MobilePhone").Count())
                            {
                                result2 = await UserManager.AddClaimAsync(user.Id, new Claim("MobilePhone", model.MobilePhone));
                            }

                            if (result1.Succeeded && result2.Succeeded)
                            {
                                identitydbContextTransaction.Commit();

                                return(RedirectToAction("Index", "Home"));
                            }
                            if (!result1.Succeeded)
                            {
                                AddErrors(result1);
                            }
                            if (!result2.Succeeded)
                            {
                                AddErrors(result2);
                            }
                        }
                        else
                        {
                            ModelState.AddModelError("", "User not saved. Please retry in 5 minutes.");
                        }
                    }
                    catch (Exception)
                    {
                        identitydbContextTransaction.Rollback();
                        ModelState.AddModelError("", "Unhandled exception. Please retry in 5 minutes.");
                    }
                }
            }
            return(View(model));
        }
Beispiel #8
0
        public IActionResult TeacherRegister()
        {
            RegisterTeacherViewModel model = new RegisterTeacherViewModel
            {
                DeparmentItems = populateDepartments(),
                PositionItems  = populatePositions(),
                Birthday       = DateTime.Now
            };

            return(View(model));
        }
Beispiel #9
0
        public async Task RegisterTeacher([FromBody] RegisterTeacherViewModel model)
        {
            try
            {
                var userName = User.Identity.Name;
                if (ModelState.IsValid)
                {
                    Teacher user = new Teacher {
                        UserName = model.UserName,
                        FIO      = model.FIO,
                        Email    = model.Email
                    };

                    var result = await userManager.CreateAsync(user, model.Password);

                    if (result.Succeeded)
                    {
                        var managerResult = await userManager.AddToRoleAsync(user, "teacher");

                        managerResult = await userManager.AddToRoleAsync(user, "user");

                        if (managerResult.Succeeded)
                        {
                            Response.StatusCode = StatusCodes.Status200OK;
                            var body = JsonConvert.SerializeObject(new { user.Id },
                                                                   new JsonSerializerSettings {
                                Formatting = Formatting.Indented
                            });

                            await Response.WriteAsync(body);
                        }
                    }
                    else
                    {
                        foreach (var error in result.Errors)
                        {
                            ModelState.AddModelError(string.Empty, error.Description);
                        }


                        await Response.BadRequestHelper(ModelState.Values);
                    }
                }
                else
                {
                    await Response.BadRequestHelper(ModelState.Values);
                }
            }
            catch (Exception e)
            {
                ModelState.AddModelError("Error", e.Message);
                await Response.BadRequestHelper(ModelState.Values);
            }
        }
Beispiel #10
0
        public RedirectToRouteResult RegisterTeacher(RegisterTeacherViewModel model)
        {
            Login          login    = new Login(model.Id, model.Password, false, true, false, "");
            List <Subject> subjects = _dbContext.GetSubjects().Select(x => x).Where(x => model.SubjectsId.Contains(x.Id)).ToList();
            Teacher        teacher  = new Teacher(model.FullName, model.Faculty, subjects, model.Cathedra, model.Id, model.Email);

            _dbContext.SetTeacher(teacher);
            _dbContext.SetLogin(login);
            return(RedirectToRoute(new {
                controller = "Admin",
                action = "RegisteredSuccessful"
            }));
        }
Beispiel #11
0
        public IActionResult CreateTeacher()
        {
            RegisterTeacherViewModel model = new RegisterTeacherViewModel
            {
                DeparmentItems = PopulateDepartments(),
                PositionItems  = PopulatePositions(),
                Birthday       = DateTime.Now
            };

            ViewData["Title"] = "Добавление преподавателя";

            return(View(model));
        }
Beispiel #12
0
        public async Task <IActionResult> TeacherRegister(RegisterTeacherViewModel registerUserViewModel)
        {
            registerUserViewModel.DeparmentItems = populateDepartments();
            registerUserViewModel.PositionItems  = populatePositions();

            if (_databaseWorker.DepartmentExists(registerUserViewModel.DepartmentId) && _databaseWorker.PositionExists(registerUserViewModel.PositionId))
            {
                if (ModelState.IsValid)
                {
                    IdentityResult result = await _authentication.CreateUserAsync(registerUserViewModel);


                    if (result.Succeeded)
                    {
                        User user = await _authentication.FindUserByEmailAsync(registerUserViewModel.Email);

                        if (!await _authentication.CreateTeacherUserAsync(user.Id, registerUserViewModel.DepartmentId, registerUserViewModel.PositionId))
                        {
                            await _authentication.DeleteUserAsync(user);

                            return(View(registerUserViewModel));
                        }

                        // установка куки
                        await _authentication.SignInAsync(user);

                        return(RedirectToAction("Index", "Home"));
                    }
                    else
                    {
                        foreach (var error in result.Errors)
                        {
                            ModelState.AddModelError(string.Empty, error.Description);
                        }
                    }
                }
            }
            else
            {
                ModelState.AddModelError(string.Empty, "Choosen Department or Position does not exists!");
            }


            return(View(registerUserViewModel));
        }
        public async System.Threading.Tasks.Task <ActionResult> CreateTeacher(RegisterTeacherViewModel model, HttpPostedFileBase ImgFile)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    string fileName = Guid.NewGuid().ToString() + ".jpg";

                    string image = Server.MapPath(UniversityManager.Helpers.Constants.ImagePath) + "//" + fileName;

                    using (Bitmap img = new Bitmap(ImgFile.InputStream))
                    {
                        Bitmap saveImg = ImageWorker.CreateImage(img, 400, 400);
                        if (saveImg != null)
                        {
                            saveImg.Save(image, ImageFormat.Jpeg);
                            _ctx.TeacherAdditionalInfos.Add(new Models.EF.TeacherAdditionalInfo()
                            {
                                FullName = model.FullName,
                                Address  = model.Address,
                                Image    = fileName,
                                Id       = user.Id,
                                Skills   = model.Skills
                            });
                            _ctx.SaveChanges();
                        }
                    }
                    UserManager.AddToRole(user.Id, "Teacher");
                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    return(RedirectToAction("Index", "Home", new { area = "" }));
                }
                AddErrors(result);
            }

            return(View(model));
        }
        public async Task <IActionResult> RegisterTeacher(RegisterTeacherViewModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await _userManager.CreateAsync(user, model.Password);

                bool registerRole = new Create().RegisterRole(user.Id);
                if (result.Succeeded && model.LevelSelect == "teacher")
                {
                    bool isCreate = new Create().CreateTeacher(user.Id, model.Studio, model.Cert, null, null, false, model.TeacherName);
                    var  code     = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    var callbackUrl = Url.Action(nameof(ConfirmEmail), "Account", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme);
                    await _emailSender.SendEmailAsync(model.Email, "Confirm your account",
                                                      $"Please confirm your account by clicking this link: <a href='{callbackUrl}'>link</a>");

                    _logger.LogInformation(3, "User created a new account with password.");
                    string url = string.Format("/Account/AccountCreated");
                    return(Redirect(url));
                }
                else
                {
                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    var callbackUrl = Url.Action(nameof(ConfirmEmail), "Account", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme);
                    await _emailSender.SendEmailAsync(model.Email, "Confirm your account",
                                                      $"Please confirm your account by clicking this link: <a href='{callbackUrl}'>link</a>");

                    _logger.LogInformation(3, "User created a new account with password.");
                    string url = string.Format("/Account/AccountCreated");
                    return(Redirect(url));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Beispiel #15
0
        public async Task <IActionResult> CreateTeacher(RegisterTeacherViewModel registerUserViewModel)
        {
            registerUserViewModel.DeparmentItems = PopulateDepartments();
            registerUserViewModel.PositionItems  = PopulatePositions();

            if (_databaseWorker.DepartmentExists(registerUserViewModel.DepartmentId) && _databaseWorker.PositionExists(registerUserViewModel.PositionId))
            {
                if (ModelState.IsValid)
                {
                    IdentityResult result = await _authentication.CreateUserAsync(registerUserViewModel);


                    if (result.Succeeded)
                    {
                        User user = await _authentication.FindUserByEmailAsync(registerUserViewModel.Email);

                        if (!await _authentication.CreateTeacherUserAsync(user.Id, registerUserViewModel.DepartmentId, registerUserViewModel.PositionId))
                        {
                            await _authentication.DeleteUserAsync(user);

                            return(View("CreateTeacher", registerUserViewModel));
                        }

                        return(RedirectToAction("Users"));
                    }
                    else
                    {
                        foreach (var error in result.Errors)
                        {
                            ModelState.AddModelError(string.Empty, error.Description);
                        }
                    }
                }
            }
            else
            {
                ModelState.AddModelError(string.Empty, "Выбирете кафедру для преподователя");
            }

            return(View("CreateTeacher", registerUserViewModel));
        }
        public async Task <IActionResult> RegisterNewTeacher(RegisterTeacherViewModel model)
        {
            if (ModelState.IsValid)
            {
                var newUser = new IdentityUser()
                {
                    UserName = model.username, Email = model.Email
                };

                var result = await _userManager.CreateAsync(newUser, model.Password);

                if (result.Succeeded)
                {
                    var newTeacher = new Teacher()
                    {
                        name = model.name, subject = model.subject, age = model.age, TUserId = newUser.Id
                    };
                    _dbContext.teachers.Add(newTeacher);
                    _dbContext.SaveChanges();
                    await _userManager.AddToRoleAsync(newUser, "TeacherRole");

                    await _signInManager.SignInAsync(newUser, true);

                    return(RedirectToAction("index", "Home"));
                }
                else
                {
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError("", error.Description);
                    }
                }
            }


            return(View(model));
        }
        public async Task <ActionResult> RegisterTeacher(RegisterTeacherViewModel model)
        {
            if (ModelState.IsValid)
            {
                User user = new User {
                    UserName = model.Email, Active = true, FirstName = model.FirstName, LastName = model.LastName, Password = Utils.Hash(model.Password), Role = "Teacher"
                };
                if (!string.IsNullOrEmpty(model.MobilePhone))
                {
                    user.Claims.Add(new UserClaims {
                        ClaimType = ClaimTypes.MobilePhone, ClaimValue = model.MobilePhone
                    });
                }
                if (!string.IsNullOrEmpty(model.Department))
                {
                    user.Claims.Add(new UserClaims {
                        ClaimType = "Department", ClaimValue = model.Department
                    });
                }

                var result = await _userService.AddUserAsync(user);

                if (result > 0)
                {
                    //_authenticationService.SignIn(user);
                    ModelState.AddModelError("", "User successfully saved.");
                    return(View(new RegisterTeacherViewModel()));
                    //return RedirectToAction("Index", "Home");
                }
                else
                {
                    ModelState.AddModelError("", "User not saved. Please retry in 5 minutes or contact the administrator.");
                }
            }

            return(View(model));
        }
Beispiel #18
0
        public async Task <ActionResult> RegisterTeacher(RegisterTeacherViewModel model)
        {
            if (ModelState.IsValid)
            {
                string roleId = _unitOfWork.AspNetRoleRepository.Get()
                                .Where(r => r.Name == "Teacher")                                //"Student")
                                .Select(r => r.Id)
                                .FirstOrDefault();
                string defaultPassword = "******";

                var store   = new UserStore <ApplicationUser>(context);
                var manager = new ApplicationUserManager(store);

                var user = new ApplicationUser
                {
                    UserName  = model.Email,
                    Email     = model.Email,
                    FirstName = model.FirstName,
                    LastName  = model.LastName,
                    IsActive  = true,
                    RoleId    = roleId
                };

                await manager.CreateAsync(user, defaultPassword);

                await manager.AddToRoleAsync(user.Id, "Teacher");

                await SendEmail(fullName : string.Format("{0} {1}", user.FirstName, user.LastName),
                                email : user.Email,
                                template : "RegisterTeacherEmailTemplate",
                                emailTitle : "Teacher registration");

                return(RedirectToAction("ApproveRegistration", "Admin"));
            }
            return(View(model));
        }
        public async Task<ActionResult> RegisterTeacher(RegisterTeacherViewModel model)
        {
            if (model == null)
            {
                return PartialView("_RegisterTeacher", model);
            }
            if (ModelState.IsValid)
            {
                var user = new User { UserName = model.Username, Email = model.Email };
                var result = await UserManager.CreateAsync(user, model.Password);
                if (result.Succeeded)
                {
                    await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);

                    // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

                    var newUser = _db.Users.FirstOrDefault(x => x.UserName == user.UserName);
                    if (newUser != null)
                    {
                        var roleUser = this.UserManager.AddToRole(newUser.Id, "Teacher");
                    }

                    return RedirectToAction("Index", "Home");
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return PartialView("_RegisterTeacher",model);
        }
Beispiel #20
0
        public async System.Threading.Tasks.Task <ActionResult> RegisterTeacher(RegisterTeacherViewModel model)
        {
            if (ModelState.IsValid)
            {
                if (await UserManager.Users.AnyAsync(u => u.Email == model.Email))
                {
                    ModelState.AddModelError("", "Пользователь с таким email уже существует.");
                }
                else
                {
                    if (model.UseRecaptcha)
                    {
                        var recaptchaHelper = this.GetRecaptchaVerificationHelper();
                        if (string.IsNullOrEmpty(recaptchaHelper.Response))
                        {
                            ModelState.AddModelError("", "Ответ капчи не может быть пустым.");
                            return(View(model));
                        }
                        var recaptchaResult =
                            await recaptchaHelper.VerifyRecaptchaResponseTaskAsync();

                        if (recaptchaResult != RecaptchaVerificationResult.Success)
                        {
                            ModelState.AddModelError("", "Капча введена неверно.");
                            return(View(model));
                        }
                    }

                    var userInfo = new UserInfo
                    {
                        Id            = Guid.NewGuid(),
                        CreatedDate   = DateTime.Now,
                        LastVisitDate = DateTime.Now,
                        School        = model.School,
                        Grade         = 0,
                        HomeTown      = model.HomeTown
                    };
                    var user = new ApplicationUser
                    {
                        UserName   = model.UserName,
                        Email      = model.Email,
                        LastName   = model.LastName,
                        FirstName  = model.FirstName,
                        MiddleName = model.MiddleName,
                        Ip         = GetLocalIP4().ToString(),
                        UserInfoId = userInfo.Id,
                        UserInfo   = userInfo,
                        IsDeleted  = true,
                        Rating     = 0,
                        TeamId     = null
                    };
                    var result = await UserManager.CreateAsync(user, model.Password);

                    if (result.Succeeded)
                    {
                        UserManager.AddToRole(user.Id, "teacher");
                        return(RedirectToAction("Index", "Home"));
                    }
                    else
                    {
                        AddErrors(result);
                    }
                }
            }

            return(View(model));
        }