public ActionResult InstAdd() { InstituicaoViewModelAdd i = new InstituicaoViewModelAdd { Servicos = _db.Servicos.ToList(), Cidades = _db.Cidades.ToList(), TiposEnsino = _db.TipoEnsino.ToList() }; return(View(i)); }
public ActionResult Registo() { if (User.Identity.IsAuthenticated) { return(RedirectToAction("Index", "Home")); } ViewBag.CidadeID = new SelectList(_db.Cidades, "CidadeID", "CidadeNome"); InstituicaoViewModelAdd i = new InstituicaoViewModelAdd { Servicos = _db.Servicos.ToList(), TiposEnsino = _db.TipoEnsino.ToList() }; return(View(i)); }
public async System.Threading.Tasks.Task <ActionResult> Registo(InstituicaoViewModelAdd inst) { try { ViewBag.CidadeID = new SelectList(_db.Cidades, "CidadeID", "CidadeNome"); if (_UserDb.Users.Any(y => y.Email == inst.Email)) { ModelState.AddModelError("Email", "Conta já existente!"); } if (inst.Cidade.CidadeID.ToString() == "") { ModelState.AddModelError("Cidade", "Selecione uma Cidade Valida!"); } if (inst.TipoInstituicao == 0) { ModelState.AddModelError("TipoInstituicao", "Selecione uma Instituição!"); } int count = 0; foreach (var it in inst.TiposEnsino) { if (it.IsSelected) { count++; } } if (count == 0) { ModelState.AddModelError("TiposEnsino", "Selecione Pelo menos 1 Serviço de ensino!"); } if (ModelState.IsValid) { var roleManager = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(_UserDb)); var user = new ApplicationUser { UserName = inst.Email, Email = inst.Email }; var result = await UserManager.CreateAsync(user, inst.Password); if (result.Succeeded) { if (!roleManager.RoleExists(RolesConst.Instituicao)) { var role = new IdentityRole(); role.Name = RolesConst.Instituicao; roleManager.Create(role); } result = UserManager.AddToRole(user.Id, RolesConst.Instituicao); if (result.Succeeded) { try { Instituicao i = new Instituicao(); i.UserID = user.Id; i.Cidade = _db.Cidades.FirstOrDefault(c => c.CidadeID == inst.Cidade.CidadeID); i.Morada = inst.Morada; i.Nome = inst.Nome; i.CodPostal = inst.CodPostal; i.Telefone = inst.Telefone; i.TipoInstituicao = inst.TipoInstituicao; _db.Instituicoes.Add(i); _db.SaveChanges(); foreach (var it in inst.Servicos) { if (it.IsSelected) { var instSer = new InstituicaoServico(); instSer.InstituicoesID = i.InstituicaoID; instSer.ServicosID = it.ServicosID; _db.InstituicoesServicos.Add(instSer); } } foreach (var it in inst.TiposEnsino) { if (it.IsSelected) { var instTEnsi = new InstituicaoTipoEnsino(); instTEnsi.InstituicoesID = i.InstituicaoID; instTEnsi.TipoEnsinoID = it.TipoEnsinoID; instTEnsi.Valor = it.Valor; _db.InstituicaoTipoEnsino.Add(instTEnsi); } } _db.SaveChanges(); await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false); return(RedirectToAction("Index")); } catch (Exception e) { //RollBack UserManager.RemoveFromRole(user.Id, RolesConst.Instituicao); result = UserManager.Delete(user); return(View(inst)); } } else { UserManager.Delete(user); //RollBack Role } } AddErrors(result); } // TODO: Add insert logic here return(View(inst)); } catch (Exception e) { return(View(inst)); } }