public EOpcionesJurisdiccionPertenencia ObtenerOpcionesJurisdiccionPertenencia(EPertenenciaRequest ePertenenciaRequest) { EOpcionesJurisdiccionPertenencia eOpcionesJurisdiccionPertenencia = new EOpcionesJurisdiccionPertenencia(); IEnumerable <EJurisdiccion> jurisdiccionUgeles = null; IEnumerable <int> IdProvinciasAsignadas; var region = comunRegistroRepositorio.ObtenerRegionPorDre(ePertenenciaRequest.dre.IdIged ?? default(int)); var provinciasPorRegion = comunRegistroRepositorio.ObtenerProvinciasPorRegion(region.CodUbigeo); jurisdiccionUgeles = comunRegistroRepositorio.ObtenerJurisdiccionDeUgelesPorDre(ePertenenciaRequest.dre.IdIged ?? default(int)); // PROVINCIAS ------------------------------------------------------------------------------------------------------ // ----------------------------------------------------------------------------------------------------------------- IdProvinciasAsignadas = (from a in jurisdiccionUgeles where a.Ubigeo.TipoUbigeo.CodTipoUbigeo == 2 //Provincias (Aqui crear numeral) & a.CodTerminoPertenencia == 1 //COMPRENDE (Aqui va numeral select a.Ubigeo.IdUbigeo).ToList(); // Lista de provincias no asignadas con el termino "Comprende" var varp1_provinciasNoAsignadasComprende = (from a in provinciasPorRegion where !IdProvinciasAsignadas.Contains(a.IdUbigeo) select a).ToList(); // Obtener todos los distritos de las provincias no asignadas. var varp2_distritosNoAsignadosDeVar1 = comunRegistroRepositorio.ObtenerDistritosPorListaProvincias(varp1_provinciasNoAsignadasComprende); //Obtener todos los CCPP de los distritos de las provincias no asignadas. //var varp3_ccppNoAsignadosDeVar2 = comunRegistroRepositorio.ObtenerCCPPPorListaDistrito(varp2_distritosNoAsignadosDeVar1.ToList()); //DISTRITOS ----------------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------------------------- //Distrito asignados con comprende e incluye, se tiene que restar del total de distritos y tambien restar sus centros poblados del total de centros poblados. var vard1_distritosAsignados = (from a in jurisdiccionUgeles where a.Ubigeo.TipoUbigeo.CodTipoUbigeo == 3 //Distritos (Aqui crear numeral) & (a.CodTerminoPertenencia == 1 || a.CodTerminoPertenencia == 2) //COMPRENDE O INCLUYE (Aqui va numeral select new EDistrito { IdUbigeo = a.Ubigeo.IdUbigeo } ).ToList(); // Obtener ID de los distritos excluidos var idDistritosExcluidos = (from a in jurisdiccionUgeles where a.Ubigeo.TipoUbigeo.CodTipoUbigeo == 3 //Distritos (Aqui crear numeral) & a.CodTerminoPertenencia == 3 //EXCLUYE (Aqui va numeral) select new EDistrito { IdUbigeo = a.Ubigeo.IdUbigeo } ).ToList(); //Obtener distritos excluidos, se tienen que sumar al total de distritos y tambien sumar sus provincias y sus centros poblados. IEnumerable <EDistrito> vard2_distritosExcluidos = null; IEnumerable <EProvincia> vard3_provinciasDeVard2 = null; if (idDistritosExcluidos.Count > 0) { vard2_distritosExcluidos = comunRegistroRepositorio.ObtenerDistritosPorListaIdDistritos(idDistritosExcluidos); // Obtener las provincias de los distritos excluidos. Sumar al total de provincias no asignadas. vard3_provinciasDeVard2 = (from a in vard2_distritosExcluidos select a.Provincia ).Distinct().ToList(); } List <EDistrito> vard4_distritosNoAsignados = null; // varp2_distritosNoAsignadosDeVar1 - vard1_distritosAsignados + vard2_distritosExcluidos if (vard1_distritosAsignados.Count > 0) { vard4_distritosNoAsignados = ((from a in varp2_distritosNoAsignadosDeVar1 where !(from b in vard1_distritosAsignados select b.IdUbigeo).Contains(a.IdUbigeo) select a).ToList()).Union(vard2_distritosExcluidos).ToList(); } else { vard4_distritosNoAsignados = (from a in varp2_distritosNoAsignadosDeVar1 where !(from b in vard1_distritosAsignados select b.IdUbigeo).Contains(a.IdUbigeo) select a).ToList(); } //CENTROS POBLADOS ---------------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------------------------------- //Obtener todos los CCPP de vard4_distritosNoAsignados var varc1_ccppNoAsignadosDeVard4 = comunRegistroRepositorio.ObtenerCCPPPorListaDistrito(vard4_distritosNoAsignados); //CCPP asignados con comprende e incluye, se tiene que restar del total de distritos y tambien restar sus centros poblados del total de centros poblados. var varc2_CCPPAsignados = (from a in jurisdiccionUgeles where a.Ubigeo.TipoUbigeo.CodTipoUbigeo == 4 //CCPP (Aqui crear numeral) & (a.CodTerminoPertenencia == 1 || a.CodTerminoPertenencia == 2) //COMPRENDE O INCLUYE (Aqui va numeral) select new ECentroPoblado { IdUbigeo = a.Ubigeo.IdUbigeo } ).ToList(); // Obtener ID de los CCPP excluidos var idCCPPExcluidos = (from a in jurisdiccionUgeles where a.Ubigeo.TipoUbigeo.CodTipoUbigeo == 4 //Distritos (Aqui crear numeral) & a.CodTerminoPertenencia == 3 //EXCLUYE (Aqui va numeral) select new ECentroPoblado { IdUbigeo = a.Ubigeo.IdUbigeo } ).ToList(); //Obtener distritos excluidos, se tienen que sumar al total de distritos y tambien sumar sus provincias y sus centros poblados. IEnumerable <ECentroPoblado> varc3_CCPPExcluidos = null; IEnumerable <EDistrito> varc4_distritosDeVard3 = null; if (idCCPPExcluidos.Count > 0) { varc3_CCPPExcluidos = comunRegistroRepositorio.ObtenerCCPPPorListaCCPP(idCCPPExcluidos).ToList(); // Obtener las provincias de los distritos excluidos. Sumar al total de provincias no asignadas. varc4_distritosDeVard3 = (from a in varc3_CCPPExcluidos select a.Distrito ).Distinct().ToList(); } // varc1_ccppNoAsignadosDeVard4 - varc2_CCPPAsignados + varc3_CCPPExcluidos var varc5_CCPPNoAsignados = ((from a in varc1_ccppNoAsignadosDeVard4 where !(from b in varc2_CCPPAsignados select b.IdUbigeo).Contains(a.IdUbigeo) select a).ToList()).Union(varc3_CCPPExcluidos).ToList(); var provinciasNoAsignadas = varp1_provinciasNoAsignadasComprende.Union(vard3_provinciasDeVard2).ToList(); var distritosNoAsignados = vard4_distritosNoAsignados.Union(varc4_distritosDeVard3).ToList(); var centrosPobladosNoAsignados = varc5_CCPPNoAsignados; eOpcionesJurisdiccionPertenencia.Region = region; eOpcionesJurisdiccionPertenencia.ListaProvincias = provinciasNoAsignadas; eOpcionesJurisdiccionPertenencia.ListaDistritos = distritosNoAsignados; eOpcionesJurisdiccionPertenencia.ListaCentroPoblado = centrosPobladosNoAsignados; return(eOpcionesJurisdiccionPertenencia); }