protected void Page_Load(object sender, EventArgs e) { if (!User.Identity.IsAuthenticated) { FormsAuthentication.SignOut(); return; } ErrMessage_Span.InnerHtml = ""; ErrMessage_Span.Style["display"] = "none"; Message_Span.InnerHtml = ""; Message_Span.Style["display"] = "none"; Master.Page.Title = "Control de acceso - Asociación entre compañías y usuarios"; if (!Page.IsPostBack) { HtmlGenericControl MyHtmlH2; MyHtmlH2 = (HtmlGenericControl)(Master.FindControl("PageTitle_TableCell")); if (MyHtmlH2 != null) { MyHtmlH2.InnerHtml = "Control de acceso - Asociación entre compañías y usuarios"; } dbContabUsersEntities usersContext = new dbContabUsersEntities(); List <Compania> companias = usersContext.Companias.OrderBy(c => c.NombreCorto).ToList(); Companias_ListBox.DataSource = companias; Companias_ListBox.DataTextField = "NombreCorto"; Companias_ListBox.DataValueField = "Numero"; Companias_ListBox.DataBind(); Usuarios_ListBox.DataSource = Membership.GetAllUsers(); Usuarios_ListBox.DataBind(); } else { } }
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"; }