| Stockholders' Equity (Tables)
 | 6 Months Ended | 
| Oct. 31, 2019 | 
|---|
| Summary of Warrant Activity | A summary of the Company’s warrant activity during the six months ended OctoberÌý31, 2019 is presented below: 
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  
| Warrants |  | Number of Shares
 |  | Weighted Average
 Exercise
 Price
 |  | Weighted Average
 Remaining
 Contractual
 Term
 |  | Aggregate Intrinsic
 Value
 |  
| Balance Outstanding, April 30, 2019 |  | 731,152Ìý | Ìý |  | $ | 5.28Ìý | Ìý |  | 3.29 |  | $ | 413,296Ìý | Ìý |  
| Granted |  | —Ìý | Ìý |  | —Ìý | Ìý |  | —Ìý | Ìý |  | —Ìý | Ìý |  
| Exercised |  | (164,929) | Ìý |  | $ | 2.05Ìý | Ìý |  | —Ìý | Ìý |  | —Ìý | Ìý |  
| Surrendered |  | —Ìý | Ìý |  | —Ìý | Ìý |  | —Ìý | Ìý |  | —Ìý | Ìý |  
| Expired |  | —Ìý | Ìý |  | —Ìý | Ìý |  | —Ìý | Ìý |  | —Ìý | Ìý |  
| Balance Outstanding, October 31, 2019 |  | 566,223Ìý | Ìý |  | $ | 6.22Ìý | Ìý |  | 3.66 |  | $ | 154,820Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  
| Exercisable, October 31, 2019 |  | 516,223Ìý | Ìý |  | $ | 6.35Ìý | Ìý |  | 3.59 |  | $ | 86,820Ìý | Ìý |  | 
| Stock Incentive Plan and Stock Option Grants to Employees and Directors | Ìý | 
| Share-based Payment Arrangement, Option, Exercise Price Range | 
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  
| ALL OPTIONS |  |  |  |  |  | EXERCISABLE OPTIONS |  |  |  |  |  
| Exercise Price
 |  | Weighted Average
 Exercise
 Price
 |  | Outstanding No. of
 Options
 |  | Weighted Average
 Exercise
 Price
 |  | Weighted Average
 Remaining Life
 In Years
 |  | Exercisable No. of
 Options
 |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $1.57 to $2.10 |  | $ | 1.99Ìý | Ìý |  | 600,115Ìý | Ìý |  | $ | 1.99Ìý | Ìý |  | 1.18 |  | 600,115Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $2.28 to $2.76 |  | $ | 2.31Ìý | Ìý |  | 392,780Ìý | Ìý |  | $ | 2.29Ìý | Ìý |  | 0.87 |  | 400,486Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $3.24 to $4.38 |  | $ | 3.90Ìý | Ìý |  | 358,388Ìý | Ìý |  | $ | 3.93Ìý | Ìý |  | 2.00 |  | 235,904Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $4.50 to $5.20 |  | $ | 4.93Ìý | Ìý |  | 711,459Ìý | Ìý |  | $ | 4.90Ìý | Ìý |  | 2.53 |  | 336,611Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $5.95 to $6.28 |  | $ | 6.07Ìý | Ìý |  | 80,417Ìý | Ìý |  | $ | 6.13Ìý | Ìý |  | 2.68 |  | 36,806Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $7.17 to $7.55 |  | $ | 7.39Ìý | Ìý |  | 660,972Ìý | Ìý |  | $ | 7.39Ìý | Ìý |  | 3.73 |  | 220,324Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $8.57 to $9.07 |  | $ | 8.98Ìý | Ìý |  | 217,000Ìý | Ìý |  | $ | 8.98Ìý | Ìý |  | 3.44 |  | 72,333Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  |  |  
| Options only |  |  |  | 3,021,131Ìý | Ìý |  |  |  |  |  | 1,902,579Ìý | Ìý |  | 
| Summary of Valuation Assumptions Used | The following table summarizes the assumptions the Company utilized to record compensation expense for stock options granted to employees during the period ended. 
|  |  |  |  |  |  |  |  |  |  |  |  |  
|  | October 31, 2019
 |  | April 30, 2019
 |  
