public ActionResult Index(int?UsuarioId, RolEmpresa rolEmpresa, string btnRoles, string btnClientes, string btnGuardar, string selectedClientes, string selectedRol, string selectedModalRoles) { ViewBag.Usuarios = usuarioRepository.GetAll().ToList(); ViewBag.IdUsuario = UsuarioId; try { if (UsuarioId == null) { throw new Exception(" Debe seleccionar un Usuario"); } var selectedUser = usuarioRepository.GetFiltered(s => s.Id == UsuarioId.Value).FirstOrDefault(); if (selectedUser == null) { throw new Exception(" No existe el usuario seleccionado"); } if (btnRoles != null) { if (selectedModalRoles == null || selectedModalRoles.Trim() == string.Empty) { throw new Exception(" Debe seleccionar al menos un Rol"); } var rolesSeleccionados = GetRolesFromArray(selectedModalRoles); foreach (var rol in rolesSeleccionados) { if (rolEmpresaRepository.GetFiltered(s => s.Rol_Id == rol.Id && s.Usuario_Id == selectedUser.Id).Any()) { continue; } var newRolEmpresa = new RolEmpresa(); newRolEmpresa.Usuario_Id = selectedUser.Id; newRolEmpresa.Rol_Id = rol.Id; rolEmpresaRepository.Add(newRolEmpresa, this.User.UserID); if (rol.Id == 26) { var rolesclientesAdministracion = usuarioRolClienteRepository.GetFiltered(s => s.UsuarioRol.Usuario_Id == 1028 && s.Estado == true, s => s.UsuarioRol).ToList(); foreach (var rolscli in rolesclientesAdministracion) { UsuarioRolCliente urc = new UsuarioRolCliente(); List <RolEmpresa> rcli = rolEmpresaRepository.GetFiltered(u => u.Usuario.Id == selectedUser.Id).ToList(); var rolempresa = rcli[0]; urc.UsuarioRol_Id = rolempresa.Id; urc.Cliente_Id = rolscli.Cliente_Id; urc.FechaCreacion = rolscli.FechaCreacion; urc.FechaActualizacion = rolscli.FechaActualizacion; urc.Estado = rolscli.Estado; urc.idUsuario = selectedUser.Id; usuarioRolClienteRepository.Add(urc, selectedUser.Id); } } } rolEmpresa.Roles = rolEmpresaRepository.GetFiltered(s => s.Usuario_Id == selectedUser.Id).Select(s => s.Rol).ToList(); rolEmpresa.Usuario = selectedUser; rolEmpresa.Clientes = new Business.Views.vClientes(); SetMessage(SUCCESS, "Se han guardado correctamente los Roles."); return(View(rolEmpresa)); } if (btnClientes != null) { if (selectedRol == null || selectedRol.Trim() == string.Empty) { throw new Exception(" Debe seleccionar al menos un Rol"); } if (selectedClientes == null || selectedClientes.Trim() == string.Empty) { throw new Exception(" Debe seleccionar al menos un Cliente"); } //Solamente debe ser UNO var rolesSeleccionados = GetRolesFromArray(selectedRol).FirstOrDefault(); var clientesSeleccionados = GetClientesFromArray(selectedClientes); var rolesEmpresa = rolEmpresaRepository.GetFiltered(s => s.Usuario_Id == selectedUser.Id && s.Rol_Id == rolesSeleccionados.Id).ToList(); foreach (var re in rolesEmpresa) { foreach (var cliente in clientesSeleccionados) { if (usuarioRolClienteRepository.GetFiltered(s => s.Cliente_Id == cliente.Id && s.UsuarioRol_Id == re.Id).Any()) { continue; } var usuarioRolCliente = new UsuarioRolCliente(); usuarioRolCliente.UsuarioRol_Id = re.Id; usuarioRolCliente.Cliente_Id = cliente.Id; usuarioRolClienteRepository.Add(usuarioRolCliente, this.User.UserID); } } rolEmpresa.Clientes = new Business.Views.vClientes(); rolEmpresa.Roles = rolEmpresaRepository.GetFiltered(s => s.Usuario_Id == selectedUser.Id).Select(s => s.Rol).ToList(); rolEmpresa.Usuario = selectedUser; //TO DO var userRolClient = usuarioRolClienteRepository.GetFiltered(s => s.UsuarioRol.Rol_Id == rolesSeleccionados.Id && s.UsuarioRol.Usuario_Id == selectedUser.Id).ToList(); foreach (var item in userRolClient) { var listRow = (new CRM.Business.Views.vClientes()).GetViewModel().AsEnumerable() .Where(r => r.Field <int>("ID") == item.Cliente_Id).ToList(); foreach (DataRow dr in listRow) { rolEmpresa.Clientes.Datos.Rows.Add(dr.ItemArray); } } //rolEmpresa.Clientes = usuarioRolClienteRepository.GetFiltered(s => s.UsuarioRol.Rol_Id == rolesSeleccionados.Id && s.UsuarioRol.Usuario_Id == selectedUser.Id).Select(s => s.Cliente).ToList(); ViewBag.IdRol = rolesSeleccionados.Id; //Lo recojo cuando se carga la grilla SetMessage(SUCCESS, " Se han guardado correctamente los Clientes."); return(View(rolEmpresa)); } } catch (Exception ex) { SetMessage(ERROR, ex.Message); List <Rol> rolesUsuario = rolEmpresaRepository.GetFiltered(s => s.Usuario_Id == UsuarioId.Value).Select(s => s.Rol).ToList(); if (rolesUsuario == null) { rolEmpresa.Roles = new List <Rol>(); } else { rolEmpresa.Roles = rolesUsuario; } if (selectedRol == null || selectedRol.Trim() == string.Empty) { rolEmpresa.Clientes = new Business.Views.vClientes(); } else { var rolesSeleccionados = GetRolesFromArray(selectedRol).FirstOrDefault(); var userRolClient = usuarioRolClienteRepository.GetFiltered(s => s.UsuarioRol.Rol_Id == rolesSeleccionados.Id && s.UsuarioRol.Usuario_Id == UsuarioId.Value && s.Estado == true).ToList(); if (userRolClient == null || userRolClient.Count == 0) { rolEmpresa.Clientes = new Business.Views.vClientes(); } if (rolEmpresa.Clientes == null) { rolEmpresa.Clientes = new Business.Views.vClientes(); } foreach (var item in userRolClient) { var listRow = (new CRM.Business.Views.vClientes()).GetViewModel().AsEnumerable() .Where(r => r.Field <int>("ID") == item.Cliente_Id).ToList(); foreach (DataRow dr in listRow) { rolEmpresa.Clientes.Datos.Rows.Add(dr.ItemArray); } } //TO DO //rolEmpresa.Clientes = usuarioRolClienteRepository.GetFiltered(s => s.UsuarioRol.Rol_Id == rolesSeleccionados.Id && s.UsuarioRol.Usuario_Id == UsuarioId.Value).Select(s => s.Cliente).ToList(); ViewBag.IdRol = rolesSeleccionados.Id; //Lo recojo cuando se carga la grilla } } return(View(rolEmpresa)); }
public ActionResult DeleteCliente(int Id, string UsuarioId, string RolId) { int ClienteId = Id; int userId = 0; int rolId = 0; ViewBag.Usuarios = usuarioRepository.GetAll().ToList(); try { if (!int.TryParse(UsuarioId, out userId)) { throw new Exception(" No se pudo eliminar el Cliente"); } if (!int.TryParse(RolId, out rolId)) { throw new Exception(" No se pudo eliminar el Cliente"); } RolEmpresa usuarioRol = rolEmpresaRepository.GetFiltered(x => x.Rol_Id == rolId && x.Usuario_Id == userId).FirstOrDefault(); if (usuarioRol == null) { throw new Exception(" No se encontrĂ³ al rol en el sistema"); } List <UsuarioRolCliente> usuarioRolClientes = usuarioRolClienteRepository.GetFiltered(s => s.UsuarioRol.Id == usuarioRol.Id && s.UsuarioRol.Usuario_Id == userId && s.Estado == true).ToList(); if (usuarioRolClientes == null) { throw new Exception(" No se encontraron clientes relacionados al rol seleccionado"); } UsuarioRolCliente usuarioRolClienteSeleccionado = usuarioRolClientes.Where(x => x.Cliente_Id == ClienteId).FirstOrDefault(); usuarioRolClienteRepository.RemoveFromDataBase(usuarioRolClienteSeleccionado, userId); RolEmpresa rolEmpresa = new RolEmpresa(); rolEmpresa.Roles = rolEmpresaRepository.GetFiltered(x => x.Usuario_Id == userId).Select(x => x.Rol).ToList(); RolEmpresa rolUsuario = rolEmpresaRepository.GetFiltered(x => x.Rol_Id == rolId && x.Usuario_Id == userId).FirstOrDefault(); if (rolUsuario == null) { throw new Exception(" No se encontrĂ³ al rol en el sistema"); } //TODO //rolEmpresa.Clientes = usuarioRolClienteRepository.GetFiltered(s => s.UsuarioRol.Id == rolUsuario.Id && s.UsuarioRol.Usuario_Id == userId).Select(s => s.Cliente).ToList(); rolEmpresa.Clientes = new Business.Views.vClientes(); var userRolClient = usuarioRolClienteRepository.GetFiltered(s => s.UsuarioRol.Id == rolUsuario.Id && s.UsuarioRol.Usuario_Id == userId).ToList(); foreach (var item in userRolClient) { var listRow = (new CRM.Business.Views.vClientes()).GetViewModel().AsEnumerable() .Where(r => r.Field <int>("ID") == item.Cliente_Id).ToList(); foreach (DataRow dr in listRow) { rolEmpresa.Clientes.Datos.Rows.Add(dr.ItemArray); } } ViewBag.IdRol = rolId; //Lo recojo cuando se carga la grilla SetMessage(SUCCESS, " El Cliente se eliminĂ³ correctamente"); return(View("Index", rolEmpresa)); } catch (Exception ex) { SetMessage(ERROR, ex.Message); RolEmpresa rolEmpresa = new RolEmpresa(); rolEmpresa.Roles = rolEmpresaRepository.GetFiltered(x => x.Usuario_Id == userId).Select(x => x.Rol).ToList(); RolEmpresa rolUsuario = rolEmpresaRepository.GetFiltered(x => x.Rol_Id == rolId && x.Usuario_Id == userId).FirstOrDefault(); if (rolUsuario == null) { rolEmpresa.Clientes = new vClientes(); } else { // rolEmpresa.Clientes = usuarioRolClienteRepository.GetFiltered(s => s.UsuarioRol.Id == rolUsuario.Id && s.UsuarioRol.Usuario_Id == userId).Select(s => s.Cliente).ToList(); //TO DO rolEmpresa.Clientes = new Business.Views.vClientes(); var userRolClient = usuarioRolClienteRepository.GetFiltered(s => s.UsuarioRol.Id == rolUsuario.Id && s.UsuarioRol.Usuario_Id == userId && s.Estado == true).ToList(); foreach (var item in userRolClient) { var listRow = (new CRM.Business.Views.vClientes()).GetViewModel().AsEnumerable() .Where(r => r.Field <int>("ID") == item.Cliente_Id).ToList(); foreach (DataRow dr in listRow) { rolEmpresa.Clientes.Datos.Rows.Add(dr.ItemArray); } } } ViewBag.IdRol = rolId; //Lo recojo cuando se carga la grilla return(View("Index", rolEmpresa)); } }