| Stockholders' Equity (Tables)
 | 9 Months Ended | 
| Jan. 31, 2020 | 
|---|
| Summary of Warrant Activity | A summary of the Company’s warrant activity during the nine months ended JanuaryÌý31, 2020 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, January 31, 2020 |  | 566,223Ìý | Ìý |  | $ | 6.22Ìý | Ìý |  | 3.41 |  | $ | 1,425,727Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  
| Exercisable, January 31, 2020 |  | 516,223Ìý | Ìý |  | $ | 6.35Ìý | Ìý |  | 3.34 |  | $ | 1,233,227Ìý | Ìý |  | 
| 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 |  | $ | 2.00Ìý | Ìý |  | 564,724Ìý | Ìý |  | $ | 2.00Ìý | Ìý |  | 0.96 |  | 564,723Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $2.28 to $2.76 |  | $ | 2.30Ìý | Ìý |  | 382,780Ìý | Ìý |  | $ | 2.29Ìý | Ìý |  | 0.60 |  | 391,736Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $3.24 to $4.38 |  | $ | 3.89Ìý | Ìý |  | 323,925Ìý | Ìý |  | $ | 3.91Ìý | Ìý |  | 1.73 |  | 215,817Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $4.50 to $5.20 |  | $ | 4.93Ìý | Ìý |  | 708,960Ìý | Ìý |  | $ | 4.90Ìý | Ìý |  | 2.28 |  | 336,278Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $5.95 to $6.28 |  | $ | 6.07Ìý | Ìý |  | 80,417Ìý | Ìý |  | $ | 6.13Ìý | Ìý |  | 2.43 |  | 36,806Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $7.17 to $7.55 |  | $ | 7.41Ìý | Ìý |  | 551,639Ìý | Ìý |  | $ | 7.32Ìý | Ìý |  | 3.82 |  | 224,546Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $8.57 to $9.07 |  | $ | 8.97Ìý | Ìý |  | 164,333Ìý | Ìý |  | $ | 8.97Ìý | Ìý |  | 2.94 |  | 54,778Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  |  |  
| Options only |  |  |  | 2,776,778Ìý | Ìý |  |  |  |  |  | 1,824,684Ìý | Ìý |  | 
| 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. 
|  |  |  |  |  |  |  |  |  |  |  |  |  
|  | January 31, 2020
 |  | April 30, 2019
 |  
| Expected life (years) | 3.5 |  | 3.5 |  
| Expected volatility | 47.4Ìý | % |  | 50.1Ìý | % |  
| Risk-free interest rate | 1.63Ìý | % |  | 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 nine months ended JanuaryÌý31, 2020, 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 |  | 150,000Ìý | Ìý |  | 5.21Ìý | Ìý |  | —Ìý | Ìý |  | —Ìý | Ìý |  
| Exercised |  | (580,901) | Ìý |  | 2.72Ìý | Ìý |  | —Ìý | Ìý |  | —Ìý | Ìý |  
| Forfeited |  | (200,475) | Ìý |  | 7.44Ìý | Ìý |  | —Ìý | Ìý |  | —Ìý | Ìý |  
| Expired |  | —Ìý | Ìý |  | —Ìý | Ìý |  | —Ìý | Ìý |  | —Ìý | Ìý |  
| Balance Outstanding, JanuaryÌý31, 2020 |  | 2,776,778Ìý | Ìý |  | $ | 4.61Ìý | Ìý |  | 2.21 |  | $ | 14,302,102Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  
| Exercisable, JanuaryÌý31, 2020 |  | 1,824,684Ìý | Ìý |  | $ | 3.77Ìý | Ìý |  | 1.66 |  | $ | 11,808,246Ìý | Ìý |  | 
| 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.19 |  | 50,000Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $ | 5.85Ìý | Ìý |  | $ | 5.85Ìý | Ìý |  | 92,049Ìý | Ìý |  | $ | 5.85Ìý | Ìý |  | 3.76 |  | 92,049Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $ | 6.00Ìý | Ìý |  | $ | 6.00Ìý | Ìý |  | 200,000Ìý | Ìý |  | $ | 6.00Ìý | Ìý |  | 4.10 |  | 200,000Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $ | 6.87Ìý | Ìý |  | $ | 6.87Ìý | Ìý |  | 224,174Ìý | Ìý |  | $ | 6.87Ìý | Ìý |  | 2.48 |  | 224,174Ìý | Ìý |  
|  |  |  |  |  |  |  |  |  |  |  |  
| ÌýÌý | Ìý |  |  |  | 566,223Ìý | Ìý |  | ÌýÌý | Ìý |  | ÌýÌý | Ìý |  | 566,223Ìý | Ìý |  |