public bool SolicitarTarjeta(Usuario usuario, TarjetaDeCredito tarjetaSolicitada) { //verificar si el usuario ya tiene una tarjeta de ese tipo if (usuario.Cuentas.Any(c => c.GetType() == tarjetaSolicitada.GetType())) { return(false); } //consultar # maximo de tarjetas int numMaximoDeTarjetas = _repositorioConfiguraciones.SeleccionarMaximoDeTarjetasPorUsuario(); if (usuario.Cuentas.Where(c => c is TarjetaDeCredito).Count() >= numMaximoDeTarjetas) { return(false); } //consultar buro de credito var calificacionBuro = _servicioExternoBuro.ConsultarBuro(usuario.RFC); if (tarjetaSolicitada is TarjetaClasica && calificacionBuro < 30) { return(false); } else if (tarjetaSolicitada is TarjetaOro && calificacionBuro < 65) { return(false); } else if (tarjetaSolicitada is TarjetaPlatino && calificacionBuro < 85) { return(false); } return(true); }