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

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

            resultado.Result = "-1";
            try
            {
                perspectivaDetalleEntityRepository.Eliminar(data.CodigoPerspectivaDetalle);
                resultado.Result = perspectivaDetalleEntityRepository.GuardarCambios();
            }
            catch (Exception e)
            {
                resultado.IsSuccess = false;
                resultado.Exception = new ApplicationLayerException <PerspectivaDetalleService>(e.Message);
            }
            return(resultado);
        }
        public ProcessResult <object> EliminarPerspectiva(PerspectivaRequest data)
        {
            ProcessResult <object> resultado = new ProcessResult <object>();

            resultado.Result = "-1";
            try
            {
                PerspectivaDetalleRequest oOEED = new PerspectivaDetalleRequest();
                oOEED.CodigoPerspectiva = data.CodigoPerspectiva;
                oOEED.CodigoIdioma      = data.CodigoIdioma;
                var ObjetivoEstrategicoEmpresaAsociados = perspectivaDetalleService.BuscarPerspectivaDetalle(oOEED);

                if (ObjetivoEstrategicoEmpresaAsociados.Result.Count > 0)
                {
                    for (int i = 0; i < ObjetivoEstrategicoEmpresaAsociados.Result.Count; i++)
                    {
                        if (ObjetivoEstrategicoEmpresaAsociados.Result[0].EstadoRegistro == DatosConstantes.EstadoRegistro.Activo)
                        {
                            resultado.IsSuccess = false;
                            resultado.Exception = new ApplicationLayerException <PerspectivaService>(MensajesSistemaResource.EtiquetaMsgValidacionConsistenciaPerspectiva);
                            break;
                        }
                        else
                        {
                            perspectivaEntityRepository.Eliminar(data.CodigoPerspectiva);
                            resultado.Result = perspectivaEntityRepository.GuardarCambios();
                        }
                    }
                }
                else
                {
                    perspectivaEntityRepository.Eliminar(data.CodigoPerspectiva);
                    resultado.Result = perspectivaEntityRepository.GuardarCambios();
                }
            }
            catch (Exception e)
            {
                resultado.IsSuccess = false;
                resultado.Exception = new ApplicationLayerException <PerspectivaService>(e.Message);
            }
            return(resultado);
        }
        /// <summary>
        /// Permite registrar o actualizar Inspección Contratista
        /// </summary>
        /// <param name="data">Datos a registrar</param>
        /// <returns>Indicador con el resultado de la operación</returns>
        public JsonResult EliminarPerspectivaDetalle(PerspectivaDetalleRequest data)
        {
            var response = perspectivaDetalleService.EliminarPerspectivaDetalle(data);

            return(Json(response));
        }
        public ProcessResult <PerspectivaDetalleResponse> RegistrarPerspectivaDetalle(PerspectivaDetalleRequest data)
        {
            ProcessResult <PerspectivaDetalleResponse> resultado = new ProcessResult <PerspectivaDetalleResponse>();

            resultado.Result = new PerspectivaDetalleResponse();
            try
            {
                using (TransactionScope ts = new TransactionScope())
                {
                    PerspectivaDetalleEntity PerspectivaDetalleSincronizar = perspectivaDetalleEntityRepository.GetById(data.CodigoPerspectivaDetalle);
                    PerspectivaDetalleEntity PerspectivaDetalleGeneral     = Mapper.Map <PerspectivaDetalleRequest, PerspectivaDetalleEntity>(data);

                    if (PerspectivaDetalleSincronizar != null)
                    {
                        Mapper.Map <PerspectivaDetalleEntity, PerspectivaDetalleEntity>(PerspectivaDetalleGeneral, PerspectivaDetalleSincronizar);
                        perspectivaDetalleEntityRepository.Editar(PerspectivaDetalleSincronizar);
                        resultado.Result.CodigoPerspectivaDetalle = data.CodigoPerspectivaDetalle;
                        resultado.Result.CodigoPerspectiva        = data.CodigoPerspectiva;
                    }
                    else
                    {
                        perspectivaDetalleEntityRepository.Insertar(PerspectivaDetalleGeneral);
                        bool registroExitoso = resultado.IsSuccess;
                        if (!registroExitoso)
                        {
                            resultado.IsSuccess = false;
                            resultado.Exception = new ApplicationLayerException <PerspectivaDetalleService>(MensajesSistemaResource.EtiquetaError);
                        }
                        resultado.Result.CodigoPerspectivaDetalle = PerspectivaDetalleGeneral.CodigoPerspectivaDetalle;
                        resultado.Result.CodigoPerspectiva        = PerspectivaDetalleGeneral.CodigoPerspectiva;
                    }

                    perspectivaDetalleEntityRepository.GuardarCambios();
                    ts.Complete();
                }
            }
            catch (Exception ex)
            {
                resultado.IsSuccess = false;
                resultado.Exception = new ApplicationLayerException <PerspectivaDetalleService>(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 <PerspectivaDetalleResponse> > BuscarPerspectivaDetalle(PerspectivaDetalleRequest filtro)
        {
            ProcessResult <List <PerspectivaDetalleResponse> > resultado = new ProcessResult <List <PerspectivaDetalleResponse> >();

            try
            {
                List <PerspectivaDetalleLogic> listado = perspectivaDetalleLogicRepository.BuscarPerspectivaDetalle(
                    filtro.CodigoPerspectivaDetalle,
                    filtro.CodigoPerspectiva,
                    Guid.Parse(DatosConstantes.Empresa.CodigoElectroPeru),
                    Guid.Parse(DatosConstantes.Sistema.CodigoSGI),
                    filtro.CodigoIdioma,
                    DatosConstantes.EstadoRegistro.Activo,
                    filtro.NumeroPagina,
                    filtro.RegistrosPagina);

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

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

            return(resultado);
        }