public List <DtoEmpresaConsultaEdificio> GetEmpresasByEdificios(List <int> listaEdificios) { //todo javier revisar el futuro cercano var res = new List <DtoEmpresaConsultaEdificio>(); Edificio edificio = null; VinculoEmpresaEdificio vinculos = null; var empresa = new DtoEmpresaConsultaEdificio(); var query1 = Session.QueryOver <EmpresaBase>() .And(x => x.TipoEmpresa != TipoEmpresaEnum.ESCUELA_MADRE && x.TipoEmpresa != TipoEmpresaEnum.ESCUELA_ANEXO) .JoinQueryOver <VinculoEmpresaEdificio>(x => x.VinculoEmpresaEdificio, () => vinculos) .And(() => vinculos.Edificio.Id.IsIn(listaEdificios)) .SelectList(list => list .Select(x => x.Id).WithAlias(() => empresa.Id) .Select(x => x.Estado).WithAlias(() => empresa.EstadoEmpresa) .Select(x => x.Nombre).WithAlias(() => empresa.Nombre) .Select(x => x.TipoEmpresa).WithAlias(() => empresa.TipoEmpresa) .Select(x => x.CodigoEmpresa).WithAlias(() => empresa.CodigoEmpresa)) .TransformUsing(Transformers.AliasToBean <DtoEmpresaConsultaEdificio>()); var query2 = Session.QueryOver <Escuela>() .JoinQueryOver <VinculoEmpresaEdificio>(x => x.VinculoEmpresaEdificio, () => vinculos) .And(() => vinculos.Edificio.Id.IsIn(listaEdificios)) .SelectList(list => list .Select(x => x.Id).WithAlias(() => empresa.Id) .Select(x => x.Estado).WithAlias(() => empresa.EstadoEmpresa) .Select(x => x.Nombre).WithAlias(() => empresa.Nombre) .Select(x => x.TipoEmpresa).WithAlias(() => empresa.TipoEmpresa) .Select(x => x.CodigoEmpresa).WithAlias(() => empresa.CodigoEmpresa) .Select(x => x.CUE).WithAlias(() => empresa.CUE)) .TransformUsing(Transformers.AliasToBean <DtoEmpresaConsultaEdificio>()); var query3 = Session.QueryOver <EscuelaAnexo>() .JoinQueryOver <VinculoEmpresaEdificio>(x => x.VinculoEmpresaEdificio, () => vinculos) .And(() => vinculos.Edificio.Id.IsIn(listaEdificios)) .SelectList(list => list .Select(x => x.Id).WithAlias(() => empresa.Id) .Select(x => x.Estado).WithAlias(() => empresa.EstadoEmpresa) .Select(x => x.Nombre).WithAlias(() => empresa.Nombre) .Select(x => x.TipoEmpresa).WithAlias(() => empresa.TipoEmpresa) .Select(x => x.CodigoEmpresa).WithAlias(() => empresa.CodigoEmpresa) .Select(x => x.CUE).WithAlias(() => empresa.CUE)) .TransformUsing(Transformers.AliasToBean <DtoEmpresaConsultaEdificio>()); res.AddRange((List <DtoEmpresaConsultaEdificio>)query1.List <DtoEmpresaConsultaEdificio>()); res.AddRange((List <DtoEmpresaConsultaEdificio>)query2.List <DtoEmpresaConsultaEdificio>()); res.AddRange((List <DtoEmpresaConsultaEdificio>)query3.List <DtoEmpresaConsultaEdificio>()); return(res.Distinct().ToList <DtoEmpresaConsultaEdificio>()); }
/// <summary> /// VinculoEmpresaEdificioRegla realiza todas las validaciones de los vínculos y según el parámetro persiste o no /// </summary> /// <param name="modelo">Modelo del vínculo a guardar </param> /// <returns>Modelo del Vínculo guardado</returns> private List <VinculoEmpresaEdificioModel> VinculoEmpresaEdificioRegla(RegistrarVinculoEmpresaEdificioModel modelo, bool persist) { ValidarVinculoEmpresaEdificioSave(modelo); int idEmpresa; int.TryParse(modelo.Empresa, out idEmpresa); var listaVinculos = new List <VinculoEmpresaEdificio>(); var listadoDeErrores = new StringBuilder(); if (idEmpresa > 0) { var empresa = DaoEmpresa.GetById(idEmpresa); foreach (var idEdificio in modelo.ListaEdificios) { if (DaoVinculoEmpresaEdificio.VerificarVinculoEmpresaEdificio(idEdificio, idEmpresa)) { var edificio = DaoEdificio.GetById(idEdificio); var vinculo = new VinculoEmpresaEdificio(); vinculo.Empresa = empresa; vinculo.Edificio = edificio; vinculo.Estado = EstadoVinculoEmpresaEdificioEnum.ACTIVO; if (modelo.FechaDesde != null) { vinculo.FechaDesde = modelo.FechaDesde.Value; } vinculo.Observacion = modelo.Observacion; vinculo.DeterminaDomicilio = false; if (persist) { vinculo = DaoVinculoEmpresaEdificio.SaveOrUpdate(vinculo); } listaVinculos.Add(vinculo); } else { var edificio = DaoEdificio.GetById(idEdificio); listadoDeErrores.AppendLine("El vinculo con el edificio " + edificio.IdentificadorEdificio + " ya existe"); } } } if (!String.IsNullOrEmpty(listadoDeErrores.ToString())) { throw new BaseException(listadoDeErrores.ToString()); } return(AutoMapper.Mapper.Map <List <VinculoEmpresaEdificio>, List <VinculoEmpresaEdificioModel> >(listaVinculos)); }
private void ValidarVinculoEmpresaEdificioDelete(VinculoEmpresaEdificio entidad) { var listadoDeErrores = new StringBuilder(); if (entidad.Empresa == null || (entidad.Empresa.Estado != EstadoEmpresaEnum.AUTORIZADA && entidad.Empresa.Estado != EstadoEmpresaEnum.EN_PROCESO_DE_CIERRE_AUTORIZADO_NOTIFICADO)) { throw new ApplicationException(VinculoEmpresaEdificioResource.ESTADO_EMPRESA); } var vinculos = DaoVinculoEmpresaEdificio.GetVinculoEmpresaEdificioByFilters(entidad.Empresa.CodigoEmpresa, null); if (vinculos == null || vinculos.Count == 0) { listadoDeErrores.AppendLine(VinculoEmpresaEdificioResource.VINCULO_NO_EXISTE); } // pregunto si el vinculo es el activo para esa empresa, ya que debe haber un vinculo que coincida con el domicilio de la misma if (entidad.DeterminaDomicilio) { listadoDeErrores.AppendLine(VinculoEmpresaEdificioResource.MISMO_DOMICILIO); } if (!String.IsNullOrEmpty(listadoDeErrores.ToString())) { throw new BaseException(listadoDeErrores.ToString()); } }
public virtual void AddVinculoEdificio(VinculoEmpresaEdificio entidad) { VinculoEmpresaEdificio.Add(entidad); entidad.Empresa = this; }