///// <summary>
        ///// Muestra el formulario de Responsable
        ///// </summary>
        ///// <param name="filtro">Filtro de búsqueda</param>
        ///// <returns>Vista del formulario Responsable</returns>
        //public ActionResult FormularioResponsable(ResponsableRequest filtro)
        //{
        //    FormularioResponsableModel modelo = new FormularioResponsableModel();

        //    filtro.CodigoIdioma = obtenerCodigoIdioma();
        //    if (filtro.CodigoResponsable != null)
        //    {
        //        modelo.Responsable = ResponsableService.BuscarResponsable(filtro).Result.First();
        //    }
        //    return PartialView(modelo);
        //}
        #endregion

        #region Json
        /// <summary>
        /// Permite la búsqueda de Responsable
        /// </summary>
        /// <param name="filtro">Filtro de búsqueda</param>
        /// <returns>Lista de Responsablees</returns>
        public JsonResult BuscarResponsable(ResponsableRequest filtro)
        {
            var listTmp = (List <PermisosSistemaModel.PermisoControlador>) this.Session[Constantes.Sesion.Permisos.Lista_PermisosControlador];
            var permiso = listTmp.Where(x => x.Controlador == "Responsable").Select(s => s.CodigoAccion).ToList()[0];

            filtro.CodigoIdioma   = obtenerCodigoIdioma();
            filtro.EstadoRegistro = filtro.EstadoRegistroDescripcion == DatosConstantes.ParametrosEstadoRegistro.Activo ? DatosConstantes.EstadoRegistro.Activo : (filtro.EstadoRegistroDescripcion == DatosConstantes.ParametrosEstadoRegistro.Inactivo ? DatosConstantes.EstadoRegistro.Inactivo : null);

            if (!string.IsNullOrEmpty(filtro.NombreGenero))
            {
                filtro.CodigoGenero = Convert.ToInt32(filtro.NombreGenero);
                filtro.NombreGenero = null;
            }

            if (!string.IsNullOrEmpty(filtro.NombreTipoDocumento))
            {
                filtro.CodigoTipoDocumento = Convert.ToInt32(filtro.NombreTipoDocumento);
                filtro.NombreTipoDocumento = null;
            }

            if (!string.IsNullOrEmpty(filtro.NombreCargo))
            {
                filtro.CodigoCargo = Convert.ToInt32(filtro.NombreCargo);
                filtro.NombreCargo = null;
            }

            var response = ResponsableService.BuscarResponsable(filtro);

            foreach (var item in response.Result)
            {
                item.Permiso = permiso;
            }

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

            try
            {
                if (!string.IsNullOrEmpty(data.CodigoResponsable.ToString()))
                {
                    ResponsableEntity oResponsableEntity = responsableEntityRepository.GetById(data.CodigoResponsable);
                    if (oResponsableEntity != null)
                    {
                        oResponsableEntity.CodigoResponsable   = data.CodigoResponsable;
                        oResponsableEntity.Nombres             = data.Nombres;
                        oResponsableEntity.ApellidoPaterno     = data.ApellidoPaterno;
                        oResponsableEntity.ApellidoMaterno     = data.ApellidoMaterno;
                        oResponsableEntity.CodigoCargo         = data.CodigoCargo;
                        oResponsableEntity.CodigoGenero        = data.CodigoGenero;
                        oResponsableEntity.CorreoElectronico   = data.CorreoElectronico;
                        oResponsableEntity.CodigoTipoDocumento = data.CodigoTipoDocumento;
                        oResponsableEntity.NumeroDocumento     = data.NumeroDocumento;
                        responsableEntityRepository.Editar(oResponsableEntity);
                        resultado.IsSuccess = true;
                        responsableEntityRepository.GuardarCambios();
                    }
                }
                else
                {
                    ResponsableEntity oResponsableEntity = new ResponsableEntity();
                    oResponsableEntity.CodigoResponsable   = Guid.NewGuid();
                    oResponsableEntity.Nombres             = data.Nombres;
                    oResponsableEntity.ApellidoPaterno     = data.ApellidoPaterno;
                    oResponsableEntity.ApellidoMaterno     = data.ApellidoMaterno;
                    oResponsableEntity.CodigoCargo         = data.CodigoCargo;
                    oResponsableEntity.CodigoGenero        = data.CodigoGenero;
                    oResponsableEntity.CorreoElectronico   = data.CorreoElectronico;
                    oResponsableEntity.CodigoTipoDocumento = data.CodigoTipoDocumento;
                    oResponsableEntity.NumeroDocumento     = data.NumeroDocumento;
                    responsableEntityRepository.Insertar(oResponsableEntity);
                    resultado.IsSuccess = true;
                    responsableEntityRepository.GuardarCambios();
                }
            }
            catch (Exception ex)
            {
                resultado.Exception = new ApplicationLayerException <ResponsableService>(ex.Message);
            }
            return(resultado);
        }
        /// <summary>
        /// Muestra el popup de búsqueda de Responsablees
        /// </summary>
        /// <returns>Vista Parcial</returns>
        public ActionResult FormularioBuscarResponsable(ResponsableRequest filtro)
        {
            FormularioResponsableModel modelo = new FormularioResponsableModel();

            filtro.EstadoRegistro = filtro.EstadoRegistroDescripcion == DatosConstantes.ParametrosEstadoRegistro.Activo ? DatosConstantes.EstadoRegistro.Activo : (filtro.EstadoRegistroDescripcion == DatosConstantes.ParametrosEstadoRegistro.Inactivo ? DatosConstantes.EstadoRegistro.Inactivo : null);

            filtro.CodigoIdioma = obtenerCodigoIdioma();

            modelo.ListaTipoDocumento.Add(new SelectListItem()
            {
                Value = string.Empty, Text = GenericoResource.EtiquetaSeleccionar, Selected = true
            });
            modelo.ListaTipoDocumento.AddRange(parametroValorService.BuscarValorPorSeccionParametro(new ParametroValorRequest()
            {
                CodigoIdentificador = DatosConstantes.ParametrosGenerales.TipoDocumento,
                IndicadorEmpresa    = true,
                CodigoSistema       = DatosConstantes.Sistema.CodigoSGI,
                CodigoEmpresa       = DatosConstantes.Empresa.CodigoElectroPeru,
                CodigoIdioma        = filtro.CodigoIdioma
            }).Result.Select(x => new SelectListItem()
            {
                Text     = x.Valor,
                Value    = x.CodigoValorString,
                Selected = false
            }));

            modelo.ListaCargo.Add(new SelectListItem {
                Value = string.Empty, Text = GenericoResource.EtiquetaSeleccionar
            });
            modelo.ListaCargo.AddRange(parametroValorService.BuscarValorPorSeccionParametro(new ParametroValorRequest()
            {
                CodigoIdentificador = DatosConstantes.ParametrosGenerales.Cargo,
                CodigoEmpresa       = DatosConstantes.Empresa.CodigoElectroPeru,
                CodigoSistema       = DatosConstantes.Sistema.CodigoSGI,
                IndicadorEmpresa    = true,
                CodigoIdioma        = filtro.CodigoIdioma
            }).Result.Select(x => new SelectListItem()
            {
                Value    = x.CodigoValorString,
                Text     = x.Valor,
                Selected = false
            }));

            return(PartialView(modelo));
        }
        /// <summary>
        /// Permite la búsqueda de Responsablees
        /// </summary>
        /// <param name="filtro">Filtro de búsqueda</param>
        /// <returns>Lista de Responsablees</returns>
        public ProcessResult <List <ResponsableResponse> > BuscarResponsable(ResponsableRequest filtro)
        {
            ProcessResult <List <ResponsableResponse> > resultado = new ProcessResult <List <ResponsableResponse> >();

            try
            {
                List <ResponsableLogic> listaResponsable = ResponsableLogicRepository.BuscarResponsable(
                    filtro.CodigoResponsable,
                    filtro.Nombres,
                    filtro.ApellidoPaterno,
                    filtro.ApellidoMaterno,
                    filtro.NombreCompleto,
                    filtro.CodigoGenero,
                    filtro.CodigoCargo,
                    filtro.CorreoElectronico,
                    filtro.CodigoTipoDocumento,
                    filtro.NumeroDocumento,
                    Guid.Parse(DatosConstantes.Empresa.CodigoElectroPeru),
                    Guid.Parse(DatosConstantes.Sistema.CodigoSGI),
                    filtro.CodigoIdioma,
                    filtro.EstadoRegistro,// = filtro.EstadoRegistroDescripcion == DatosConstantes.ParametrosEstadoRegistro.Activo ? DatosConstantes.EstadoRegistro.Activo : (filtro.EstadoRegistroDescripcion == DatosConstantes.ParametrosEstadoRegistro.Inactivo ? DatosConstantes.EstadoRegistro.Inactivo : null),
                    filtro.NumeroPagina,
                    filtro.RegistrosPagina);

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

                foreach (ResponsableLogic ResponsableLogic in listaResponsable)
                {
                    ResponsableResponse ResponsableResponse = ResponsableAdapter.ObtenerResponsablePaginado(ResponsableLogic);
                    resultado.Result.Add(ResponsableResponse);
                }
            }
            catch (Exception e)
            {
                resultado.IsSuccess = false;
                resultado.Exception = new ApplicationLayerException <ResponsableService>(e.Message);
            }

            return(resultado);
        }
        public ProcessResult <object> EliminarResponsable(ResponsableRequest filtro)
        {
            ProcessResult <object> resultado = new ProcessResult <object>();

            resultado.Result = string.Empty;
            try
            {
                ResponsableEntity oResponsableEntity = responsableEntityRepository.GetById(filtro.CodigoResponsable);

                if (oResponsableEntity != null)
                {
                    responsableEntityRepository.Eliminar(oResponsableEntity.CodigoResponsable);
                    resultado.IsSuccess = true;
                    responsableEntityRepository.GuardarCambios();
                }
            }
            catch (Exception ex)
            {
                resultado.Exception = new ApplicationLayerException <ResponsableService>(ex.Message);
            }
            return(resultado);
        }
        public ActionResult Index(ResponsableRequest filtro)
        {
            FormularioBandejaResponsableModel modelo = new FormularioBandejaResponsableModel();
            var requestIndicador = Request.QueryString["indicador"];

            if (requestIndicador != null ||
                (Session["PortalStracon"] != null && Session["PortalStracon"].ToString() == "true"))
            {
                Session["PortalStracon"] = "true";
                if (Session["CodigoIdioma"] == null)
                {
                    Session["CodigoIdioma"] = DatosConstantes.ParametrosGenerales.CodigoIdiomaEspaniol;
                    filtro.CodigoIdioma     = Session["CodigoIdioma"].ToString();

                    CultureInfo cultureInfo = null;
                    cultureInfo = new CultureInfo(filtro.CodigoIdioma);
                    if (cultureInfo == null)
                    {
                        cultureInfo = new CultureInfo(filtro.CodigoIdioma);
                    }

                    //Finally setting culture for each request
                    Thread.CurrentThread.CurrentUICulture = cultureInfo;
                    Thread.CurrentThread.CurrentCulture   = CultureInfo.CreateSpecificCulture(cultureInfo.Name);

                    var listaIdioma = parametroValorService.BuscarValorPorSeccionParametro(new ParametroValorRequest()
                    {
                        CodigoIdentificador = DatosConstantes.ParametrosGenerales.Idioma,
                        CodigoEmpresa       = DatosConstantes.Empresa.CodigoElectroPeru,
                        CodigoSistema       = DatosConstantes.Sistema.CodigoSGI,
                        IndicadorEmpresa    = true,
                        CodigoIdioma        = filtro.CodigoIdioma
                    }).Result.Select(x => new SelectListItem()
                    {
                        Value    = x.CodigoValorString,
                        Text     = x.Valor,
                        Selected = (x.CodigoValorString == filtro.CodigoIdioma)
                    }).ToList();
                    Session["ListaIdioma"] = listaIdioma;
                }
            }
            else
            {
                var cuentaUsuario = "alosno";//Pe.GyM.Security.Web.Session.HttpGyMSessionContext.CurrentAccount();
                if (Session["CodigoIdioma"] != null)
                {
                    filtro.CodigoIdioma = Session["CodigoIdioma"].ToString();
                }
                else
                {
                    filtro.CodigoIdioma = DatosConstantes.ParametrosGenerales.CodigoIdiomaPorDefecto;
                }
            }

            modelo.ListaGenero.Add(new SelectListItem {
                Value = string.Empty, Text = GenericoResource.EtiquetaTodos
            });
            modelo.ListaGenero.AddRange(parametroValorService.BuscarValorPorSeccionParametro(new ParametroValorRequest()
            {
                CodigoIdentificador = DatosConstantes.ParametrosGenerales.TipoGenero,
                CodigoEmpresa       = DatosConstantes.Empresa.CodigoElectroPeru,
                CodigoSistema       = DatosConstantes.Sistema.CodigoSGI,
                IndicadorEmpresa    = true,
                CodigoIdioma        = filtro.CodigoIdioma
            }).Result.Select(x => new SelectListItem()
            {
                Value    = x.CodigoValorString,
                Text     = x.Valor,
                Selected = false
            }));

            modelo.ListaCargo.Add(new SelectListItem {
                Value = string.Empty, Text = GenericoResource.EtiquetaTodos
            });
            modelo.ListaCargo.AddRange(parametroValorService.BuscarValorPorSeccionParametro(new ParametroValorRequest()
            {
                CodigoIdentificador = DatosConstantes.ParametrosGenerales.Cargo,
                CodigoEmpresa       = DatosConstantes.Empresa.CodigoElectroPeru,
                CodigoSistema       = DatosConstantes.Sistema.CodigoSGI,
                IndicadorEmpresa    = true,
                CodigoIdioma        = filtro.CodigoIdioma
            }).Result.Select(x => new SelectListItem()
            {
                Value    = x.CodigoValorString,
                Text     = x.Valor,
                Selected = false
            }));

            modelo.ListaEstadoRegistro.Add(new SelectListItem {
                Value = string.Empty, Text = GenericoResource.EtiquetaTodos
            });
            modelo.ListaEstadoRegistro.AddRange(parametroValorService.BuscarValorPorSeccionParametro(new ParametroValorRequest()
            {
                CodigoIdentificador = DatosConstantes.ParametrosGenerales.EstadoRegistro,
                CodigoEmpresa       = DatosConstantes.Empresa.CodigoElectroPeru,
                CodigoSistema       = DatosConstantes.Sistema.CodigoSGI,
                IndicadorEmpresa    = true,
                CodigoIdioma        = filtro.CodigoIdioma
            }).Result.Select(x => new SelectListItem()
            {
                Value    = x.CodigoValorString,
                Text     = x.Valor,
                Selected = false
            }));

            modelo.ListaTipoDocumento.Add(new SelectListItem {
                Value = string.Empty, Text = GenericoResource.EtiquetaTodos
            });
            modelo.ListaTipoDocumento.AddRange(parametroValorService.BuscarValorPorSeccionParametro(new ParametroValorRequest()
            {
                CodigoIdentificador = DatosConstantes.ParametrosGenerales.TipoDocumento,
                CodigoEmpresa       = DatosConstantes.Empresa.CodigoElectroPeru,
                CodigoSistema       = DatosConstantes.Sistema.CodigoSGI,
                IndicadorEmpresa    = true,
                CodigoIdioma        = filtro.CodigoIdioma
            }).Result.Select(x => new SelectListItem()
            {
                Value    = x.CodigoValorString,
                Text     = x.Valor,
                Selected = false
            }));

            return(View(modelo));
        }
        public JsonResult EliminarResponsable(ResponsableRequest filtro)
        {
            var response = responsableService.EliminarResponsable(filtro);

            return(Json(response));
        }
        /// <summary>
        /// Permite el registro de Responsable
        /// </summary>
        /// <param name="data">Datos a registrar</param>
        /// <returns>Indicador con el resultado de la operación</returns>
        public JsonResult RegistrarResponsable(ResponsableRequest data)
        {
            var response = responsableService.RegistrarResponsable(data);

            return(Json(response));
        }