public CGInfoActividades()
        {
        IdPlantilla = 40;//NUMERO DE PLANTILLA
        oInfo = new INT_INFOCONT();

        lep = new List<vDocInfoActividades>();
        }
        protected override bool ObtenerDocumento()
        {
            int idInfo = Convert.ToInt32(this.IdDocumento);
            var q = ctx.INT_INFOCONT.Where(t => t.ID == idInfo).FirstOrDefault();
            oInfo = q;
            if (oInfo != null)
            {
                vDocInfoActividades oinfoCont = new vDocInfoActividades
                {
                    Numero = oInfo.CONTRATOS.COD_CON,
                    Tipo = oInfo.CONTRATOS.TIPOSCONT.NOM_TIP + " " + oInfo.CONTRATOS.SUBTIPOS.NOM_STIP,
                    Objeto = oInfo.CONTRATOS.OBJ_CON,
                    Fecha_Suscripcion = oInfo.CONTRATOS.FEC_SUS_CON,
                    Valor_Contrato = oInfo.CONTRATOS.VAL_CON,
                    DependenciaNec = oInfo.CONTRATOS.DEPENDENCIA.NOM_DEP,
                    DependenciaDel = oInfo.CONTRATOS.DEPENDENCIA1.NOM_DEP,
                    Contratista = buildNomTer(oInfo.CONTRATOS.TERCEROS),
                    Ide_Contratista = oInfo.CONTRATOS.IDE_CON,
                    Dep_Nec = oInfo.CONTRATOS.DEP_CON,
                    Dep_Del = oInfo.CONTRATOS.DEP_PCON,
                    Vigencia = oInfo.CONTRATOS.VIG_CON,
                    Estado = oInfo.CONTRATOS.ESTADOS.ESTADO,
                    Cod_STip = oInfo.CONTRATOS.STIP_CON,
                    Cod_Tip = oInfo.CONTRATOS.TIP_CON,
                    NroProceso = oInfo.CONTRATOS.PRO_SEL_NRO,
                    Nom_Modalidad = buildModalidad(oInfo.CONTRATOS.COD_TPRO),
                    Ide_RepLegal = oInfo.CONTRATOS.IDE_REP,
                    Nom_RepLegal = buildTercero(oInfo.CONTRATOS.IDE_REP),
                    CONTRATISTA_C2 = buildContratistaC2(oInfo.CONTRATOS),
                    Ide_Interventor = oInfo.CONTRATOS.INTERVENTORES_CONTRATO.Where(t => t.EST_INT == "AC").Select(t => t.IDE_INT).FirstOrDefault(),
                    Nom_Interventor = buildTercero(oInfo.CONTRATOS.INTERVENTORES_CONTRATO.Where(t => t.EST_INT == "AC").Select(t => t.IDE_INT).FirstOrDefault()),
                    ID = oInfo.ID,
                    FEC_INF = oInfo.FEC_INF,
                    DES_INF = oInfo.DES_INF,
                    NOT_INF = oInfo.NOT_INF,
                    NOT2_INF = oInfo.NOT2_INF,
                    FEC_INI = oInfo.FEC_INI,
                    FEC_FIN = oInfo.FEC_FIN
                };

                lep.Add(oinfoCont);
            }
            return (q != null);
        }
            protected override bool esValido()
            {

                oContrato = ctx.CONTRATOS.Find(oDto.COD_CON);
                oInfo = ctx.INT_INFOCONT.Find(oDto.IDE_INF);
                if (oContrato==null)
                {
                    byaRpt.Mensaje = "No se encuentra el contrato relacionado";
                    byaRpt.Error = false;
                    return byaRpt.Error;
                }
                if (oInfo==null)
                {
                    byaRpt.Mensaje = "No se encuentra el informe relacionado";
                    byaRpt.Error = false;
                    return byaRpt.Error;
                }
                else
                {
                    if (!(oInfo.EST_INF == "AC" || oInfo.EST_INF == "BO"))
                    {

                        byaRpt.Mensaje = "No se puede anular porque el Informe asociado ya fue revisado y aceptado por el supervisor";
                        byaRpt.Error = false;
                        return byaRpt.Error;
                    }
                    return true;
                }

            }
            protected override bool esValido()
            {

                e = ctx.INT_INFOCONT.Where(t => t.ID == oDto.ID).FirstOrDefault();
                byaRpt.id=oDto.ID.ToString();
                if (e == null)
                {
                    byaRpt.Mensaje = "No se encuentra el informe ";
                    byaRpt.Error = true;
                    return !byaRpt.Error;
                }
                else
                {
                    if (e.EST_INF == "RV")
                    {
                        byaRpt.Mensaje = "El Informe no se puede modificar, ya fue revisado y aceptado por el supervisor";
                        byaRpt.Error = true;
                        return !byaRpt.Error;
                    }
                    else
                    {
                        if (oDto.DES_INF == "")
                        {
                            byaRpt.Mensaje = "Debe escribir el resumen del Informe";
                            byaRpt.Error = true;
                            return !byaRpt.Error;
                        }
                        if (oDto.VAL_PAG < 0)
                        {
                            byaRpt.Mensaje = "El valor a pagar debe ser mayor a 0";
                            byaRpt.Error = true;
                            return !byaRpt.Error;
                        }
                        if (oDto.CAN_HOJ < 1)
                        {
                            byaRpt.Mensaje = "Debe especificar el N° de Folios";
                            byaRpt.Error = true;
                            return !byaRpt.Error;
                        }
                        if (oDto.FEC_INI > oDto.FEC_FIN)
                        {
                            byaRpt.Mensaje = "La fecha final del informe debe ser mayor a la fecha inicial ";
                            byaRpt.Error = true;
                            return !byaRpt.Error;
                        }
                        if (oDto.EST_INF == "AC")//si lo voy a activar
                        {
                            
                            //Si es un informe para solicitar un pago
                            if (e.VAL_PAG > 0)
                            {
                                //SALUD
                                    //Al menos un soporte de Salud
                                    if (e.INT_PAGOSST.Where(t => t.ESTADO != "AN").Count() == 0)
                                    {
                                        byaRpt.Mensaje = "El informe no se puede Activar para la revisión del Supevisor, No ha asociado el pago de salud.";
                                        byaRpt.Error = true;
                                        return !byaRpt.Error;
                                    }
                                    //Al menos un soporte de Salud
                                    if (e.GD_DOC_ACTAS.Where(t => t.TIP_DOC == "66").Count() > 0)
                                    {
                                        byaRpt.Mensaje = "El informe no se puede Activar para la revisión del Supevisor, No ha asociado el documento soporte del pago de salud.";
                                        byaRpt.Error = true;
                                        return !byaRpt.Error;
                                    }
                                //FACTURA  
                                    if (e.OBL_FAC == "SI")
                                    {
                                        //se verifica que halla subido el soporte de la factura
                                        if (e.GD_DOC_ACTAS.Where(t => t.TIP_DOC == "67").Count() > 0)
                                        {
                                            byaRpt.Mensaje = "El informe no se puede Activar para la revisión del Supevisor, No ha asociado el documento soporte de la factura.";
                                            byaRpt.Error = true;
                                            return !byaRpt.Error;
                                        }
                                    }
                                //VALIDAR SI ES PERSONA JURIDICA
                                //e.CONTRATOS.TERCEROS_1.TIP_IDE
                            }
                        }
                    }
                    
                    
                    return true;
                }

            }
 protected override void Antes()
 {
  
     e = new INT_INFOCONT();
     Mapper.CreateMap< vINT_INFOCONT,INT_INFOCONT>();
     Mapper.Map(oDto, e);
     e.FE_REG = DateTime.Now;
     e.ID = ObtenerID();
     e.NUM_INF = ObtenerNUM_INF();
     ctx.INT_INFOCONT.Add(e);
     byaRpt.id = e.NUM_INF.ToString();
     byaRpt.Error = false;
 }
        protected override bool esValido()
        {
            oActa = oActaP;//Se asignan el objeto con todos los datos.
            ObtenerContrato();
            oINFO = ctx.INT_INFOCONT.Find(oActa.IDE_INF);

            if (oINFO==null)
            {
                byaRpt.Mensaje = "El informe no se encuentra en la base de datos.";
                byaRpt.Error = false;
            }
            else if (oContrato==null)
            {
                byaRpt.Mensaje = "No existe el contrato";
                byaRpt.Error = false;
            }
            else
            {
                ec = new ESTCONTRATOS();//Se instancia el Objeto
                ec.COD_CON = oActa.COD_CON;
                ec.EST_INI = oContrato.EST_CON;
                ec.EST_FIN = oActa.EST_FIN;
                ec.FEC_ENT = oActa.FEC_ACT;
                ec.VAL_PAGO = oActaP.VAL_PAGO;
                //ec.FEC_FIN = oActa.FEC_FIN;
                ec.OBS_EST = oActa.OBS_EST;
                ec.FEC_REG = DateTime.Now;
                ec.NRO_DOC = ObtenerNroDoc();
                ec.ID = ObtenerID();
                ec.ESTADO = "AC";
                ObtenerNroDoc();
                ec.USUARIO = oActa.USUARIO;
                oINFO.ID_ACTA = ec.ID;
                oINFO.EST_INF = "RV";
            }
            //VALIDAR 
            // LA FECHA DEBE SER MAYOR O IGUAL A LA FECHA DE: RP,  FEC_APR_POL o MAYOR A ULTIMA ACTTA
            if (ValidarFechaAndUltEst() && ValidarValor())
            {
                byaRpt.Mensaje = "Ya el Funcionario Tiene Asignado esta Solicitud";
                byaRpt.Error = true;
                
                return byaRpt.Error;
            }
            else
            {
                return true;
            }

        }