コード例 #1
0
        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);
        }