/// <summary>
        /// Método que permite eliminar 
        /// un registro en la tabla Actividad
        /// </summary>
        /// <param name="po_Actividad">Actividad a eliminar</param>
        /// <returns>Int valor del resultado de la ejecución de la sentencia</returns>
        public static int deleteActividad(cls_asignacionActividad po_Actividad)
        {
            int vi_resultado;

            try
            {
                String vs_comando = "PA_cont_asignacionActividadDelete";
                cls_parameter[] vu_parametros =
                {
                    new cls_parameter("@paramPK_actividad", po_Actividad.pPK_Actividad),
                    new cls_parameter("@paramPK_paquete", po_Actividad.pPK_Paquete),
                    new cls_parameter("@paramPK_componente", po_Actividad.pPK_Componente),
                    new cls_parameter("@paramPK_entregable", po_Actividad.pPK_Entregable),
                    new cls_parameter("@paramPK_proyecto", po_Actividad.pPK_Proyecto),
                    new cls_parameter("@paramPK_usuario", po_Actividad.pPK_Usuario)
                };

                cls_sqlDatabase.beginTransaction();

                vi_resultado = cls_sqlDatabase.executeNonQuery(vs_comando, true, vu_parametros);

                cls_interface.insertarTransacccionBitacora(cls_constantes.ELIMINAR, cls_constantes.ACTIVIDAD_ASIGNACION, "Act: " + po_Actividad.pPK_Actividad.ToString() +
                                                                                                                         "Paq: " + po_Actividad.pPK_Paquete.ToString() +
                                                                                                                         "Comp: " + po_Actividad.pPK_Componente +
                                                                                                                         "Ent: " + po_Actividad.pPK_Entregable.ToString() +
                                                                                                                         "Proy: " + po_Actividad.pPK_Proyecto.ToString() +
                                                                                                                         "Usuario: " + po_Actividad.pPK_Usuario.ToString(), po_Actividad.pUsuarioTransaccion);

                cls_sqlDatabase.commitTransaction();

                return vi_resultado;

            }
            catch (Exception po_exception)
            {
                cls_sqlDatabase.rollbackTransaction();
                throw new Exception("Ocurrió un error al eliminar la actividad.", po_exception);
            }
        }
        /// <summary>
        /// Crea un objeto de tipo
        /// cls_asignacionActividad con la informacón
        /// que se encuentra en memoria y la complementa 
        /// con la información presente en el formulario web
        /// </summary>
        /// <returns>cls_asignacionActividad</returns>
        private cls_asignacionActividad crearObjeto()
        {
            cls_asignacionActividad vo_asignacionActividad = new cls_asignacionActividad();

            try
            {
                //Se asignan los datos que conforman la llave primaria al objeto
                vo_asignacionActividad = (cls_asignacionActividad)cls_variablesSistema.obj;

                vo_asignacionActividad.pDescripcion = txt_descripcion.Text;
                vo_asignacionActividad.pFechaInicio = Convert.ToDateTime(txt_fechaInicio.Text);
                vo_asignacionActividad.pFechaFin = Convert.ToDateTime(txt_fechaFin.Text);
                vo_asignacionActividad.pHorasAsignadas = Convert.ToDecimal(txt_horasAsignadas.Text);
                vo_asignacionActividad.pEstado.pPK_estado = Convert.ToInt32(ddl_estado.SelectedValue);

                return vo_asignacionActividad;
            }
            catch (Exception po_exception)
            {
                throw new Exception("Ocurrió un error al crear el objeto para guardar el registro.", po_exception);
            }
        }
        /// <summary>
        /// Evento que asigna usuarios a las actividades que se seleccionan
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btn_asignarUsuario_Click(object sender, EventArgs e)
        {
            try
            {
                cls_paquete vo_paquete = new cls_paquete();
                vo_paquete.pPK_Paquete = Convert.ToInt32(ddl_paquete.SelectedValue.ToString());

                //Se recorren las actividades del listBox hasta que se llegue a la que se encuentra seleccionada
                for (int i = lbx_actividades.Items.Count - 1; i >= 0; i--)
                {
                    if (lbx_actividades.Items[i].Selected == true)
                    {
                        cls_actividad vo_actividad = new cls_actividad();
                        vo_actividad.pPK_Actividad = Convert.ToInt32(lbx_actividades.Items[i].Value.ToString());
                        vo_actividad.pNombre = lbx_actividades.Items[i].Text.ToString();

                        //Se recorren los usuarios del listBox hasta que se llegue al que se encuentra seleccionado
                        for (int j = lbx_usuarios.Items.Count - 1; j >= 0; j--)
                        {
                            if (lbx_usuarios.Items[j].Selected == true)
                            {
                                cls_asignacionActividad vo_actividadAsignada = new cls_asignacionActividad();

                                cls_usuario vo_usuario = new cls_usuario();
                                vo_usuario.pPK_usuario = lbx_usuarios.Items[j].Value.ToString();
                                vo_usuario.pNombre = lbx_usuarios.Items[j].Text.ToString();

                                //Si la asignación no se encuentra en memoria
                                if (cls_variablesSistema.vs_proyecto.pAsignacionActividadListaMemoria.Where(searchLinQ => searchLinQ.pPK_Actividad == vo_actividad.pPK_Actividad &&
                                                                                                                    searchLinQ.pPK_Paquete == vo_paquete.pPK_Paquete).Count() == 0)
                                {

                                    vo_actividadAsignada = (cls_asignacionActividad)cls_variablesSistema.vs_proyecto.pActividadesPaqueteLista.Find(searchLinQ => searchLinQ.pPK_Actividad == vo_actividad.pPK_Actividad &&
                                                                                                                                                                 searchLinQ.pPK_Paquete == vo_paquete.pPK_Paquete);
                                    cls_variablesSistema.obj = vo_actividadAsignada;

                                    vo_actividadAsignada = crearObjeto();

                                    //Si el usuario no se encuentra asignado, se procede a agregarlo a la lista de usuarios de la asignación y a agregar la asignación en si
                                    if (vo_actividadAsignada.pUsuarioLista.Where(searchLinQ => searchLinQ.pPK_usuario == vo_usuario.pPK_usuario).Count() == 0)
                                    {

                                        vo_actividadAsignada.pUsuarioLista.Add(vo_usuario);

                                        lbx_usuariosAsociados.Items.Add(lbx_usuarios.Items[j]);
                                        ListItem li = lbx_usuarios.Items[j];
                                        lbx_usuarios.Items.Remove(li);

                                        cls_variablesSistema.vs_proyecto.pAsignacionActividadListaMemoria.Add(vo_actividadAsignada);
                                    }
                                }
                                //De encontrarse la asignación ya en memoria, sólo se asigna y se corrobora el usuario que se intenta asignar
                                else
                                {
                                    vo_actividadAsignada = (cls_asignacionActividad)cls_variablesSistema.vs_proyecto.pAsignacionActividadListaMemoria.Find(searchLinQ => searchLinQ.pPK_Actividad == vo_actividad.pPK_Actividad &&
                                                                                                                                                                         searchLinQ.pPK_Paquete == vo_paquete.pPK_Paquete);
                                    cls_variablesSistema.obj = vo_actividadAsignada;

                                    vo_actividadAsignada = crearObjeto();

                                    if (vo_actividadAsignada.pUsuarioLista.Where(searchLinQ => searchLinQ.pPK_usuario == vo_usuario.pPK_usuario).Count() == 0)
                                    {
                                        vo_actividadAsignada.pUsuarioLista.Add(vo_usuario);

                                        lbx_usuariosAsociados.Items.Add(lbx_usuarios.Items[j]);
                                        ListItem li = lbx_usuarios.Items[j];
                                        lbx_usuarios.Items.Remove(li);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception po_exception)
            {
                String vs_error_usuario = "Ocurrió un error mientras se asignada la información del usuario a la actividad.";
                this.lanzarExcepcion(po_exception, vs_error_usuario);
            }
        }
        /// <summary>
        /// Método para cargar una actividad asignada de manera específica, enviando el proyecto, paquete y actividad 
        /// </summary>
        /// <param name="pi_paquete"></param>
        private void cargarAsignacionActividad(cls_paqueteActividad po_paqueteActividad)
        {
            try
            {
                //Se crean 2 variables para evitar que la asignación de una única presente inconcistencia de punteros a la hora de comparar y eliminar
                //registro  de memoria con registros de la lista de base de datos (en el evento para remover usuarios del listbox se presenta la inconsistencia de puntero)
                cls_asignacionActividad vo_asignacionActividadMemoria = new cls_asignacionActividad();
                cls_asignacionActividad vo_asignacionActividadBaseDatos = new cls_asignacionActividad();

                //La variables se cargan con el registro de base de datos
                vo_asignacionActividadMemoria = cls_gestorAsignacionActividad.seleccionarAsignacionActividad(po_paqueteActividad);
                vo_asignacionActividadBaseDatos = cls_gestorAsignacionActividad.seleccionarAsignacionActividad(po_paqueteActividad);

                //Se verifica si la consulta de base de datos devolvió algún registro válido, de lo contrario no se debe registrar ni en la lista de memoria
                //ni en la de base de datos
                if (vo_asignacionActividadMemoria.pPK_Proyecto == cls_variablesSistema.vs_proyecto.pPK_proyecto)
                {
                    //De no encontrarse ya en la lista de base de datos, se agrega
                    if (cls_variablesSistema.vs_proyecto.pAsignacionActividadListaBaseDatos.Where(searchLinQ => searchLinQ.pPK_Actividad == vo_asignacionActividadBaseDatos.pPK_Actividad &&
                                                                                                          searchLinQ.pPK_Paquete == vo_asignacionActividadBaseDatos.pPK_Paquete).Count() == 0)
                    {
                        cls_variablesSistema.vs_proyecto.pAsignacionActividadListaBaseDatos.Add(vo_asignacionActividadBaseDatos);
                    }
                    //Se verifica si existe en la lista de memoria para agregarlo en la variable objeto local y en la misma lista
                    if (cls_variablesSistema.vs_proyecto.pAsignacionActividadListaMemoria.Where(searchLinQ => searchLinQ.pPK_Actividad == vo_asignacionActividadMemoria.pPK_Actividad &&
                                                                                                        searchLinQ.pPK_Paquete == vo_asignacionActividadMemoria.pPK_Paquete).Count() == 0)
                    {
                        cls_variablesSistema.obj = vo_asignacionActividadMemoria;
                        cls_variablesSistema.vs_proyecto.pAsignacionActividadListaMemoria.Add(vo_asignacionActividadMemoria);
                    }
                    else
                    {
                        //Si la asigancion ya ha sido leída, se carga la variable objeto con la que se encuentra en memoria
                        vo_asignacionActividadMemoria = (cls_asignacionActividad)cls_variablesSistema.vs_proyecto.pAsignacionActividadListaMemoria.Find(searchLinQ => searchLinQ.pPK_Actividad == vo_asignacionActividadMemoria.pPK_Actividad &&
                                                                                                                                                        searchLinQ.pPK_Paquete == vo_asignacionActividadMemoria.pPK_Paquete);
                        cls_variablesSistema.obj = vo_asignacionActividadMemoria;
                    }

                    //Se encuentre la asignació ya en memoria, o no, se envía a cargar la información del registro para cargar los campos de la ventana
                    cargarObjeto();

                }

                //Si la actividad ya se encuentra en memoria, se procede a asignar a los usuarios asignados
                if (cls_variablesSistema.vs_proyecto.pAsignacionActividadListaMemoria.Where(searchLinQ => searchLinQ.pPK_Actividad == po_paqueteActividad.pPK_Actividad &&
                                                                                                    searchLinQ.pPK_Paquete == po_paqueteActividad.pPK_Paquete).Count() > 0)
                {
                    vo_asignacionActividadMemoria = (cls_asignacionActividad)cls_variablesSistema.vs_proyecto.pAsignacionActividadListaMemoria.Find(searchLinQ => searchLinQ.pPK_Actividad == po_paqueteActividad.pPK_Actividad &&
                                                                                                                                                   searchLinQ.pPK_Paquete == po_paqueteActividad.pPK_Paquete);
                    cls_variablesSistema.obj = vo_asignacionActividadMemoria;

                    cargarObjeto();

                    lbx_usuariosAsociados.DataSource = vo_asignacionActividadMemoria.pUsuarioLista;
                    lbx_usuariosAsociados.DataTextField = "pNombre";
                    lbx_usuariosAsociados.DataValueField = "pPK_usuario";
                    lbx_usuariosAsociados.DataBind();
                }
                //Si no se encuentra en memoria es porque esa actividad aún no se encuentra asignada, por lo que sólo se procede a cargar la llave primaria de la actividad
                //por si se va a realizar la asignación en ese momento
                else
                {
                    vo_asignacionActividadMemoria = cls_gestorAsignacionActividad.listarActividadesPorPaquete(po_paqueteActividad.pPK_Proyecto, po_paqueteActividad.pPK_Paquete, po_paqueteActividad.pPK_Actividad);

                    cls_variablesSistema.obj = vo_asignacionActividadMemoria;

                    lbx_usuariosAsociados.DataSource = vo_asignacionActividadMemoria.pUsuarioLista;
                    lbx_usuariosAsociados.DataTextField = "pNombre";
                    lbx_usuariosAsociados.DataValueField = "pPK_usuario";
                    lbx_usuariosAsociados.DataBind();

                }
            }
            catch (Exception po_exception)
            {
                throw new Exception("Ocurrió un error cargando la información para la actividad seleccionada.", po_exception);
            }
        }
        /// <summary>
        /// Evento para remover usuarios de la asignación de actividades
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btn_removerUsuario_Click(object sender, EventArgs e)
        {
            try
            {
                cls_paquete vo_paquete = new cls_paquete();
                vo_paquete.pPK_Paquete = Convert.ToInt32(ddl_paquete.SelectedValue.ToString());

                for (int i = lbx_actividades.Items.Count - 1; i >= 0; i--)
                {
                    if (lbx_actividades.Items[i].Selected == true)
                    {
                        cls_actividad vo_actividad = new cls_actividad();
                        vo_actividad.pPK_Actividad = Convert.ToInt32(lbx_actividades.Items[i].Value.ToString());
                        vo_actividad.pNombre = lbx_actividades.Items[i].Text.ToString();

                        for (int j = lbx_usuariosAsociados.Items.Count - 1; j >= 0; j--)
                        {
                            if (lbx_usuariosAsociados.Items[j].Selected == true)
                            {
                                cls_asignacionActividad vo_actividadAsignada = new cls_asignacionActividad();

                                cls_usuario vo_usuario = new cls_usuario();
                                vo_usuario.pPK_usuario = lbx_usuariosAsociados.Items[j].Value.ToString();
                                vo_usuario.pNombre = lbx_usuariosAsociados.Items[j].Text.ToString();

                                if (cls_variablesSistema.vs_proyecto.pAsignacionActividadListaMemoria.Where(searchLinQ => searchLinQ.pPK_Actividad == vo_actividad.pPK_Actividad &&
                                                                                                                          searchLinQ.pPK_Paquete == vo_paquete.pPK_Paquete).Count() > 0)
                                {
                                    vo_actividadAsignada = (cls_asignacionActividad)cls_variablesSistema.vs_proyecto.pAsignacionActividadListaMemoria.Find(searchLinQ => searchLinQ.pPK_Actividad == vo_actividad.pPK_Actividad &&
                                                                                                                                                                         searchLinQ.pPK_Paquete == vo_paquete.pPK_Paquete);
                                    //Si luego de esta eliminación, la lista aún va a quedar con elementos, solo se remueve el usuario
                                    if (vo_actividadAsignada.pUsuarioLista.Count > 1)
                                    {
                                        vo_actividadAsignada.pUsuarioLista.RemoveAll(searchLinQ => searchLinQ.pPK_usuario == vo_usuario.pPK_usuario);
                                    }
                                    //Si solo se haya un elemento en la lista de usuarios, no se realiza la eliminación del mismo, sino de la actividad asignada
                                    //del objeto en memoria, esto debido a que la llave primaria de la asignación está compuesta en parte por la llave primario
                                    //del usuario, y si el mismo no se asigna, pues no se obtiene y presentaría un error
                                    else
                                    {
                                        cls_variablesSistema.vs_proyecto.pAsignacionActividadListaMemoria.RemoveAll(searchLinQ => searchLinQ.pPK_Actividad == vo_actividad.pPK_Actividad &&
                                                                                                                                  searchLinQ.pPK_Paquete == vo_paquete.pPK_Paquete);
                                    }
                                }

                                lbx_usuarios.Items.Add(lbx_usuariosAsociados.Items[j]);
                                ListItem li = lbx_usuariosAsociados.Items[j];
                                lbx_usuariosAsociados.Items.Remove(li);

                            }
                        }
                    }
                }
            }
            catch (Exception po_exception)
            {
                String vs_error_usuario = "Ocurrió un error mientras se desasociaba la información del usuario a la actividad.";
                this.lanzarExcepcion(po_exception, vs_error_usuario);
            }
        }
        /// <summary>
        /// Método que determina si una 
        /// actividad asociada a un usuario se encuentra atrasada o 
        /// el número de horas supera lo estimado
        /// </summary>
        /// <param name="poRegistro">Registro de tiempo</param>
        /// <param name="pbRetrasada">Determina si la actividad esta atrasada.</param>
        /// <param name="pbSuperaEstimado">Determina si la actividad supera el estimado.</param>
        public static void verificarActividadAtrasada(cls_asignacionActividad poAsignacion, out bool pbRetrasada, out bool pbSuperaEstimado)
        {
            pbRetrasada = false;
            pbSuperaEstimado = false;

            try
            {
                String vs_comando = "PA_cont_verificarActividadRetrasada";
                cls_parameter[] vu_parametros = {
                                                       new cls_parameter("@paramProyecto", poAsignacion.pPK_Proyecto),
                                                       new cls_parameter("@paramActividad", poAsignacion.pPK_Actividad),
                                                       new cls_parameter("@paramPaquete", poAsignacion.pPK_Paquete),
                                                       new cls_parameter("@paramComponente", poAsignacion.pPK_Componente),
                                                       new cls_parameter("@paramEntregable", poAsignacion.pPK_Entregable),
                                                       new cls_parameter("@paramUsuario", poAsignacion.pPK_Usuario),
                                                   };

                DataSet vu_dataSet = cls_sqlDatabase.executeDataset(vs_comando, true, vu_parametros);

                if (vu_dataSet != null && vu_dataSet.Tables[0].Rows.Count == 1)
                {
                    pbRetrasada = vu_dataSet.Tables[0].Rows[0]["ATRASADA"].ToString().Equals("1") ? true : false;

                    pbSuperaEstimado = vu_dataSet.Tables[0].Rows[0]["SUPERA_ESTIMADO"].ToString().Equals("1") ? true : false;
                }
            }
            catch (Exception po_exception)
            {
                cls_sqlDatabase.rollbackTransaction();
                throw new Exception("Ocurrió un error al determina si la actividad se encuentra atrasada.", po_exception);
            }
        }
        /// <summary>
        /// Carga la instancia del
        /// registro de la asignación
        /// </summary>
        /// <param name="ps_actividad">String código actividad.</param>
        /// <param name="ps_paquete">String código paquete.</param>
        /// <param name="ps_componente">String código componente.</param>
        /// <param name="ps_entregable">String código entregable.</param>
        /// <param name="ps_proyecto">String código proyecto.</param>
        /// <param name="ps_registro">String código de registro.</param>
        /// <param name="ps_fecha">DateTime Fecha.</param>
        private void cargarActividad(string ps_actividad,
                                     string ps_paquete,
                                     string ps_componente,
                                     string ps_entregable,
                                     string ps_proyecto,
                                     string ps_registro,
                                     string ps_fecha)
        {
            cls_registroActividad vo_registro;
            cls_actividad vo_actividad;
            cls_asignacionActividad vo_asignacion;

            try
            {
                vo_registro = new cls_registroActividad();

                vo_actividad = new cls_actividad();
                vo_actividad.pPK_Actividad = Convert.ToInt32(ps_actividad);
                vo_actividad = cls_gestorActividad.seleccionarActividad(vo_actividad);

                vo_asignacion = new cls_asignacionActividad();
                vo_asignacion.pActividad = vo_actividad;
                vo_asignacion.pPK_Componente = Convert.ToInt32(ps_componente);
                vo_asignacion.pPK_Entregable = Convert.ToInt32(ps_entregable);
                vo_asignacion.pPK_Paquete = Convert.ToInt32(ps_paquete);
                vo_asignacion.pPK_Actividad = vo_actividad.pPK_Actividad;
                vo_asignacion.pPK_Proyecto = Convert.ToInt32(ps_proyecto);
                vo_asignacion.pPK_Usuario = cls_interface.vs_usuarioActual;

                vo_registro = new cls_registroActividad();
                vo_registro.pAsignacion = vo_asignacion;
                vo_registro.pFecha = Convert.ToDateTime(ps_fecha);

                if (String.IsNullOrEmpty(ps_registro))
                {
                    vo_registro.pHoras = 0;
                    vo_registro.pComentario = String.Empty;
                }
                else
                {
                    vo_registro.pRegistro = Convert.ToDecimal(ps_registro);
                    cls_gestorRegistroActividad.seleccionarRegistroActividad(vo_registro);
                }

                cls_variablesSistema.obj = vo_registro;

            }
            catch (Exception)
            {
                throw;
            }
        }
        /// <summary>
        /// Método que permite seleccionar  
        /// un único registro en la tabla estado
        /// </summary>
        /// <returns>poActividad valor del resultado de la ejecución de la sentencia</returns>
        public static cls_asignacionActividad seleccionarAsignacionActividad(cls_paqueteActividad po_paqueteActividad)
        {
            cls_asignacionActividad vo_asignacionActividad = null;
               cls_usuario vo_usuario = null;
               List<cls_usuario> vo_listaUsuarios = null;

               try
               {
               String vs_comando = "PA_cont_actividadAsignadaSelectOne";
               cls_parameter[] vu_parametros = {
                                                   new cls_parameter("@paramPK_proyecto", po_paqueteActividad.pPK_Proyecto),
                                                   new cls_parameter("@paramPK_paquete", po_paqueteActividad.pPK_Paquete),
                                                   new cls_parameter("@paramPK_actividad", po_paqueteActividad.pPK_Actividad)
                                               };

               DataSet vu_dataSet = cls_sqlDatabase.executeDataset(vs_comando, true, vu_parametros);

               vo_asignacionActividad = new cls_asignacionActividad();

               vo_listaUsuarios = new List<cls_usuario>();

               if (vu_dataSet.Tables[0].Rows.Count > 0)
               {
                    vo_asignacionActividad.pPK_Actividad = Convert.ToInt32(vu_dataSet.Tables[0].Rows[0]["PK_actividad"]);

                    vo_asignacionActividad.pPK_Paquete = Convert.ToInt32(vu_dataSet.Tables[0].Rows[0]["PK_paquete"]);

                    vo_asignacionActividad.pPK_Componente = Convert.ToInt32(vu_dataSet.Tables[0].Rows[0]["PK_componente"]);

                    vo_asignacionActividad.pPK_Entregable = Convert.ToInt32(vu_dataSet.Tables[0].Rows[0]["PK_entregable"]);

                    vo_asignacionActividad.pPK_Proyecto = Convert.ToInt32(vu_dataSet.Tables[0].Rows[0]["PK_proyecto"]);

                    vo_asignacionActividad.pPK_Usuario = vu_dataSet.Tables[0].Rows[0]["PK_usuario"].ToString();

                    vo_asignacionActividad.pFK_Estado = Convert.ToInt32(vu_dataSet.Tables[0].Rows[0]["FK_estado"]);

                    vo_asignacionActividad.pDescripcion = vu_dataSet.Tables[0].Rows[0]["descripcion"].ToString();

                    vo_asignacionActividad.pFechaInicio = Convert.ToDateTime(vu_dataSet.Tables[0].Rows[0]["fechaInicio"]);

                    vo_asignacionActividad.pFechaFin = Convert.ToDateTime(vu_dataSet.Tables[0].Rows[0]["fechaFin"]);

                    vo_asignacionActividad.pHorasAsignadas = Convert.ToDecimal(vu_dataSet.Tables[0].Rows[0]["horasAsignadas"]);

                    vo_asignacionActividad.pHorasReales = Convert.ToDecimal(vu_dataSet.Tables[0].Rows[0]["horasReales"]);

                    for (int i = 0; i < vu_dataSet.Tables[0].Rows.Count; i++)
                    {
                        vo_usuario = new cls_usuario();

                        vo_usuario.pPK_usuario = vu_dataSet.Tables[0].Rows[i]["PK_usuario"].ToString();

                        vo_usuario.pNombre = vu_dataSet.Tables[0].Rows[i]["nombreUsuario"].ToString();

                        vo_listaUsuarios.Add(vo_usuario);
                    }

                    vo_asignacionActividad.pUsuarioLista = vo_listaUsuarios;
               }

               return vo_asignacionActividad;

               }
               catch (Exception po_exception)
               {
               throw new Exception("Ocurrió un error al seleccionar la actividad específica.", po_exception);
               }
        }
        /// <summary>
        /// Método que permite actualizar 
        /// un registro en la tabla Actividad
        /// </summary>
        /// <param name="po_Actividad">Actividad a actualizar</param>
        /// <returns>Int valor del resultado de la ejecución de la sentencia</returns>
        public static int updateAsignacionActividad(cls_asignacionActividad po_Actividad, int ps_accion)
        {
            int vi_resultado;

            try
            {
                String vs_comando = "PA_cont_asignacionActividadUpdate";
                cls_parameter[] vu_parametros =
                {
                    new cls_parameter("@paramPK_actividad", po_Actividad.pPK_Actividad),
                    new cls_parameter("@paramPK_paquete", po_Actividad.pPK_Paquete),
                    new cls_parameter("@paramPK_componente", po_Actividad.pPK_Componente),
                    new cls_parameter("@paramPK_entregable", po_Actividad.pPK_Entregable),
                    new cls_parameter("@paramPK_proyecto", po_Actividad.pPK_Proyecto),
                    new cls_parameter("@paramPK_usuario", po_Actividad.pUsuarioPivot),
                    new cls_parameter("@paramFK_estado", po_Actividad.pFK_Estado),
                    new cls_parameter("@paramdescripcion", po_Actividad.pDescripcion),
                    new cls_parameter("@paramfechaInicio", po_Actividad.pFechaInicio),
                    new cls_parameter("@paramfechaFin", po_Actividad.pFechaFin),
                    new cls_parameter("@paramhorasAsignadas", po_Actividad.pHorasAsignadas),
                    new cls_parameter("@paramAccion", ps_accion)
                };

                cls_sqlDatabase.beginTransaction();

                vi_resultado = cls_sqlDatabase.executeNonQuery(vs_comando, true, vu_parametros);

                cls_interface.insertarTransacccionBitacora(cls_constantes.MODIFICAR, cls_constantes.ACTIVIDAD_ASIGNACION, "Act: " + po_Actividad.pPK_Actividad.ToString() +
                                                                                                                          "Paq: " + po_Actividad.pPK_Paquete.ToString() +
                                                                                                                          "Comp: " + po_Actividad.pPK_Componente +
                                                                                                                          "Ent: " + po_Actividad.pPK_Entregable.ToString() +
                                                                                                                          "Proy: " + po_Actividad.pPK_Proyecto.ToString() +
                                                                                                                          "Usuario: " + po_Actividad.pUsuarioPivot.ToString(), po_Actividad.pUsuarioTransaccion);

                cls_sqlDatabase.commitTransaction();

                return vi_resultado;

            }
            catch (Exception po_exception)
            {
                cls_sqlDatabase.rollbackTransaction();
                throw new Exception("Ocurrió un error al modificar la actividad.", po_exception);
            }
        }
        /// <summary>
        /// Este va sobrecargado para traer también las actividades cuando NO hay cticidades aún asignadas
        /// </summary>
        /// <param name="pi_proyecto"></param>
        /// <param name="pi_paquete"></param>
        /// <returns></returns>
        public static cls_asignacionActividad listarActividadesPorPaquete(int pi_proyecto, int pi_paquete, int pi_actividad)
        {
            List<cls_asignacionActividad> vo_lista = null;
               cls_asignacionActividad vo_asignacionActividad = null;
               try
               {
               String vs_comando = "PA_cont_actividadesPaqueteSelectOne";
               cls_parameter[] vu_parametros = {
                                                 new cls_parameter("@paramPK_proyecto", pi_proyecto),
                                                 new cls_parameter("@paramPK_paquete", pi_paquete),
                                                 new cls_parameter("@paramPK_actividad", pi_actividad)
                                               };

               DataSet vu_dataSet = cls_sqlDatabase.executeDataset(vs_comando, true, vu_parametros);

               vo_lista = new List<cls_asignacionActividad>();
               for (int i = 0; i < vu_dataSet.Tables[0].Rows.Count; i++)
               {
                   vo_asignacionActividad = new cls_asignacionActividad();

                   vo_asignacionActividad.pPK_Actividad = Convert.ToInt32(vu_dataSet.Tables[0].Rows[i]["PK_actividad"]);

                   vo_asignacionActividad.pPK_Paquete = Convert.ToInt32(vu_dataSet.Tables[0].Rows[i]["PK_paquete"]);

                   vo_asignacionActividad.pPK_Componente = Convert.ToInt32(vu_dataSet.Tables[0].Rows[i]["PK_componente"]);

                   vo_asignacionActividad.pPK_Entregable = Convert.ToInt32(vu_dataSet.Tables[0].Rows[i]["PK_entregable"]);

                   vo_asignacionActividad.pPK_Proyecto = Convert.ToInt32(vu_dataSet.Tables[0].Rows[i]["PK_proyecto"]);

                   vo_asignacionActividad.pNombrePaquete = vu_dataSet.Tables[0].Rows[i]["nombrePaquete"].ToString();

                   vo_asignacionActividad.pNombreActividad = vu_dataSet.Tables[0].Rows[i]["nombreActividad"].ToString();

                   vo_lista.Add(vo_asignacionActividad);
               }

               return vo_asignacionActividad;
               }
               catch (Exception po_exception)
               {
               throw new Exception("Ocurrió un error al obtener el listado de las actividades.", po_exception);
               }
        }
        /// <summary>
        /// Método que permite listar 
        /// todos los registros en la tabla actividad
        /// </summary>
        /// <returns> List<cls_actividad>  valor del resultado de la ejecución de la sentencia</returns>
        public static List<cls_asignacionActividad> listarActividades()
        {
            List<cls_asignacionActividad> vo_lista = null;
               cls_asignacionActividad vo_Actividad = null;
               try
               {
               String vs_comando = "PA_cont_actividadSelect";
               cls_parameter[] vu_parametros = {

                                               };

               DataSet vu_dataSet = cls_sqlDatabase.executeDataset(vs_comando, true, vu_parametros);

               vo_lista = new List<cls_asignacionActividad>();
               for (int i = 0; i < vu_dataSet.Tables[0].Rows.Count; i++)
               {
                   vo_Actividad = new cls_asignacionActividad();

                   vo_Actividad.pPK_Actividad = Convert.ToInt32(vu_dataSet.Tables[0].Rows[i]["PK_actividad"]);

                   vo_Actividad.pPK_Paquete = Convert.ToInt32(vu_dataSet.Tables[0].Rows[i]["PK_paquete"]);

                   vo_Actividad.pPK_Componente = Convert.ToInt32(vu_dataSet.Tables[0].Rows[i]["PK_componente"]);

                   vo_Actividad.pPK_Entregable = Convert.ToInt32(vu_dataSet.Tables[0].Rows[i]["PK_entregable"]);

                   vo_Actividad.pPK_Proyecto = Convert.ToInt32(vu_dataSet.Tables[0].Rows[i]["PK_proyecto"]);

                   vo_Actividad.pPK_Usuario = vu_dataSet.Tables[0].Rows[i]["PK_usuario"].ToString();

                   vo_Actividad.pFK_Estado = Convert.ToInt32(vu_dataSet.Tables[0].Rows[i]["FK_estado"]);

                   vo_Actividad.pDescripcion = vu_dataSet.Tables[0].Rows[i]["descripcion"].ToString();

                   vo_Actividad.pFechaInicio = Convert.ToDateTime(vu_dataSet.Tables[0].Rows[i]["fechaInicio"]);

                   vo_Actividad.pFechaFin = Convert.ToDateTime(vu_dataSet.Tables[0].Rows[i]["fechaFin"]);

                   vo_Actividad.pHorasAsignadas = Convert.ToDecimal(vu_dataSet.Tables[0].Rows[i]["horasAsignadas"]);

                   vo_Actividad.pHorasReales = Convert.ToDecimal(vu_dataSet.Tables[0].Rows[i]["horasReales"]);

                   vo_lista.Add(vo_Actividad);
               }

               return vo_lista;
               }
               catch (Exception po_exception)
               {
               throw new Exception("Ocurrió un error al obtener el listado de las actividades.", po_exception);
               }
        }
Пример #12
0
        /// <summary>
        /// Levanta mensaje de advertencia cuando la actividad se 
        /// encuentra atrasada o esta superando el tiempo estimado.
        /// </summary>
        /// <param name="poAsignacion"></param>
        private void colocarActividadAtrasada(cls_asignacionActividad poAsignacion)
        {
            bool vbAtrasada = false;
            bool vbSupera = false;
            String vstitle = "Advertencia";
            String vsMsg1 = "Este mensaje es para avisarle que esta tarea se encuentra atrasada, verifique la fecha final asignada a esta actividad.";
            String vsMsg2 = "Este mensaje es para avisarle que esta tarea supera el tiempo estimado designado para realizarla.";
            String vsMsg3 = "Este mensaje es para avisarle que esta tarea se encuentra atrasada y además ha superado el tiempo estimado designado";
            String vsMensaje = String.Empty;
            try
            {
                cls_gestorRegistroActividad.verificarActividadAtrasada(poAsignacion, out vbAtrasada, out vbSupera);

                if (vbAtrasada && vbSupera)
                {
                    vsMensaje = vsMsg3;
                }
                else
                {
                    if (vbAtrasada)
                    {
                        vsMensaje = vsMsg1;
                    }
                    else
                    {
                        vsMensaje = vsMsg2;
                    }
                }

                if (vbAtrasada || vbSupera)
                {
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Advertencia", "DesplegarAdvertencia('" + vstitle + "', '" + vsMensaje + "');", true);
                }

            }
            catch (Exception po_exception)
            {
                this.lanzarExcepcion(po_exception, "Al colocar actividad atrasada.");
            }
        }
Пример #13
0
        /// <summary>
        /// Carga la instancia del
        /// registro de la asignación
        /// </summary>
        /// <param name="ps_actividad">String código actividad.</param>
        /// <param name="ps_paquete">String código paquete.</param>
        /// <param name="ps_componente">String código componente.</param>
        /// <param name="ps_entregable">String código entregable.</param>
        /// <param name="ps_proyecto">String código proyecto.</param>
        /// <param name="ps_registro">String código de registro.</param>
        /// <param name="ps_fecha">DateTime Fecha.</param>
        private void cargarActividad(string ps_actividad,
                                     string ps_paquete,
                                     string ps_componente,
                                     string ps_entregable,
                                     string ps_proyecto,
                                     string ps_registro,
                                     string ps_fecha)
        {
            cls_registroActividad vo_registro;
            cls_actividad vo_actividad;
            cls_asignacionActividad vo_asignacion;
            cls_paqueteActividad vo_paquete = null;
            try
            {
                vo_registro = new cls_registroActividad();

                vo_actividad = new cls_actividad();
                vo_actividad.pPK_Actividad = Convert.ToInt32(ps_actividad);
                vo_actividad = cls_gestorActividad.seleccionarActividad(vo_actividad);

                vo_paquete = new cls_paqueteActividad();
                vo_paquete.pPK_Actividad = vo_actividad.pPK_Actividad;
                vo_paquete.pPK_Componente = Convert.ToInt32(ps_componente);
                vo_paquete.pPK_Entregable = Convert.ToInt32(ps_entregable);
                vo_paquete.pPK_Paquete = Convert.ToInt32(ps_paquete);
                vo_paquete.pPK_Proyecto = Convert.ToInt32(ps_proyecto);

                vo_asignacion = new cls_asignacionActividad();
                vo_asignacion = cls_gestorAsignacionActividad.seleccionarAsignacionActividad(vo_paquete);
                vo_asignacion.pActividad = vo_actividad;
                vo_asignacion.pPK_Componente = Convert.ToInt32(ps_componente);
                vo_asignacion.pPK_Entregable = Convert.ToInt32(ps_entregable);
                vo_asignacion.pPK_Paquete = Convert.ToInt32(ps_paquete);
                vo_asignacion.pPK_Actividad = vo_actividad.pPK_Actividad;
                vo_asignacion.pPK_Proyecto = Convert.ToInt32(ps_proyecto);
                vo_asignacion.pPK_Usuario = ((COSEVI.CSLA.lib.accesoDatos.App_InterfaceComunes.cls_interface)this.Session[CSLA.web.App_Constantes.cls_constantes.INTERFACES]).vs_usuarioActual;

                vo_registro = new cls_registroActividad();
                vo_registro.pAsignacion = vo_asignacion;
                vo_registro.pFecha = Convert.ToDateTime(ps_fecha);

                if (String.IsNullOrEmpty(ps_registro))
                {
                    vo_registro.pHoras = 0;
                    vo_registro.pComentario = String.Empty;
                }
                else
                {
                    vo_registro.pRegistro = Convert.ToDecimal(ps_registro);
                    cls_gestorRegistroActividad.seleccionarRegistroActividad(vo_registro);
                }

                ((CSLA.web.App_Variables.cls_variablesSistema)this.Session[CSLA.web.App_Constantes.cls_constantes.VARIABLES]).obj = vo_registro;

            }
            catch (Exception)
            {
                throw;
            }
        }
        private void Validador()
        {
            try
            {
                cls_paquete vo_paquete = new cls_paquete();
                vo_paquete.pPK_Paquete = Convert.ToInt32(ddl_paquete.SelectedValue.ToString());

                //Se recorren las actividades del listBox hasta que se llegue a la que se encuentra seleccionada
                for (int i = lbx_actividades.Items.Count - 1; i >= 0; i--)
                {
                    if (lbx_actividades.Items[i].Selected == true)
                    {
                        cls_actividad vo_actividad = new cls_actividad();
                        vo_actividad.pPK_Actividad = Convert.ToInt32(lbx_actividades.Items[i].Value.ToString());
                        vo_actividad.pNombre = lbx_actividades.Items[i].Text.ToString();

                        cls_asignacionActividad vo_actividadAsignada = new cls_asignacionActividad();

                        if (lbx_usuariosAsociados.Items.Count > 0)
                        {
                            vo_actividadAsignada = (cls_asignacionActividad)((CSLA.web.App_Variables.cls_variablesSistema)this.Session[CSLA.web.App_Constantes.cls_constantes.VARIABLES]).vs_proyecto.pAsignacionActividadListaMemoria.Find(searchLinQ => searchLinQ.pPK_Actividad == vo_actividad.pPK_Actividad &&
                                                                                                                                                                searchLinQ.pPK_Paquete == vo_paquete.pPK_Paquete);
                            ((CSLA.web.App_Variables.cls_variablesSistema)this.Session[CSLA.web.App_Constantes.cls_constantes.VARIABLES]).obj = vo_actividadAsignada;

                            vo_actividadAsignada = crearObjeto();
                        }
                    }
                }
            }
            catch (Exception po_exception)
            {
                String vs_error_usuario = "Ocurrió un error mientras se asignaba la información del usuario a la actividad.";
                this.lanzarExcepcion(po_exception, vs_error_usuario);
            }
        }