//[HttpPost]
        //public JsonResult Guardar(VMIndicadorDetalle formMantenimiento)
        //{
        //    if (base.ModelState.IsValid)
        //    {
        //        if (Session[SessionIndicadorDetalle] != null)
        //            listaIndicadorDetalleSession = (List<IndicadorDetalleLogic>)Session[SessionIndicadorDetalle];

        //        foreach (IndicadorDetalleLogic indicadorDetalle in listaIndicadorDetalleSession)
        //        {
        //            indicadorDetalle.InfoMovs = formMantenimiento.IndicadorDetalle.InfoMovs;
        //            indicadorDetalle.UsuarioCreacion = formMantenimiento.IndicadorDetalle.UsuarioModificacion = Login.Obtener.Usuario.Login();
        //            formMantenimiento.IndicadorDetalle = indicadorDetalle;

        //            formMantenimiento.IndicadorDetalle.UsuarioCreacion = formMantenimiento.IndicadorDetalle.UsuarioModificacion = Login.Obtener.Usuario.Login();
        //            formMantenimiento.IndicadorDetalle.CodigoTipoRegistro = Enums.TipoRegistro.Meta;

        //            IndicadorLogic indicador = _IndicadorAppService.Obtener(formMantenimiento.IndicadorDetalle.CodigoIndicador);

        //            if (indicador.CodigoPeriodicidadValor == 0)
        //            {
        //                formMantenimiento.IndicadorDetalle.FechaPeriodo = Convert.ToDateTime(formMantenimiento.IndicadorDetalle.Anio);
        //            }
        //            else if (indicador.CodigoPeriodicidadValor == 99)
        //            {
        //                ParametroDetalleLogic periodicidad = _ParametroDetalleAppService.Obtener(Enums.Parametro.TipoPeriodicidad, indicador.CodigoPeriodicidad.ToString());
        //                formMantenimiento.IndicadorDetalle.FechaPeriodo = Convert.ToDateTime(periodicidad.Valor + formMantenimiento.IndicadorDetalle.Anio);
        //            }
        //            else
        //            {
        //                ParametroDetalleLogic periodicidad = _ParametroDetalleAppService.Obtener(indicador.CodigoPeriodicidadValor, formMantenimiento.IndicadorDetalle.CodigoTipoValor.ToString());
        //                formMantenimiento.IndicadorDetalle.FechaPeriodo = Convert.ToDateTime(periodicidad.Valor + formMantenimiento.IndicadorDetalle.Anio);
        //            }

        //            if (formMantenimiento.IndicadorDetalle.InfoMovs.ACCION == Enums.Action.New)
        //                appResponse = _IndicadorDetalleAppService.MantenimientoNuevo(new List<IndicadorDetalleLogic> { formMantenimiento.IndicadorDetalle });
        //            else appResponse = _IndicadorDetalleAppService.MantenimientoEditar(new List<IndicadorDetalleLogic> { formMantenimiento.IndicadorDetalle });
        //        }
        //    }
        //    else
        //    {
        //        appResponse = GetModelStateErrors();
        //    }
        //    return Json(appResponse);
        //}

        public JsonResult ActualizarValor(int codigoIndicadorDetalle, int codigoAlineamientoEstrategico, decimal valor, int codigoIndicador, int codigoTipoValor, int codigoTipoRegistro, int anio, string comentario)
        {
            IndicadorDetalle = new IndicadorDetalleLogic();
            if (codigoIndicadorDetalle > 0)
            {
                IndicadorDetalle = _IndicadorDetalleAppService.Obtener(codigoIndicadorDetalle);
                IndicadorDetalle.CodigoIndicadorDetalle = codigoIndicadorDetalle;
            }
            else
            {
                IndicadorDetalle.CodigoIndicador               = codigoIndicador;
                IndicadorDetalle.CodigoTipoValor               = codigoTipoValor;
                IndicadorDetalle.CodigoTipoRegistro            = codigoTipoRegistro;
                IndicadorDetalle.CodigoAlineamientoEstrategico = codigoAlineamientoEstrategico;

                IndicadorLogic indicador = _IndicadorAppService.Obtener(IndicadorDetalle.CodigoIndicador);

                if (indicador.CodigoPeriodicidadValor == 0)
                {
                    IndicadorDetalle.FechaPeriodo = Convert.ToDateTime(anio);
                }
                else if (indicador.CodigoPeriodicidadValor == 99)
                {
                    ParametroDetalleLogic periodicidad = _ParametroDetalleAppService.Obtener(Enums.Parametro.TipoPeriodicidad, indicador.CodigoPeriodicidad.ToString());
                    IndicadorDetalle.FechaPeriodo = Convert.ToDateTime(periodicidad.Valor + anio);
                }
                else
                {
                    ParametroDetalleLogic periodicidad = _ParametroDetalleAppService.Obtener(indicador.CodigoPeriodicidadValor, IndicadorDetalle.CodigoTipoValor.ToString());
                    IndicadorDetalle.FechaPeriodo = Convert.ToDateTime(periodicidad.Valor + anio);
                }
            }

            IndicadorDetalle.Valor           = valor;
            IndicadorDetalle.Comentario      = comentario;
            IndicadorDetalle.Estado          = true;
            IndicadorDetalle.UsuarioCreacion = IndicadorDetalle.UsuarioModificacion = Login.Obtener.Usuario.Login();
            IndicadorDetalle.CodigoTipoPlan  = Enums.TipoPlan.PlanEjecucion;

            if (codigoIndicadorDetalle > 0)
            {
                appResponse = _IndicadorDetalleAppService.MantenimientoEditar(new List <IndicadorDetalleLogic> {
                    IndicadorDetalle
                });
            }
            else
            {
                appResponse = _IndicadorDetalleAppService.MantenimientoNuevo(new List <IndicadorDetalleLogic> {
                    IndicadorDetalle
                }, new List <VariableFormulaLogic>());
            }

            return(Json(appResponse));
        }
        public ActionResult Mantenimiento(long codigo = 0)
        {
            if (Session[SessionIndicadorDetalle] != null)
            {
                Session[SessionIndicadorDetalle] = null;
            }

            if (Session[SessionContadorIndicadorDet] != null)
            {
                Session[SessionContadorIndicadorDet] = null;
            }

            List <ParametroDetalleLogic> listaGuiaEmpresarial = new List <ParametroDetalleLogic>();

            if (codigo > 0)
            {
                IndicadorDetalle          = _IndicadorDetalleAppService.Obtener(codigo);
                IndicadorDetalle.InfoMovs = new InfoMovs {
                    ACCION = Enums.Action.Edit
                };
            }
            else
            {
                IndicadorDetalle.Estado = true;
            }

            vmIndicadorDetalle.IndicadorDetalle = IndicadorDetalle;

            List <ParametroDetalleLogic> listaTipoValor = new List <ParametroDetalleLogic>();

            listaTipoValor.AddRange(_ParametroDetalleAppService.Listar(IndicadorDetalle.CodigoPeriodicidadValor).Where(x => x.Estado).ToList());
            listaTipoValor.Insert(0, new ParametroDetalleLogic {
                CodigoElemento = "0", Nombre = Enums.ComboDefault.Seleccione
            });
            ViewBag.listaTipoValor = listaTipoValor;

            List <ParametroDetalleLogic> listaTipoRegistro = new List <ParametroDetalleLogic>();

            listaTipoRegistro.AddRange(_ParametroDetalleAppService.Listar(Enums.Parametro.TipoRegistro).Where(x => x.Estado).ToList());
            listaTipoRegistro.Insert(0, new ParametroDetalleLogic {
                CodigoElemento = "0", Nombre = Enums.ComboDefault.Seleccione
            });
            ViewBag.listaTipoRegistro = listaTipoRegistro;

            listaGuiaEmpresarial.AddRange(_ParametroDetalleAppService.Listar(Enums.Parametro.TipoGuiaEmpresarial).ToList().Where(x => x.Estado));
            listaGuiaEmpresarial.Insert(0, new ParametroDetalleLogic {
                CodigoElemento = "0", Nombre = Enums.ComboDefault.Seleccione
            });
            ViewBag.listaGuiaEmpresarial = listaGuiaEmpresarial;

            return(PartialView(vmIndicadorDetalle));
        }
        public ActionResult CargarPeriodicidad(long CodigoIndicador, int CodigoIndicadorDetalle)
        {
            List <ParametroDetalleLogic> listaTipoValor = new List <ParametroDetalleLogic>();
            IndicadorLogic        indicador             = _IndicadorAppService.Obtener(CodigoIndicador);
            IndicadorDetalleLogic indicadorDetalle      = new IndicadorDetalleLogic();

            if (CodigoIndicadorDetalle > 0)
            {
                indicadorDetalle = _IndicadorDetalleAppService.Obtener(CodigoIndicadorDetalle);
            }

            if (CodigoIndicador > 0 && indicador != null)
            {
                listaTipoValor = _ParametroDetalleAppService.Listar(indicador.CodigoPeriodicidadValor).Where(x => x.Estado).ToList();
                indicadorDetalle.listaTipoValor          = listaTipoValor;
                indicadorDetalle.CodigoPeriodicidadValor = indicador.CodigoPeriodicidadValor;
                indicadorDetalle.Periodicidad            = indicador.TipoPeriodicidad;
                indicadorDetalle.UnidadMedida            = indicador.UnidadMedida;
            }

            return(Json(indicadorDetalle, JsonRequestBehavior.AllowGet));
        }
        public IndicadorDetalleLogic Obtener(float codigo)
        {
            IndicadorDetalleLogic entidadLogic = new IndicadorDetalleLogic();

            try
            {
                SQLServer.OpenConection();
                SQLServer.CreateCommand("MOV.USP_SEL_INDICADOR_DETALLE_OBTENER", CommandType.StoredProcedure,
                                        SQLServer.CreateParameter("CODIGO_INDICADOR_DETALLE", SqlDbType.BigInt, codigo));
                using (IDataReader oReader = SQLServer.GetDataReader(CommandBehavior.CloseConnection))
                {
                    entidadLogic = new GenericInstance <IndicadorDetalleLogic>().readDataReader(oReader);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                SQLServer.CloseConection();
            }
            return(entidadLogic);
        }
        //[HttpPost]
        //public JsonResult Guardar(VMIndicadorDetalle formMantenimiento)
        //{
        //    if (base.ModelState.IsValid)
        //    {
        //        if (Session[SessionIndicadorDetalle] != null)
        //            listaIndicadorDetalleSession = (List<IndicadorDetalleLogic>)Session[SessionIndicadorDetalle];

        //        foreach (IndicadorDetalleLogic indicadorDetalle in listaIndicadorDetalleSession)
        //        {
        //            indicadorDetalle.InfoMovs = formMantenimiento.IndicadorDetalle.InfoMovs;
        //            indicadorDetalle.UsuarioCreacion = formMantenimiento.IndicadorDetalle.UsuarioModificacion = Login.Obtener.Usuario.Login();
        //            formMantenimiento.IndicadorDetalle = indicadorDetalle;

        //            formMantenimiento.IndicadorDetalle.UsuarioCreacion = formMantenimiento.IndicadorDetalle.UsuarioModificacion = Login.Obtener.Usuario.Login();
        //            formMantenimiento.IndicadorDetalle.CodigoTipoRegistro = Enums.TipoRegistro.Meta;

        //            IndicadorLogic indicador = _IndicadorAppService.Obtener(formMantenimiento.IndicadorDetalle.CodigoIndicador);

        //            if (indicador.CodigoPeriodicidadValor == 0)
        //            {
        //                formMantenimiento.IndicadorDetalle.FechaPeriodo = Convert.ToDateTime(formMantenimiento.IndicadorDetalle.Anio);
        //            }
        //            else if (indicador.CodigoPeriodicidadValor == 99)
        //            {
        //                ParametroDetalleLogic periodicidad = _ParametroDetalleAppService.Obtener(Enums.Parametro.TipoPeriodicidad, indicador.CodigoPeriodicidad.ToString());
        //                formMantenimiento.IndicadorDetalle.FechaPeriodo = Convert.ToDateTime(periodicidad.Valor + formMantenimiento.IndicadorDetalle.Anio);
        //            }
        //            else
        //            {
        //                ParametroDetalleLogic periodicidad = _ParametroDetalleAppService.Obtener(indicador.CodigoPeriodicidadValor, formMantenimiento.IndicadorDetalle.CodigoTipoValor.ToString());
        //                formMantenimiento.IndicadorDetalle.FechaPeriodo = Convert.ToDateTime(periodicidad.Valor + formMantenimiento.IndicadorDetalle.Anio);
        //            }

        //            if (formMantenimiento.IndicadorDetalle.InfoMovs.ACCION == Enums.Action.New)
        //                appResponse = _IndicadorDetalleAppService.MantenimientoNuevo(new List<IndicadorDetalleLogic> { formMantenimiento.IndicadorDetalle });
        //            else appResponse = _IndicadorDetalleAppService.MantenimientoEditar(new List<IndicadorDetalleLogic> { formMantenimiento.IndicadorDetalle });
        //        }
        //    }
        //    else
        //    {
        //        appResponse = GetModelStateErrors();
        //    }
        //    return Json(appResponse);
        //}

        public JsonResult ActualizarValor(int codigoIndicadorDetalle, int codigoAlineamientoEstrategico, decimal valor, int codigoIndicador, int codigoTipoValor, int codigoTipoRegistro, int anio, string comentario, int tipoValor)
        {
            IndicadorDetalle = new IndicadorDetalleLogic();
            if (codigoIndicadorDetalle > 0)
            {
                IndicadorDetalle = _IndicadorDetalleAppService.Obtener(codigoIndicadorDetalle);
                IndicadorDetalle.CodigoIndicadorDetalle = codigoIndicadorDetalle;
            }
            else
            {
                IndicadorDetalle.CodigoIndicador               = codigoIndicador;
                IndicadorDetalle.CodigoTipoValor               = codigoTipoValor;
                IndicadorDetalle.CodigoTipoRegistro            = codigoTipoRegistro;
                IndicadorDetalle.CodigoAlineamientoEstrategico = codigoAlineamientoEstrategico;

                ParametroDetalleLogic periodicidad = _ParametroDetalleAppService.Obtener(Enums.Parametro.Trimestre, IndicadorDetalle.CodigoTipoValor.ToString());
                IndicadorDetalle.FechaPeriodo = Convert.ToDateTime(periodicidad.Valor + anio);
            }

            if (tipoValor == 1)
            {
                IndicadorDetalle.Valor      = valor;
                IndicadorDetalle.Comentario = comentario;
            }
            else if (tipoValor == 2)
            {
                IndicadorDetalle.ValorAl      = valor;
                IndicadorDetalle.ComentarioAl = comentario;
            }
            IndicadorDetalle.Estado          = true;
            IndicadorDetalle.UsuarioCreacion = IndicadorDetalle.UsuarioModificacion = Login.Obtener.Usuario.Login();
            IndicadorDetalle.CodigoTipoPlan  = Enums.TipoPlan.PlanOperativo;

            if (codigoIndicadorDetalle > 0)
            {
                IndicadorDetalleHistoricoLogic objIndicadorDetalleHistorico = new IndicadorDetalleHistoricoLogic {
                    CodigoIndicadorDetalleHistorico = 0,
                    CodigoIndicadorDetalle          = IndicadorDetalle.CodigoIndicadorDetalle,
                    Formula          = IndicadorDetalle.Formula,
                    Valor            = IndicadorDetalle.Valor,
                    ValorAl          = IndicadorDetalle.ValorAl,
                    Comentario       = IndicadorDetalle.Comentario,
                    ComentarioAl     = IndicadorDetalle.ComentarioAl,
                    FechaPeriodo     = IndicadorDetalle.FechaPeriodo,
                    Estado           = true,
                    FechaCreacion    = DateTime.Now,
                    UsuarioCreacion  = Login.Obtener.Usuario.Login(),
                    terminalCreacion = Login.Obtener.Usuario.Login()
                };


                appResponse = _IndicadorDetalleAppService.MantenimientoEliminar(new List <IndicadorDetalleLogic> {
                    IndicadorDetalle
                });
                if (appResponse.Code == "S")
                {
                    appResponse = _IndicadorDetalleAppService.MantenimientoNuevo(new List <IndicadorDetalleLogic> {
                        IndicadorDetalle
                    }, new List <VariableFormulaLogic>());
                }
                if (appResponse.Code == "S")
                {
                    appResponse = _IndicadorDetalleAppService.MantenimientoHistoricoNuevo(new List <IndicadorDetalleHistoricoLogic> {
                        objIndicadorDetalleHistorico
                    }, new List <VariableFormulaHistoricoLogic>());
                }

                //appResponse = _IndicadorDetalleAppService.MantenimientoEditar(new List<IndicadorDetalleLogic> { IndicadorDetalle });
            }
            else
            {
                appResponse = _IndicadorDetalleAppService.MantenimientoNuevo(new List <IndicadorDetalleLogic> {
                    IndicadorDetalle
                }, new List <VariableFormulaLogic>());
            }
            return(Json(appResponse));
        }