/// <summary>
        /// Permite registrar o actualizar Indicadores
        /// </summary>
        /// <param name="data">Datos a registrar</param>
        /// <returns>Indicador con el resultado de la operación</returns>
        public JsonResult RegistrarIndicadorEvaluacion(IndicadorEvaluacionRequest data)
        {
            data.CodigoIdioma = obtenerCodigoIdioma();
            var response = indicadorEvaluacionService.RegistrarIndicadorEvaluacion(data);

            return(Json(response));
        }
        public JsonResult BuscarIndicadorEvaluacion(IndicadorEvaluacionRequest filtro)
        {
            filtro.CodigoIdioma = obtenerCodigoIdioma();
            var response = indicadorEvaluacionService.BuscarIndicadorEvaluacion(filtro);

            return(Json(response));
        }
        public ProcessResult <object> EliminarIndicadorEvaluacion(IndicadorEvaluacionRequest data)
        {
            ProcessResult <object> resultado = new ProcessResult <object>();

            resultado.Result = string.Empty;
            try
            {
                IndicadorEvaluacionEntity oIndicadorEvaluacionEntity = indicadorEvaluacionEntityRepository.GetById(data.CodigoIndicadorEvaluacion);

                if (oIndicadorEvaluacionEntity != null)
                {
                    indicadorEvaluacionEntityRepository.Eliminar(oIndicadorEvaluacionEntity.CodigoIndicadorEvaluacion);
                    resultado.IsSuccess = true;
                    indicadorEvaluacionEntityRepository.GuardarCambios();
                }
            }
            catch (Exception ex)
            {
                resultado.Exception = new ApplicationLayerException <AreaService>(ex.Message);
            }
            return(resultado);
        }
        public ProcessResult <IndicadorEvaluacionResponse> RegistrarIndicadorEvaluacion(IndicadorEvaluacionRequest data)
        {
            ProcessResult <IndicadorEvaluacionResponse> resultado = new ProcessResult <IndicadorEvaluacionResponse>();

            resultado.Result = new IndicadorEvaluacionResponse();
            try
            {
                using (TransactionScope ts = new TransactionScope())
                {
                    IndicadorEvaluacionEntity indicadorEvaluacionSincronizar = indicadorEvaluacionEntityRepository.GetById(data.CodigoIndicadorEvaluacion);
                    IndicadorEvaluacionEntity indicadorEvaluacionGeneral     = Mapper.Map <IndicadorEvaluacionRequest, IndicadorEvaluacionEntity>(data);

                    var indicadorEvaluacion = BuscarIndicadorEvaluacion(data);

                    if (indicadorEvaluacion.Result.Count > 0)
                    {
                        for (int i = 0; i < indicadorEvaluacion.Result.Count; i++)
                        {
                            if (indicadorEvaluacion.Result[0].EstadoRegistro == DatosConstantes.EstadoRegistro.Activo)
                            {
                                resultado.IsSuccess = false;
                                resultado.Exception = new ApplicationLayerException <IndicadorMetaService>(MensajesSistemaResource.ViolacionRegistro);
                                break;
                            }
                            else
                            {
                                if (indicadorEvaluacionSincronizar != null)
                                {
                                    Mapper.Map <IndicadorEvaluacionEntity, IndicadorEvaluacionEntity>(indicadorEvaluacionGeneral, indicadorEvaluacionSincronizar);
                                    indicadorEvaluacionEntityRepository.Editar(indicadorEvaluacionSincronizar);
                                    resultado.Result.CodigoIndicadorEvaluacion = data.CodigoIndicadorEvaluacion;
                                    resultado.Result.CodigoIndicador           = data.CodigoIndicador;
                                }
                                else
                                {
                                    indicadorEvaluacionEntityRepository.Insertar(indicadorEvaluacionGeneral);
                                    bool registroExitoso = resultado.IsSuccess;
                                    if (!registroExitoso)
                                    {
                                        resultado.IsSuccess = false;
                                        resultado.Exception = new ApplicationLayerException <IndicadorEvaluacionService>(MensajesSistemaResource.EtiquetaError);
                                    }
                                    resultado.Result.CodigoIndicadorEvaluacion = indicadorEvaluacionGeneral.CodigoIndicadorEvaluacion;
                                    resultado.Result.CodigoIndicador           = indicadorEvaluacionGeneral.CodigoIndicador;
                                }
                            }
                        }
                    }
                    else
                    {
                        if (indicadorEvaluacionSincronizar != null)
                        {
                            Mapper.Map <IndicadorEvaluacionEntity, IndicadorEvaluacionEntity>(indicadorEvaluacionGeneral, indicadorEvaluacionSincronizar);
                            indicadorEvaluacionEntityRepository.Editar(indicadorEvaluacionSincronizar);
                            resultado.Result.CodigoIndicadorEvaluacion = data.CodigoIndicadorEvaluacion;
                            resultado.Result.CodigoIndicador           = data.CodigoIndicador;
                        }
                        else
                        {
                            indicadorEvaluacionEntityRepository.Insertar(indicadorEvaluacionGeneral);
                            bool registroExitoso = resultado.IsSuccess;
                            if (!registroExitoso)
                            {
                                resultado.IsSuccess = false;
                                resultado.Exception = new ApplicationLayerException <IndicadorEvaluacionService>(MensajesSistemaResource.EtiquetaError);
                            }
                            resultado.Result.CodigoIndicadorEvaluacion = indicadorEvaluacionGeneral.CodigoIndicadorEvaluacion;
                            resultado.Result.CodigoIndicador           = indicadorEvaluacionGeneral.CodigoIndicador;
                        }
                    }
                    indicadorEvaluacionEntityRepository.GuardarCambios();
                    ts.Complete();
                }
            }
            catch (Exception ex)
            {
                resultado.IsSuccess = false;
                resultado.Exception = new ApplicationLayerException <IndicadorEvaluacionService>(ex.Message);
            }
            return(resultado);
        }
        /// <summary>
        /// Permite obtener el listado de Inspecciones
        /// </summary>
        /// <param name="data">Datos a registrar</param>
        /// <returns>Indicador con el resultado de la operación</returns>
        public ProcessResult <List <IndicadorEvaluacionResponse> > BuscarIndicadorEvaluacion(IndicadorEvaluacionRequest filtro)
        {
            ProcessResult <List <IndicadorEvaluacionResponse> > resultado = new ProcessResult <List <IndicadorEvaluacionResponse> >();

            try
            {
                List <IndicadorEvaluacionLogic> listado = IndicadorEvaluacionLogicRepository.BuscarIndicadorEvaluacion(
                    filtro.CodigoIndicadorEvaluacion,
                    filtro.CodigoIndicador,
                    filtro.Anio,
                    filtro.CodigoSubTipoPeriodicidad,
                    Guid.Parse(DatosConstantes.Empresa.CodigoElectroPeru),
                    Guid.Parse(DatosConstantes.Sistema.CodigoSGI),
                    filtro.CodigoIdioma,
                    DatosConstantes.EstadoRegistro.Activo,
                    filtro.NumeroPagina,
                    filtro.RegistrosPagina);

                resultado.Result = new List <IndicadorEvaluacionResponse>();

                Mapper.Map <List <IndicadorEvaluacionLogic>, List <IndicadorEvaluacionResponse> >(listado, resultado.Result);
            }
            catch (Exception e)
            {
                resultado.IsSuccess = false;
                resultado.Exception = new ApplicationLayerException <IndicadorEvaluacionService>(e.Message);
            }

            return(resultado);
        }
        /// <summary>
        /// Permite anular una Inspección
        /// </summary>
        /// <param name="">Entidad Observacion Planeada</param>
        /// <returns>valor booleano con el resultado de la operacion</returns>
        public JsonResult EliminarIndicadorEvaluacion(IndicadorEvaluacionRequest data)
        {
            var response = indicadorEvaluacionService.EliminarIndicadorEvaluacion(data);

            return(Json(response));
        }