| Expected life (years) | 3.5 |  | 3.5 |  
| Expected volatility | 46.0Ìý | % |  | 50.1Ìý | % |  
| Risk-free interest rate | 1.67Ìý | % |  | 2.63Ìý | % |  
| Dividend yield | 0.00Ìý | % |  | 0.00Ìý | % |  
| Expected forfeiture rate | n/a |  | n/a |  | 
| Summary of Stock Option Activity | A summary of the Company’s stock option activity for employees and directors during the six months ended OctoberÌý31, 2019, is presented below: 
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  
| Options |  | Number of Shares
 |  | Weighted Average
 Exercise
 Price
 |  | Weighted Average
 Remaining
 Contractual
 Term
 |  | Aggregate Intrinsic
 Value
 |  
| Balance Outstanding, April 30, 2019 |  | 3,408,154Ìý | Ìý |  | $ | 4.44Ìý | Ìý |  | 2.90 |  | $ | 6,880,644Ìý | Ìý |  
| Granted |  | 89,000Ìý | Ìý |  | 4.03Ìý | Ìý |  | —Ìý | Ìý |  | —Ìý | Ìý |  
| Exercised |  | (453,660) | Ìý |  | 2.20Ìý | Ìý |  | —Ìý | Ìý |  | —Ìý | Ìý |  
| Forfeited |  | (22,363) | Ìý |  | 5.92Ìý | Ìý |  | —Ìý | Ìý |  | —Ìý | Ìý |  
| Expired |  | —Ìý | Ìý |  | —Ìý | Ìý |  | —Ìý | Ìý |  | —Ìý | Ìý |  
| Balance Outstanding, OctoberÌý31, 2019 |  | 3,021,131Ìý | Ìý |  | $ | 4.57Ìý | Ìý |  | 2.90 |  | $ | 6,880,644Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  
| Exercisable, OctoberÌý31, 2019 |  | 1,902,579Ìý | Ìý |  | $ | 3.78Ìý | Ìý |  | 1.86 |  | $ | 7,545,471Ìý | Ìý |  | 
| Warrant | Ìý | 
| Share-based Payment Arrangement, Option, Exercise Price Range | 
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  
| ALL WARRANTS |  |  |  |  |  | EXERCISABLE WARRANTS |  |  |  |  |  
| Exercise Price
 |  | Weighted Average
 Exercise
 Price
 |  | Outstanding No. of
 Warrants
 |  | Weighted Average
 Exercise
 Price
 |  | Weighted Average
 Remaining Life
 In Years
 |  | Exercisable No. of
 Warrants
 |  
|  |  |  |  |  |  |  |  |  |  |  |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $ | 4.89Ìý | Ìý |  | $ | 4.89Ìý | Ìý |  | 50,000Ìý | Ìý |  | $ | 4.89Ìý | Ìý |  | 4.70 |  | —Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $ | 5.85Ìý | Ìý |  | $ | 5.85Ìý | Ìý |  | 92,049Ìý | Ìý |  | $ | 5.85Ìý | Ìý |  | 4.27 |  | 92,049Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $ | 6.00Ìý | Ìý |  | $ | 6.00Ìý | Ìý |  | 200,000Ìý | Ìý |  | $ | 6.00Ìý | Ìý |  | 4.60 |  | 200,000Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $ | 6.87Ìý | Ìý |  | $ | 6.87Ìý | Ìý |  | 224,174Ìý | Ìý |  | $ | 6.87Ìý | Ìý |  | 2.99 |  | 224,174Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  |  |  
| ÌýÌý | Ìý |  |  |  | 566,223Ìý | Ìý |  | ÌýÌý | Ìý |  | ÌýÌý | Ìý |  | 516,223Ìý | Ìý |  |