public JsonResult Create(Funcionario funcionario, String UserName, String Password, String email) { try { ModelState.Remove("UserId"); if (ModelState.IsValid) { // Tentativa de registrar o usuário if (UserName != null) { /* Criamos a Roles para a função do usuario( caso ela já não exista) */ String strRole = Enum.GetValues(typeof(funcao)).GetValue(funcionario.funcao - 1).ToString(); if (!Roles.RoleExists(strRole)) { Roles.CreateRole(strRole); } MembershipUser User = Membership.GetUser(UserName); /* Se o usuario não existe, eu crio ele e vinculo a role. */ if (User == null) { MembershipCreateStatus createStatus; MembershipUser membershipUserCreated = Membership.CreateUser(UserName, Password, email, null, null, true, null, out createStatus); if (createStatus == MembershipCreateStatus.Success) { if (!Roles.IsUserInRole(UserName, strRole)) { Roles.AddUserToRole(UserName, strRole); } /*FormsAuthentication.SetAuthCookie(UserName, false );*/ funcionario.UserId = Guid.Parse(membershipUserCreated.ProviderUserKey.ToString()); } else { return Json(new { Success = 0, ex = new Exception(AccountController.ErrorCodeToString(createStatus)).Message.ToString() }); } } else { MembershipUser currentUser = Membership.GetUser(UserName); Array funcoes = Enum.GetValues(typeof(funcao)); for (int i = 0; i < funcoes.Length; i++) { if (Roles.IsUserInRole(UserName, funcoes.GetValue(i).ToString())) { Roles.RemoveUserFromRole(UserName, funcoes.GetValue(i).ToString()); } } if (!Roles.IsUserInRole(UserName, strRole)) { Roles.AddUserToRole(UserName, strRole); } } } using (var db = new ClinicaEntities()) { // Se o código do Funcionario é maior que zero, entendemos que existe registro para tal. // Então nós "atualizaremos" ele. if (funcionario.FuncionarioId > 0) { #region Tratamento dos Telefones var selFuncionarioTelefone = db.FuncionarioTelefone.Where(p => p.FuncionarioId == funcionario.FuncionarioId); foreach (FuncionarioTelefone pt in selFuncionarioTelefone) { db.FuncionarioTelefone.Remove(pt); } foreach (FuncionarioTelefone pt in funcionario.FuncionarioTelefone) { db.FuncionarioTelefone.Add(pt); } #endregion /* O funcionario somente possuirá funcionalidades quando for "Médico". */ var selFuncionarioEspecialidade = db.FuncionarioEspecialidade.Where(p => p.FuncionarioId == funcionario.FuncionarioId); foreach (FuncionarioEspecialidade pt in selFuncionarioEspecialidade) { db.FuncionarioEspecialidade.Remove(pt); } if (funcionario.funcao == 3) { #region Tratamento das Especialidades foreach (FuncionarioEspecialidade pt in funcionario.FuncionarioEspecialidade) { db.FuncionarioEspecialidade.Add(pt); } #endregion } else { funcionario.FuncionarioEspecialidade = null; } db.Entry(funcionario).State = EntityState.Modified; } //Perform Save else { db.Funcionario.Add(funcionario); } db.SaveChanges(); } return Json(new { Success = 1, SalesID = funcionario.FuncionarioId, ex = "" }); } else { ValidateModel(funcionario); } } catch (Exception ex) { if (ex.InnerException != null) { return Json(new { Success = 0, ex = ex.InnerException.ToString() }); } else { return Json(new { Success = 0, ex = ex.Message.ToString() }); } } return Json(new { Success = 0, ex = new Exception("Unable to save").Message.ToString() }); }
public ActionResult Edit(int id, Funcionario funcionario) { ViewBag.Title = tituloCadastro; try { ClinicaEntities db = new ClinicaEntities(); try { db.Entry(funcionario).State = System.Data.EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } finally { db.Dispose(); } } catch (Exception e) { ViewBag.Error = e; return View("Error"); } }
private static void CarregarAssociacoes(ClinicaEntities db, Funcionario func) { db.Entry(func).Collection("FuncionarioTelefone").Load(); db.Entry(func).Collection("FuncionarioEspecialidade").Load(); db.Entry(func).Reference("aspnet_Users").Load(); db.Entry(func.aspnet_Users).Reference("aspnet_Membership").Load(); }
public ActionResult Delete(int id, Funcionario funcionario) { ViewBag.Title = tituloCadastro; try { using (var db = new ClinicaEntities()) { Funcionario funcionarioDeleted = db.Funcionario.Find(id); db.Funcionario.Remove(funcionarioDeleted); db.SaveChanges(); if (funcionarioDeleted.UserId != null) { MembershipUser msuAux = Membership.GetUser(((object)funcionarioDeleted.UserId)); if (msuAux != null) { Membership.DeleteUser(msuAux.UserName); } } } return RedirectToAction("Index"); } catch (Exception e) { ViewBag.Error = e; return View("Error"); } }