/*
         * public IEnumerable<Response.ConsultarOficinaResponse> OF_GetallOficina_x_RUC_NOMBRE(int pageIndex, int pageSize, string RUC, string NOMBRE)
         * {
         *  DB_GESDOCEntities _dataContext = base.Context.GetContext() as DB_GESDOCEntities;
         *
         *  var result = (from VCD in _dataContext.vw_CONSULTAR_DIRECCION
         *
         *                from VCO in _dataContext.vw_CONSULTAR_OFICINA
         *                     .Where(VCO => VCD.ID_OFICINA == VCO.ID_OFICINA)
         *                     .DefaultIfEmpty() // <== makes join left join
         *
         *                from VCO_OFI in _dataContext.vw_CONSULTAR_OFICINA
         *                     .Where(VCO_OFI => VCO.RUC == VCO_OFI.RUC && VCO_OFI.ID_OFI_PADRE == null)
         *                     .DefaultIfEmpty() // <== makes join left join
         *
         *                from VCSO in _dataContext.vw_CONSULTAR_SEDE_OFICINA
         *                     .Where(VCSO => VCD.ID_SEDE == VCSO.ID_SEDE)
         *                     .DefaultIfEmpty() // <== makes join left join
         *
         *                where VCO.RUC.Contains(RUC) && VCO.NOMBRE.Contains(NOMBRE)
         *
         *               select new ConsultarOficinaResponse()
         *               {
         *                   ruc = VCO.RUC,
         *                   nombre = VCO.ID_OFI_PADRE == null ? VCO.NOMBRE : VCO_OFI.SIGLAS + " - " + VCO.NOMBRE + (VCSO.NOMBRE.ToString().Trim() == "" ? " ": " - " + VCSO.NOMBRE),
         *                   siglas = VCO.SIGLAS,
         *                   activo_direccion = VCD.ACTIVO,
         *                   nombre_direccion = VCSO.NOMBRE.ToString().Trim() == "" ? VCSO.DIRECCION : VCSO.DIRECCION
         *               }).OrderByDescending(r => r.ruc).Skip((pageIndex - 1) * pageSize).Take(pageSize).AsEnumerable();
         *  return result;
         * }
         *
         * public int OF_CountOficina_x_RUC_NOMBRE(string RUC, string NOMBRE)
         * {
         *  DB_GESDOCEntities _dataContext = base.Context.GetContext() as DB_GESDOCEntities;
         *
         *  var result = (from VCD in _dataContext.vw_CONSULTAR_DIRECCION
         *
         *                from VCO in _dataContext.vw_CONSULTAR_OFICINA
         *                     .Where(VCO => VCD.ID_OFICINA == VCO.ID_OFICINA)
         *                     .DefaultIfEmpty() // <== makes join left join
         *
         *                from VCO_OFI in _dataContext.vw_CONSULTAR_OFICINA
         *                     .Where(VCO_OFI => VCO.RUC == VCO_OFI.RUC && VCO_OFI.ID_OFI_PADRE == null)
         *                     .DefaultIfEmpty() // <== makes join left join
         *
         *                from VCSO in _dataContext.vw_CONSULTAR_SEDE_OFICINA
         *                     .Where(VCSO => VCD.ID_SEDE == VCSO.ID_SEDE)
         *                     .DefaultIfEmpty() // <== makes join left join
         *
         *                where VCO.RUC.Contains(RUC) && VCO.NOMBRE.Contains(NOMBRE)
         *                select new ConsultarOficinaResponse()
         *                {
         *                    ruc = VCO.RUC,
         *                    nombre = VCO.ID_OFI_PADRE == null ? VCO.NOMBRE : VCO_OFI.SIGLAS + " - " + VCO.NOMBRE,
         *                    siglas = VCO.SIGLAS,
         *                    activo_direccion = VCD.ACTIVO,
         *                    nombre_direccion = VCSO.NOMBRE.ToString().Trim() == "" ? VCSO.DIRECCION : VCSO.NOMBRE + " - " + VCSO.DIRECCION
         *                }).OrderByDescending(r => r.ruc).AsEnumerable();
         *  return result.Count();
         * }
         *
         * public IEnumerable<Response.ConsultarDireccionResponse> OF_GetallOficina_DIR_x_RUC(int pageIndex, int pageSize, string RUC)
         * {
         *  DB_GESDOCEntities _dataContext = base.Context.GetContext() as DB_GESDOCEntities;
         *
         *  var result = (from VCD in _dataContext.vw_CONSULTAR_DIRECCION
         *
         *                from VCO in _dataContext.vw_CONSULTAR_OFICINA
         *                     .Where(VCO => VCD.ID_OFICINA == VCO.ID_OFICINA)
         *                     .DefaultIfEmpty() // <== makes join left join
         *
         *                from VSO in _dataContext.vw_CONSULTAR_SEDE_OFICINA
         *                     .Where(VSO => VCD.ID_SEDE == VSO.ID_SEDE)
         *                     .DefaultIfEmpty() // <== makes join left join
         *
         *                from VCU in _dataContext.vw_CONSULTAR_UBIGEO
         *                     .Where(VCU => VSO.UBIGEO == VCU.UBIGEO)
         *                     .DefaultIfEmpty() // <== makes join left join
         *
         *                where VCO.RUC == RUC
         *
         *               select new ConsultarDireccionResponse()
         *               {
         *                   id_oficina_direccion = VCD.ID_OFICINA_DIRECCION,
         *                   nom_oficina = VSO.NOMBRE.ToString().Trim() == "" ? VCO.NOMBRE : VCO.NOMBRE+"-"+VSO.NOMBRE,
         *                   direccion = VSO.DIRECCION,
         *                   nom_ubigeo = VCU.DEPARTAMENTO + '-' + VCU.PROVINCIA + '-' + VCU.DISTRITO,
         *                   activo = VCD.ACTIVO
         *               }).OrderByDescending(r => r.id_oficina_direccion).Skip((pageIndex - 1) * pageSize).Take(pageSize).AsEnumerable();
         *  return result;
         * }
         *
         * public int OF_CountOficina_DIR_x_RUC(string RUC)
         * {
         *  DB_GESDOCEntities _dataContext = base.Context.GetContext() as DB_GESDOCEntities;
         *
         *  var result = (from VCD in _dataContext.vw_CONSULTAR_DIRECCION
         *
         *                from VCO in _dataContext.vw_CONSULTAR_OFICINA
         *                     .Where(VCO => VCD.ID_OFICINA == VCO.ID_OFICINA)
         *                     .DefaultIfEmpty() // <== makes join left join
         *
         *                from VSO in _dataContext.vw_CONSULTAR_SEDE_OFICINA
         *                     .Where(VSO => VCD.ID_SEDE == VSO.ID_SEDE)
         *                     .DefaultIfEmpty() // <== makes join left join
         *
         *                from VCU in _dataContext.vw_CONSULTAR_UBIGEO
         *                     .Where(VCU => VSO.UBIGEO == VCU.UBIGEO)
         *                     .DefaultIfEmpty() // <== makes join left join
         *
         *                where VCO.RUC == RUC
         *
         *                select new ConsultarDireccionResponse()
         *                {
         *                    id_oficina_direccion = VCD.ID_OFICINA_DIRECCION,
         *                    nom_oficina = VSO.NOMBRE.ToString().Trim() == "" ? VCO.NOMBRE : VCO.NOMBRE + "-" + VSO.NOMBRE,
         *                    direccion = VSO.DIRECCION,
         *                    nom_ubigeo = VCU.DEPARTAMENTO + '-' + VCU.PROVINCIA + '-' + VCU.DISTRITO,
         *                    activo = VCD.ACTIVO
         *                }).OrderByDescending(r => r.id_oficina_direccion).AsEnumerable();
         *  return result.Count();
         * }
         */

        public IEnumerable <ConsultarPersonalResponse> Asigna_oficina_persona(string persona_num_documento, int id_oficina_dir, string usuario)
        {
            DB_GESDOCEntities _dataContext = base.Context.GetContext() as DB_GESDOCEntities;

            var result = from r in _dataContext.P_ASIGNA_OFICINA_PERSONA(persona_num_documento, id_oficina_dir, usuario)
                         select new ConsultarPersonalResponse()
            {
                persona_num_documento = r.persona_num_documento,
                id_oficina_direccion  = r.ID_OFICINA_DIRECCION
            };

            return(result);
        }