protected override List <NivelEducativoPorTipoEducacionModel> ResolveCore(DireccionDeNivel source) { List <NivelEducativoPorTipoEducacionModel> listado = new List <NivelEducativoPorTipoEducacionModel>(); NivelEducativoPorTipoEducacionModel item; if (source.NivelesEducativos != null && source.NivelesEducativos.Count > 0) { var tipoEducacion = source.TipoEducacion; foreach (var nivelEducativo in source.NivelesEducativos) { item = new NivelEducativoPorTipoEducacionModel(); item.TipoEducacion = tipoEducacion; item.NivelEducativo = Mapper.Map <NivelEducativo, NivelEducativoModel>(nivelEducativo); listado.Add(item); } } return(listado); }
protected override TipoEducacionEnum?ResolveCore(EmpresaBase source) { switch (source.TipoEmpresa) { case TipoEmpresaEnum.ESCUELA_MADRE: { Escuela escuela = source as Escuela; if (escuela != null) { return(escuela.TipoEducacion); } } break; case TipoEmpresaEnum.ESCUELA_ANEXO: { EscuelaAnexo escuelaAnexo = source as EscuelaAnexo; if (escuelaAnexo != null) { return(escuelaAnexo.TipoEducacion); } } break; case TipoEmpresaEnum.DIRECCION_DE_NIVEL: { DireccionDeNivel direccionDeNivel = source as DireccionDeNivel; if (direccionDeNivel != null) { return(direccionDeNivel.TipoEducacion); } } break; } return(null); }
/// <summary> /// Obtiene una lista de empresas segun filtro básico /// </summary> /// <param name="codigoEmpresa">Codigo de empresa</param> /// <param name="nombreEmpresa">Nombre de empresa</param> /// <param name="idLocalidad">Pertenece al domicilio</param> /// <param name="barrio">Pertenece al domicilio</param> /// <param name="calle">Pertenece al domicilio</param> /// <param name="altura">Pertenece al domicilio</param> /// <param name="estadoEmpresaEnum">Estado de la empresa</param> /// <returns>Devuelve una lista de empresas que cumplan con los parametros de busqueda. </returns> public List <EmpresaBase> GetByFiltrosBasico(string codigoEmpresa, string nombreEmpresa, int?idLocalidad, string barrio, string calle, int?altura, List <EstadoEmpresaEnum> estadoEmpresaEnum, List <TipoEmpresaFiltroBusquedaEnum> empresaFiltro, int?idDireccionDeNivelActual, int?idEmpresaUsuarioLogueado) { var listaTipoEmpresaPermitidos = new List <TipoEmpresaEnum>(); var empresa = new EmpresaBase(); var domicilio = new Domicilio(); var direccionDeNivel = new DireccionDeNivel(); var empresaRegistro = new EmpresaBase(); var query = Session.QueryOver <EmpresaBase>(() => empresa); query.AndNot( x => x.TipoEmpresa == TipoEmpresaEnum.ESCUELA_MADRE || x.TipoEmpresa == TipoEmpresaEnum.ESCUELA_ANEXO); if (idEmpresaUsuarioLogueado.HasValue) { query.JoinQueryOver(x => x.EmpresaRegistro, () => empresaRegistro); query.And(x => empresaRegistro.Id == idEmpresaUsuarioLogueado); } if (empresaFiltro != null && empresaFiltro.Count > 0) { if (!empresaFiltro.Contains(TipoEmpresaFiltroBusquedaEnum.TODAS)) { if (empresaFiltro.Contains(TipoEmpresaFiltroBusquedaEnum.MINISTERIO)) { listaTipoEmpresaPermitidos.Add(TipoEmpresaEnum.MINISTERIO); } if (empresaFiltro.Contains(TipoEmpresaFiltroBusquedaEnum.DIRECCION_DE_NIVEL)) { listaTipoEmpresaPermitidos.Add(TipoEmpresaEnum.DIRECCION_DE_NIVEL); } if (empresaFiltro.Contains(TipoEmpresaFiltroBusquedaEnum.ESCUELA_MADRE)) { listaTipoEmpresaPermitidos.Add(TipoEmpresaEnum.ESCUELA_MADRE); } if (empresaFiltro.Contains(TipoEmpresaFiltroBusquedaEnum.ESCUELA_ANEXO)) { listaTipoEmpresaPermitidos.Add(TipoEmpresaEnum.ESCUELA_ANEXO); } if (empresaFiltro.Contains(TipoEmpresaFiltroBusquedaEnum.DIRECCION_DE_INFRAESTRUCTURA)) { listaTipoEmpresaPermitidos.Add(TipoEmpresaEnum.DIRECCION_DE_INFRAESTRUCTURA); } if (empresaFiltro.Contains(TipoEmpresaFiltroBusquedaEnum.DIRECCION_DE_RECURSOS_HUMANOS)) { listaTipoEmpresaPermitidos.Add(TipoEmpresaEnum.DIRECCION_DE_RECURSOS_HUMANOS); } if (empresaFiltro.Contains(TipoEmpresaFiltroBusquedaEnum.DIRECCION_DE_SISTEMAS)) { listaTipoEmpresaPermitidos.Add(TipoEmpresaEnum.DIRECCION_DE_SISTEMAS); } if (empresaFiltro.Contains(TipoEmpresaFiltroBusquedaEnum.DIRECCION_DE_TESORERIA)) { listaTipoEmpresaPermitidos.Add(TipoEmpresaEnum.DIRECCION_DE_TESORERIA); } if (empresaFiltro.Contains(TipoEmpresaFiltroBusquedaEnum.SECRETARIA)) { listaTipoEmpresaPermitidos.Add(TipoEmpresaEnum.SECRETARIA); } query.And(x => x.TipoEmpresa.IsIn(listaTipoEmpresaPermitidos)); } } if (!string.IsNullOrEmpty(nombreEmpresa)) { query.And(x => x.Nombre.IsLike(nombreEmpresa)); } if (!string.IsNullOrEmpty(codigoEmpresa)) { query.And(x => x.CodigoEmpresa.IsLike(codigoEmpresa)); } if (idDireccionDeNivelActual.HasValue) { query.JoinQueryOver <DireccionDeNivel>(x => x.TipoDireccionNivel, () => direccionDeNivel); query.And(() => direccionDeNivel.Id == idDireccionDeNivelActual); } var empresaBases = (List <EmpresaBase>)query.List <EmpresaBase>(); //TODO mejorar el filtrado por domicilio; hasta ahora se obtiene el listado de empresa y se filtra recien ahi (pesimo!) if (idLocalidad.HasValue || !string.IsNullOrEmpty(barrio) || !string.IsNullOrEmpty(calle) || altura.HasValue) { barrio = !string.IsNullOrEmpty(barrio) ? barrio.ToUpper() : string.Empty; calle = !string.IsNullOrEmpty(calle) ? calle.ToUpper() : string.Empty; foreach (EmpresaBase emp in empresaBases) { emp.Domicilio = new DaoDomicilio().GetByEntidad(emp.VinculoDomicilio, emp.Id); } empresaBases = (List <EmpresaBase>)empresaBases.Where(x => x.Domicilio.Localidad.Id == idLocalidad && (string.IsNullOrEmpty(barrio) || x.Domicilio.Barrio.Nombre.Contains(barrio)) && (string.IsNullOrEmpty(calle) || x.Domicilio.Calle.Nombre.Contains(calle)) && (!altura.HasValue || x.Domicilio.Altura == altura)) .ToList(); } if (estadoEmpresaEnum != null && estadoEmpresaEnum.Count > 0) { return(empresaBases.Where(x => estadoEmpresaEnum.Any(p => p == x.EstadoEmpresa)).ToList()); } return(empresaBases); }