protected void AsociarCompaniasAUsurioSeleccionado_Button_Click(object sender, EventArgs e) { // asociamos uno o varios roles seleccionados a un usuario seleccionado // debe haber un usuario (solo uno) seleccionado // nos aseguramos que se haya seleccionado solo un usuario Int16 nItemsSelectedCount = 0; foreach (ListItem MyItem in Usuarios_ListBox.Items) { if (MyItem.Selected) { nItemsSelectedCount++; } } switch (nItemsSelectedCount) { case 0: ErrMessage_Span.InnerHtml = "Ud. debe seleccionar un usuario de la lista de usuarios."; ErrMessage_Span.Style["display"] = "block"; return; case 1: break; default: ErrMessage_Span.InnerHtml = "Ud. debe seleccionar SOLO un usuario de la lista de usuarios."; ErrMessage_Span.Style["display"] = "block"; return; } // nótese que puede no haber compañías seleccionadas, pues se puede querer quitar las que estaban seleccionadas a un usuario nItemsSelectedCount = 0; foreach (ListItem MyItem in Companias_ListBox.Items) { if (MyItem.Selected) { nItemsSelectedCount++; } } //if (nItemsSelectedCount == 0) //{ // ErrMessage_Span.InnerHtml = "Ud. debe seleccionar al menos una compañía de la lista de compañías."; // ErrMessage_Span.Style["display"] = "block"; // return; //} // primero eliminamos las compañías que ahora corresponan al usuario dbContabUsersEntities usersContext = new dbContabUsersEntities(); var userID = usersContext.aspnet_Users.Where(u => u.UserName == Usuarios_ListBox.SelectedValue).FirstOrDefault().UserId; usersContext.ExecuteStoreCommand("Delete From CompaniasYUsuarios Where Usuario = @usuario", new SqlParameter { ParameterName = "usuario", Value = userID }); CompaniasYUsuario companiaYUsuario; foreach (ListItem compania in Companias_ListBox.Items) { if (!compania.Selected) { continue; } companiaYUsuario = new CompaniasYUsuario(); companiaYUsuario.Usuario = userID; companiaYUsuario.Compania = Convert.ToInt32(compania.Value); usersContext.CompaniasYUsuarios.AddObject(companiaYUsuario); } usersContext.SaveChanges(); Message_Span.InnerHtml = "Ok, las compañías seleccionadas <b>(" + Companias_ListBox.GetSelectedIndices().Count().ToString() + ")</b> han sido asociadas al usuario " + Usuarios_ListBox.SelectedValue + ".<br />" + "El usuario " + Usuarios_ListBox.SelectedValue + " solo tendrá acceso a estas compañías"; Message_Span.Style["display"] = "block"; }
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { // intentamos seleccionar la compañia que el usuario selecciona en la lista ... if (!User.Identity.IsAuthenticated) { FormsAuthentication.SignOut(); return; } string usuario = User.Identity.Name; int? pk = Convert.ToInt32(GridView1.SelectedDataKey.Value.ToString()); if (pk != null) { dbContabUsersEntities context = new dbContabUsersEntities(); var query = context.tCiaSeleccionadas.Where(s => s.UsuarioLS == usuario); foreach (tCiaSeleccionada s in query) { context.tCiaSeleccionadas.DeleteObject(s); } Compania compania = context.Companias.Where(c => c.Numero == pk.Value).FirstOrDefault(); if (compania == null) { string errorMessage = "Error inesperado: no hemos podido encontrar la compañía en la tabla Compañías."; CustomValidator1.IsValid = false; CustomValidator1.ErrorMessage = errorMessage; return; } tCiaSeleccionada ciaSeleccionada = new tCiaSeleccionada() { CiaSeleccionada = compania.Numero, Nombre = compania.Nombre, NombreCorto = compania.NombreCorto, UsuarioLS = usuario, Usuario = 0 }; context.tCiaSeleccionadas.AddObject(ciaSeleccionada); try { context.SaveChanges(); this.nombreCompaniaSeleccionada_literal.Text = compania.Nombre; } catch (Exception ex) { string errorMessage = ex.Message; if (ex.InnerException != null) { errorMessage += "<br /><br />" + ex.InnerException.Message; } CustomValidator1.IsValid = false; CustomValidator1.ErrorMessage = errorMessage; return; } finally { context = null; } } }