public Stream AdminPermisosRolCUD(List<RolMenu> nuevos, List<RolMenu> viejos, List<RolMenu> eliminados) { var db = new CoomuceEntities(); var transaction = db.Database.BeginTransaction(); try { // hay datos para eliminar? if (eliminados.Count > 0) { // marcar registros para eliminar eliminados.ForEach(e => db.Entry(e).State = EntityState.Deleted); // eliminar registros db.RolMenu.RemoveRange(eliminados); } // hay datos para actualizar? if (viejos.Count > 0) { viejos.ForEach(v => db.Entry(v).State = EntityState.Modified); } // hay datos para adicionar? if (nuevos.Count > 0) { // agregar rango de nuevos registros db.RolMenu.AddRange(nuevos); } // guardo datos y confirmo transacción db.SaveChanges(); transaction.Commit(); return gen.EscribirJson(new { message = Mensajes.Guardar, success = true }); } catch (Exception ex) { transaction.Rollback(); return gen.EscribirJson(new { message = string.Format(Mensajes.Error, ex.Message), success = false }); } }
public Stream AdminUsuarioCUD(List<Usuario> nuevos, List<Usuario> viejos, List<Usuario> eliminados) { var db = new CoomuceEntities(); var transaction = db.Database.BeginTransaction(); try { // hay datos para eliminar? if (eliminados.Count > 0) { // marcar registros para eliminar eliminados.ForEach(e => db.Entry(e).State = EntityState.Deleted); // eliminar registros db.Usuario.RemoveRange(eliminados); } // hay datos para actualizar? if (viejos.Count > 0) { // obtengo los id's de los items editados var listaId = viejos.Select(v => v.idUsuario).ToList(); // obtengo los items editados var itemEditar = db.Usuario.Where(r => listaId.Contains(r.idUsuario)).ToList(); // obtengo los datos editados itemEditar.ForEach(r => { var v = viejos.Where(i => i.idUsuario == r.idUsuario).FirstOrDefault(); r.idTipoIdentificacion = v.idTipoIdentificacion; r.identificacionUsuario = v.identificacionUsuario; r.primerApellidoUsuario = v.primerApellidoUsuario; r.segundoApellidoUsuario = v.segundoApellidoUsuario; r.primerNombreUsuario = v.primerNombreUsuario; r.segundoNombreUsuario = v.segundoNombreUsuario; r.emailUsuario = v.emailUsuario; r.celularUsuario = v.celularUsuario; r.idRol = v.idRol; r.estaHabilitadoUsuario = v.estaHabilitadoUsuario; }); } // hay datos para adicionar? if (nuevos.Count > 0) { foreach (var item in nuevos) { // obtener login de usuario string loginUsuario = string.Format("{0}{1}{2}", item.primerNombreUsuario.Substring(0, 1), item.primerApellidoUsuario.Replace(" ", ""), (string.IsNullOrEmpty(item.segundoApellidoUsuario) ? "" : item.segundoApellidoUsuario.Substring(0, 1))); // verificar si hay un usuario con el mismo login var existenLogin = db.Usuario .Where(r => r.loginUsuario.Substring(0, loginUsuario.Length).Equals(loginUsuario)) .Count(); // se encontro usuarios con el mismo login? if (existenLogin > 0) { existenLogin++; loginUsuario += existenLogin.ToString(); } item.loginUsuario = loginUsuario; // se genera la contraseña item.passwordUsuario = Membership.GeneratePassword(12, 0); RNGCryptoServiceProvider provider = new RNGCryptoServiceProvider(); byte[] data = new byte[5]; provider.GetBytes(data); item.passwordSaltUsuario = Convert.ToBase64String(data); item.passwordHashUsuario = FormsAuthentication.HashPasswordForStoringInConfigFile(item.passwordUsuario + item.passwordSaltUsuario, "SHA1"); } // agregar rango de nuevos registros db.Usuario.AddRange(nuevos); } // guardo datos y confirmo transacción db.SaveChanges(); transaction.Commit(); // hay nuevos datos?, si es asi enviamos los correos con las claves de acceso if (nuevos.Count > 0) { foreach (var item in nuevos) { bool credencialesEnviadas = false; credencialesEnviadas = gen.EnviarCorreo(item, 0); } } return gen.EscribirJson(new { message = Mensajes.Guardar, success = true }); } catch (Exception ex) { transaction.Rollback(); return gen.EscribirJson(new { message = string.Format(Mensajes.Error, ex.Message), success = false }); } }