Ejemplo n.º 1
0
        /// <summary>
        /// Metodo encargado de editar un registro actividad periodo
        /// </summary>
        /// <param name="id_actividad_asignacion"></param>
        /// <param name="id_tipo_periodo"></param>
        /// <param name="inicio_periodo"></param>
        /// <param name="fin_periodo"></param>
        /// <param name="id_usuario"></param>
        /// <returns></returns>
        public RetornoOperacion EditaActividadPeriodo(int id_actividad_asignacion, TipoPeriodoActividad id_tipo_periodo, DateTime inicio_periodo, DateTime fin_periodo, int id_usuario)
        {
            //Declarando variable de retorno
            RetornoOperacion resultado = new RetornoOperacion();

            //Instanciando la actividad correspondiente
            using (ActividadAsignacion a = new ActividadAsignacion(this._id_actividad_asignacion))
            {
                //Instanciando al tipo de periodo
                using (TipoPeriodoAsignacion t = new TipoPeriodoAsignacion(this._id_tipo_periodo))
                {
                    //Si la asignación NO se ha terminado y el periodo no la afecta
                    //O si el periodo es extemporaneo
                    if ((a.Estatus != ActividadAsignacion.EstatusAsignacionActividad.Terminada &&
                         t.signo < 0) || t.signo > 0)
                    {
                        //Realizando la actualización del registro
                        resultado = this.editaActividadPeriodo(id_actividad_asignacion, (int)id_tipo_periodo, inicio_periodo, fin_periodo, 0, id_usuario, this.habilitar);
                    }
                    //Si no es válida la edición
                    else
                    {
                        resultado = new RetornoOperacion("El estatus de la asignación no permite la actualización del periodo.");
                    }
                }
            }

            //Devolviendo resultado
            return(resultado);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Metodo encargado de terminar el periodo ligado a la actividad
        /// </summary>
        /// <param name="fecha"></param>
        /// <param name="id_usuario"></param>
        /// <returns></returns>
        public RetornoOperacion TerminaActividadPeriodo(DateTime fecha, int id_usuario)
        {
            //Declarando variable de retorno
            RetornoOperacion resultado = new RetornoOperacion();

            //Instanciamos la actividad
            using (ActividadAsignacion actividad = new ActividadAsignacion(_id_actividad_asignacion))
            {
                //Validando que la actividad no se encuentre terminada aún
                if (actividad.Estatus != ActividadAsignacion.EstatusAsignacionActividad.Terminada)
                {
                    //Validamos Resultado
                    if (this._inicio_periodo > this._fin_periodo)
                    {
                        //Instanciamos al tipo de periodo
                        using (TipoPeriodoAsignacion tipo = new TipoPeriodoAsignacion(this._id_tipo_periodo))
                        {
                            //Creamos la transacción
                            using (System.Transactions.TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted))
                            {
                                //Terminamos el periodo
                                resultado = this.editaActividadPeriodo(this.id_actividad_asignacion, this.id_tipo_periodo, this.inicio_periodo, fecha, 0, id_usuario, this.habilitar);

                                //Si el resultado de la actualizacion es correcto
                                if (resultado.OperacionExitosa)
                                {
                                    //Si el tipo de periodo es negativo
                                    if (tipo.signo == -1)
                                    {
                                        //Realizamos la activacion de la actividad
                                        resultado = actividad.CambiaEstatusActividadAsignacion(ActividadAsignacion.EstatusAsignacionActividad.Iniciada, id_usuario);
                                    }

                                    //Validamos Resultado
                                    if (resultado.OperacionExitosa)
                                    {
                                        //Terminamos transacción
                                        scope.Complete();
                                    }
                                }
                            }
                        }
                    }
                    else    //Establecemos Mesaje Error
                    {
                        resultado = new RetornoOperacion("La fecha de inicio del periodo " + this._inicio_periodo.ToString("dd/MM/yyyy HH:mm") + " debe ser mayor a la fecha de fin del periodo " + this._fin_periodo.ToString("dd/MM/yyyy HH:mm") + ".");
                    }
                }
                else
                {
                    resultado = new RetornoOperacion("Imposible actualizar, la asignación ya se encuentra terminada.");
                }
            }

            //Devolvinedo resultado
            return(resultado);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Metodo encargado de deshabilitar el periodo ligado a la actividad
        /// </summary>
        /// <param name="id_usuario">Id de usuario</param>
        /// <returns></returns>
        public RetornoOperacion DeshabilitaActividadPeriodo(int id_usuario)
        {
            //Declarando variable de retorno
            RetornoOperacion resultado = new RetornoOperacion();

            //Instanciamos al tipo de periodo
            using (TipoPeriodoAsignacion t = new TipoPeriodoAsignacion(this._id_tipo_periodo))
            {
                //Instanciamos la actividad
                using (ActividadAsignacion actividad = new ActividadAsignacion(id_actividad_asignacion))
                {
                    //Si la actividad no se ha cerrado aún y el periodo es negativo (pausa)
                    //O si el periodo no implica actualización sobre la asignación y la actividad
                    if ((actividad.Estatus != ActividadAsignacion.EstatusAsignacionActividad.Terminada && t.signo < 0) ||
                        t.signo > 0)
                    {
                        //Creamos la transacción
                        using (System.Transactions.TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted))
                        {
                            //Deshabilitando el periodo
                            resultado = this.editaActividadPeriodo(this.id_actividad_asignacion, this.id_tipo_periodo, this.inicio_periodo, this.fin_periodo, 0, id_usuario, false);

                            //Si el resultado de la actualizacion es correcto
                            if (resultado.OperacionExitosa)
                            {
                                //Si el tipo de periodo es negativo
                                if (t.signo == -1 && this._fin_periodo.CompareTo(DateTime.MinValue) == 0)
                                {
                                    //Realizamos la activacion de la actividad
                                    resultado = actividad.CambiaEstatusActividadAsignacion(ActividadAsignacion.EstatusAsignacionActividad.Iniciada, id_usuario);

                                    //Validamos Resultado
                                    if (resultado.OperacionExitosa)
                                    {
                                        scope.Complete();
                                    }
                                }
                            }
                        }
                    }
                    //De lo contrario
                    else
                    {
                        resultado = new RetornoOperacion("El estatus de la asignación de actividad no permite esta actualización.");
                    }
                }
            }

            //Devolviendo resultado
            return(resultado);
        }