/// <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); }
/// <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); }