private void BindControles()
        {
            int idUsuario = Utilerias.StrToInt(_IDUsuario.Value);

            UsuarioFideicomiso obj = uow.UsuarioFideicomisoBusinessLogic.GetByID(idUsuario);

            ddlUsuario.SelectedValue = obj.UsuarioID.ToString();

            DependenciaFideicomisoEjercicio objDependencia = uow.DependenciaFideicomisoEjercicioBusinessLogic.GetByID(obj.DependenciaFideicomisoEjercicioID);

            ddlEjercicio.SelectedValue = objDependencia.EjercicioID.ToString();
            BindDropDownFideicomisos();

            ddlFideicomiso.SelectedValue = obj.DependenciaFideicomisoEjercicioID.ToString();
        }
        private bool ValidarInsertado(int idFidiecomiso, int idUsuario, UsuarioFideicomiso objUsuario = null)
        {
            UsuarioFideicomiso obj = null;

            if (objUsuario == null)
            {
                obj = uow.UsuarioFideicomisoBusinessLogic.Get(e => e.DependenciaFideicomisoEjercicioID == idFidiecomiso && e.UsuarioID == idUsuario).FirstOrDefault();
            }
            else
            if (idFidiecomiso != objUsuario.DependenciaFideicomisoEjercicioID || idUsuario != objUsuario.UsuarioID)
            {
                obj = uow.UsuarioFideicomisoBusinessLogic.Get(e => e.DependenciaFideicomisoEjercicioID == idFidiecomiso && e.UsuarioID == idUsuario).FirstOrDefault();
            }

            return(obj == null);
        }
        protected void btnDel_Click(object sender, EventArgs e)
        {
            string M = "Se ha eliminado correctamente";

            int idUsuario = Utilerias.StrToInt(_IDUsuario.Value);

            UsuarioFideicomiso obj = uow.UsuarioFideicomisoBusinessLogic.GetByID(idUsuario);

            uow.UsuarioFideicomisoBusinessLogic.Delete(obj);
            uow.SaveChanges();

            if (uow.Errors.Count > 0) //Si hubo errores
            {
                M = string.Empty;
                foreach (string cad in uow.Errors)
                {
                    M += cad;
                }

                lblMsgError.Text = M;
                divMsgError.Style.Add("display", "block");
                divMsgSuccess.Style.Add("display", "none");
                divCaptura.Style.Add("display", "none");
                divEncabezado.Style.Add("display", "block");
                return;
            }


            BindGrid();

            lblMsgSuccess.Text = M;
            divMsgError.Style.Add("display", "none");
            divMsgSuccess.Style.Add("display", "block");
            divCaptura.Style.Add("display", "none");
            divEncabezado.Style.Add("display", "block");
        }
        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            UsuarioFideicomiso obj;
            int    idUsuario = Utilerias.StrToInt(_IDUsuario.Value);
            string M         = string.Empty;

            if (_Accion.Value.Equals("N"))
            {
                obj = new UsuarioFideicomiso();
            }
            else
            {
                obj = uow.UsuarioFideicomisoBusinessLogic.GetByID(idUsuario);
            }

            if (!ValidarInsertado(Utilerias.StrToInt(ddlFideicomiso.SelectedValue), Utilerias.StrToInt(ddlUsuario.SelectedValue), !_Accion.Value.Equals("N")?obj:null))
            {
                //MANEJAR EL ERROR
                divMsgError.Style.Add("display", "block");
                divMsgSuccess.Style.Add("display", "none");
                divCaptura.Style.Add("display", "block");
                divEncabezado.Style.Add("display", "none");
                lblMsgError.Text = "Ya existe ese registro. Intente con otros valores.";
                return;
            }

            obj.DependenciaFideicomisoEjercicioID = Utilerias.StrToInt(ddlFideicomiso.SelectedValue);
            obj.UsuarioID = Utilerias.StrToInt(ddlUsuario.SelectedValue);


            if (_Accion.Value.Equals("N"))
            {
                obj.FechaCaptura   = DateTime.Now;
                obj.UsuarioCaptura = Session["Login"].ToString();
                uow.UsuarioFideicomisoBusinessLogic.Insert(obj);
            }
            else
            {
                obj.FechaModificacion = DateTime.Now;
                obj.UsuarioModifica   = Session["Login"].ToString();
                uow.UsuarioFideicomisoBusinessLogic.Update(obj);
            }

            uow.SaveChanges();

            if (uow.Errors.Count > 0)
            {
                foreach (string err in uow.Errors)
                {
                    M += err;
                }

                //MANEJAR EL ERROR
                divMsgError.Style.Add("display", "block");
                divMsgSuccess.Style.Add("display", "none");
                divCaptura.Style.Add("display", "block");
                divEncabezado.Style.Add("display", "none");
                lblMsgError.Text = M;
                return;
            }

            BindGrid();



            divMsgError.Style.Add("display", "none");
            divMsgSuccess.Style.Add("display", "block");
            lblMsgSuccess.Text = "Se ha guardado correctamente";

            divEncabezado.Style.Add("display", "block");
            divCaptura.Style.Add("display", "none");
        }
        private void ImportarFideicomisosAsignadosEjercicioPasado()
        {
            int    ejercicioActual = DateTime.Now.Year;
            string M = string.Empty;

            Ejercicio objActual = uow.EjercicioBusinessLogic.Get(e => e.Anio == ejercicioActual).FirstOrDefault();

            if (objActual == null)
            {
                lblMsgError.Text = "No se puede importar la información del ejercicio pasado. No existe un registro para el Ejercicio actual en el CATÁLOGO de EJERCICIOS. Captúrelo y vuelva a intentarlo.";
                divMsgError.Style.Add("display", "block");
                divMsgSuccess.Style.Add("display", "none");
                divCaptura.Style.Add("display", "none");
                divEncabezado.Style.Add("display", "block");
                return;
            }

            if (uow.DependenciaFideicomisoEjercicioBusinessLogic.Get(e => e.EjercicioID == objActual.ID).Count() == 0)
            {
                lblMsgError.Text = "No se puede importar la información del ejercicio pasado. No existen FIDEICOMISOS relacionados al ejercicio actual. Captúrelos y vuelva a intentarlo.";
                divMsgError.Style.Add("display", "block");
                divMsgSuccess.Style.Add("display", "none");
                divCaptura.Style.Add("display", "none");
                divEncabezado.Style.Add("display", "block");
                return;
            }

            var listActual = (from uf in uow.UsuarioFideicomisoBusinessLogic.Get()
                              join df in uow.DependenciaFideicomisoEjercicioBusinessLogic.Get(e => e.EjercicioID == objActual.ID)
                              on uf.DependenciaFideicomisoEjercicioID equals df.ID
                              join f in uow.FideicomisoBusinessLogic.Get()
                              on df.FideicomisoID equals f.ID
                              select new { uf.UsuarioID, FideicomisoID = f.ID });

            ejercicioActual = ejercicioActual - 1;
            Ejercicio objAnterior = uow.EjercicioBusinessLogic.Get(e => e.Anio == ejercicioActual).FirstOrDefault();

            var listAnterior = (from uf in uow.UsuarioFideicomisoBusinessLogic.Get()
                                join df in uow.DependenciaFideicomisoEjercicioBusinessLogic.Get(e => e.EjercicioID == objAnterior.ID)
                                on uf.DependenciaFideicomisoEjercicioID equals df.ID
                                join f in uow.FideicomisoBusinessLogic.Get()
                                on df.FideicomisoID equals f.ID
                                select new { uf.UsuarioID, FideicomisoID = f.ID });


            var list = (from anterior in listAnterior
                        join actual in listActual
                        on anterior.FideicomisoID equals actual.FideicomisoID into temp
                        from diferencia in temp.DefaultIfEmpty()
                        select new { anterior.FideicomisoID, anterior.UsuarioID, UsuarioAnterior = (diferencia == null) ? 0 : diferencia.FideicomisoID });


            if (list.Count() == 0)
            {
                lblMsgError.Text = "La información de Fideicomisos asignados a analistas del ejercicio anterior ya existe para el ejercicio actual. No es necesario importar.";
                divMsgError.Style.Add("display", "block");
                divMsgSuccess.Style.Add("display", "none");
                divCaptura.Style.Add("display", "none");
                divEncabezado.Style.Add("display", "block");
                return;
            }

            //SE RECORRE EL RESULTADO PARA CREAR LOS FIDEICOMISOS ASIGNADOS ANTERIORES EN EL EJERCICIO ACTUAL
            foreach (var f in list)
            {
                if (f.UsuarioAnterior == 0)
                {
                    UsuarioFideicomiso objUsuarioFideicomiso = new UsuarioFideicomiso();
                    DependenciaFideicomisoEjercicio objDF    = uow.DependenciaFideicomisoEjercicioBusinessLogic.Get(e => e.FideicomisoID == f.FideicomisoID && e.EjercicioID == objActual.ID).FirstOrDefault();

                    objUsuarioFideicomiso.UsuarioID = f.UsuarioID;
                    objUsuarioFideicomiso.DependenciaFideicomisoEjercicioID = objDF.ID;

                    uow.UsuarioFideicomisoBusinessLogic.Insert(objUsuarioFideicomiso);
                    uow.SaveChanges();

                    //SI HUBO ERRORES
                    if (uow.Errors.Count > 0)
                    {
                        foreach (string err in uow.Errors)
                        {
                            M += err;
                        }
                    }

                    if (!M.Equals(string.Empty))
                    {
                        lblMsgError.Text = M;
                        divMsgError.Style.Add("display", "block");
                        divMsgSuccess.Style.Add("display", "none");
                        divCaptura.Style.Add("display", "none");
                        divEncabezado.Style.Add("display", "block");
                        return;
                    }
                }
            }
        }