public ActionResult Edit(InstituicaoViewModelEdit i) { try { i.Cidades = _db.Cidades.ToList(); if (ModelState.IsValid) { var UserID = User.Identity.GetUserId(); var InstituicaoID = Convert.ToInt16(_db.Instituicoes.Where(w => w.UserID == UserID).Select(se => se.InstituicaoID).FirstOrDefault()); i.Cidade = _db.Cidades.FirstOrDefault(c => c.CidadeID == i.Cidade.CidadeID); var inst = _db.Instituicoes.Find(InstituicaoID); inst.Morada = i.Morada; inst.Nome = i.Nome; inst.Telefone = i.Telefone; inst.Cidade = i.Cidade; inst.CodPostal = i.CodPostal; inst.TipoInstituicao = i.TipoInstituicao; _db.SaveChanges(); var lstServ = _db.InstituicoesServicos.Where(w => w.InstituicoesID == InstituicaoID); _db.InstituicoesServicos.RemoveRange(lstServ); foreach (var it in i.Servicos) { if (it.IsSelected) { var instSer = new InstituicaoServico(); instSer.InstituicoesID = InstituicaoID; instSer.ServicosID = it.ServicosID; _db.InstituicoesServicos.Add(instSer); } } var lstTE = _db.InstituicaoTipoEnsino.Where(w => w.InstituicoesID == InstituicaoID); _db.InstituicaoTipoEnsino.RemoveRange(lstTE); foreach (var it in i.TiposEnsino) { if (it.IsSelected) { var instTEnsi = new InstituicaoTipoEnsino(); instTEnsi.InstituicoesID = InstituicaoID; instTEnsi.TipoEnsinoID = it.TipoEnsinoID; instTEnsi.Valor = it.Valor; _db.InstituicaoTipoEnsino.Add(instTEnsi); } } _db.SaveChanges(); return(RedirectToAction("Index")); } return(View()); } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx) { foreach (var validationErrors in dbEx.EntityValidationErrors) { foreach (var validationError in validationErrors.ValidationErrors) { ModelState.AddModelError("", "\n" + string.Format("{0}:{1}", validationErrors.Entry.Entity.ToString(), validationError.ErrorMessage)); } } return(View(i)); } catch (Exception e) { 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)); } }