コード例 #1
0
    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
        {
        }
    }
コード例 #2
0
        public ConstruirListaCompaniasAsignadas()
        {
            // para crear la lista de compañías, siempre en base a las que se han asignado al usuario ...
            var currentUser = Membership.GetUser();
            // el usuario en la tabla de compañías y usuarios es de tipo uniqueIdentifier (Guid)
            Guid userID = new Guid(currentUser.ProviderUserKey.ToString());

            dbContabUsersEntities userContext = new dbContabUsersEntities();

            // nótese como determinamos las compañías que se han asignado al usuario. De no haber ninguna, asumimos todas
            List <CompaniasYUsuario> companiasAsignadas = userContext.CompaniasYUsuarios.Where(c => c.Usuario == userID).ToList <CompaniasYUsuario>();

            if (companiasAsignadas.Count() == 0)
            {
                // si el usuario no tiene compañías asignadas, asumimos todas
                _companias = userContext.Companias.OrderBy(c => c.Nombre).ToList();
            }
            else
            {
                List <Compania> companias = userContext.Companias.OrderBy(c => c.Nombre).ToList();
                // seleccionamos solo las compañías que existen en la lista anterior (companiasAsignadas)
                _companias = companias.Where(c => companiasAsignadas.Any(x => x.Compania == c.Numero)).ToList <Compania>();
            }
        }
コード例 #3
0
    protected void LeerUsuarios_LinkButton_Click(object sender, EventArgs e)
    {
        // nos aseguramos que se haya seleccionado solo una compañía

        Int16 nItemsSelectedCount = 0;

        foreach (ListItem MyItem in Companias_ListBox.Items)
        {
            if (MyItem.Selected)
            {
                nItemsSelectedCount++;
            }
        }

        switch (nItemsSelectedCount)
        {
        case 0:
            ErrMessage_Span.InnerHtml        = "Ud. debe seleccionar una compañía de la lista de compañías.";
            ErrMessage_Span.Style["display"] = "block";

            return;

        case 1:
            break;

        default:
            ErrMessage_Span.InnerHtml        = "Ud. debe seleccionar SOLO una compañía de la lista de compañías.";
            ErrMessage_Span.Style["display"] = "block";

            return;
        }

        // obtenemos los usuarios asociados a la compañía y los seleccionamos en el listbox de usuarios

        int companiaSeleccionadaID = Convert.ToInt32(Companias_ListBox.SelectedValue);

        dbContabUsersEntities    usersContext = new dbContabUsersEntities();
        List <CompaniasYUsuario> usuarios     = usersContext.CompaniasYUsuarios.Where(c => c.Compania == companiaSeleccionadaID).ToList();

        // primero deseleccionamos todos los items en el listbox
        foreach (ListItem MyItem in Usuarios_ListBox.Items)
        {
            MyItem.Selected = false;
        }

        // si no hay usuarios para el rol, salimos ahora
        if (usuarios.Count() == 0)
        {
            return;
        }

        // para cada usuario leído para la compañía, lo buscamos y seleccionamos
        foreach (CompaniasYUsuario usuario in usuarios)
        {
            aspnet_Users user = usersContext.aspnet_Users.Where(u => u.UserId == usuario.Usuario).FirstOrDefault();

            foreach (ListItem item in Usuarios_ListBox.Items)
            {
                if (item.Text == user.UserName)
                {
                    item.Selected = true;
                    break;
                }
            }
        }
    }
コード例 #4
0
    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";
    }
コード例 #5
0
    protected void LeerCompanias_LinkButton_Click(object sender, EventArgs e)
    {
        // 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;
        }


        // leemos el usuario seleccionado
        dbContabUsersEntities usersContext = new dbContabUsersEntities();
        aspnet_Users          usuario      = usersContext.aspnet_Users.Where(u => u.UserName == Usuarios_ListBox.SelectedValue).FirstOrDefault();

        // ahora leemos las compañías asociadas al usuario ...
        List <CompaniasYUsuario> companias = usersContext.CompaniasYUsuarios.Where(c => c.Usuario == usuario.UserId).ToList();

        // primero deseleccionamos todos los items en el listbox
        foreach (ListItem MyItem in Companias_ListBox.Items)
        {
            MyItem.Selected = false;
        }

        // si no hay usuarios para el rol, salimos ahora
        if (companias.Count() == 0)
        {
            return;
        }

        // finalmente, seleccionamos cada compañía en la lista
        foreach (CompaniasYUsuario compania in companias)
        {
            foreach (ListItem item in Companias_ListBox.Items)
            {
                if (item.Value == compania.Compania.ToString())
                {
                    item.Selected = true;
                }
            }
        }
    }
コード例 #6
0
        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;
                }
            }
        }
コード例 #7
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!User.Identity.IsAuthenticated)
            {
                FormsAuthentication.SignOut();
                return;
            }

            Master.Page.Title = "ContabSysNet - Generales - Seleccionar una compañía";

            if (!Page.IsPostBack)
            {
                // Gets a reference to a Label control that is not in a
                // ContentPlaceHolder control

                HtmlContainerControl MyHtmlSpan;

                MyHtmlSpan = (HtmlContainerControl)Master.FindControl("AppName_Span");
                if (!(MyHtmlSpan == null))
                {
                    MyHtmlSpan.InnerHtml = "Generales";
                }

                HtmlGenericControl MyHtmlH2;

                MyHtmlH2 = (HtmlGenericControl)Master.FindControl("PageTitle_TableCell");
                if (!(MyHtmlH2 == null))
                {
                    // sub título para la página
                    MyHtmlH2.InnerHtml = "Seleccionar una compañía Contab";
                }

                var currentUser = Membership.GetUser();
                // el usuario en la tabla de compañías y usuarios es de tipo uniqueIdentifier (Guid)
                Guid userID = new Guid(currentUser.ProviderUserKey.ToString());

                dbContabUsersEntities userContext = new dbContabUsersEntities();

                // nótese como determinamos las compañías que se han asignado al usuario. De no haber ninguna, asumimos todas
                List <CompaniasYUsuario> companiasAsignadas = userContext.CompaniasYUsuarios.Where(c => c.Usuario == userID).
                                                              ToList <CompaniasYUsuario>();

                if (companiasAsignadas.Count() == 0)
                {
                    // si el usuario no tiene compañías asignadas, asumimos todas
                    List <Compania> companias = userContext.Companias.OrderBy(c => c.Nombre).ToList();
                    this.GridView1.DataSource = companias;
                    this.GridView1.DataBind();
                }
                else
                {
                    List <Compania> companias = userContext.Companias.OrderBy(c => c.Nombre).ToList();
                    // seleccionamos solo las compañías que existen en la lista anterior (companiasAsignadas)
                    var companias2 = companias.Where(c => companiasAsignadas.Any(x => x.Compania == c.Numero)).ToList <Compania>();
                    this.GridView1.DataSource = companias2;

                    this.GridView1.DataBind();
                }

                // ahora leemos la compañía seleccionada por el usuario para mostrarla en la página
                string usuario = User.Identity.Name;

                dbContabUsersEntities context = new dbContabUsersEntities();

                var companiaSeleccionada = context.tCiaSeleccionadas.Where(s => s.UsuarioLS == usuario).FirstOrDefault();

                string nombreCiaSeleccionada = "";

                if (companiaSeleccionada == null)
                {
                    nombreCiaSeleccionada = "No hay una compañía Contab seleccionada";
                }
                else
                {
                    nombreCiaSeleccionada = companiaSeleccionada.Nombre;
                }

                this.nombreCompaniaSeleccionada_literal.Text = nombreCiaSeleccionada;
            }
        }