public IActionResult Disciplinas([Bind("DisciplinaId,Nome,Ano,ProfessorId")] Disciplina disciplina, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            if (ModelState.IsValid)
            {
                _context.Disciplina.Add(disciplina);
                _context.SaveChanges();
                return(View());
            }

            return(View());
        }
Esempio n. 2
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");

            if (string.IsNullOrEmpty(Input.TipoUtilizador))
            {
                ModelState.AddModelError("TipoUtilizador", "Tipo de Utilizador invalido");
                return(Page());
            }

            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = Input.Username, Email = Input.Email, EmailConfirmed = true
                };
                var result = await _userManager.CreateAsync(user, Input.Password);

                if (result.Succeeded)
                {
                    _logger.LogInformation("Criado novo utilizador");

                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    var callbackUrl = Url.Page(
                        "/Account/ConfirmEmail",
                        pageHandler: null,
                        values: new { userId = user.Id, code = code },
                        protocol: Request.Scheme);

                    await _emailSender.SendEmailAsync(Input.Email, "Confirme o seu email",
                                                      $"Por favor confirme a sua conta ao clicar <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>aqui</a>.");

                    switch (Input.TipoUtilizador.ToString())
                    {
                    case "Estudante":
                        _context.Estudante.Add(new Estudante()
                        {
                            Nome = Input.Username, Email = Input.Email
                        });
                        await _userManager.AddToRoleAsync(user, "Estudante");

                        _context.SaveChanges();
                        break;

                    case "Professor":
                        _context.Professor.Add(new Professor()
                        {
                            Nome = Input.Username, Email = Input.Email
                        });
                        await _userManager.AddToRoleAsync(user, "Professor");

                        _context.SaveChanges();
                        break;
                    }

                    // Faz login no novo user
                    //await _signInManager.SignInAsync(user, isPersistent: false);
                    return(LocalRedirect(returnUrl));
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }