| Stockholders' Equity (Tables)
 | 6 Months Ended | 
| Oct. 31, 2020 | 
|---|
| Schedule of Restricted Stock Unit Activity | A summary of the Company’s RSU activity which were granted under the 2012 and 2018 Equity Incentive Plans during the six months ended October 31, 2020 is presented below: 
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  
| Restricted Stock Units |  | Number of Shares |  | Weighted Average Grant Price |  
| Unvested Balance Outstanding, April 30,2020 |  | 643,175Ìý |  |  | $ | 5.64Ìý |  |  
| Granted |  | 169,043Ìý |  |  | 9.33Ìý |  |  
| Exercised |  | —Ìý |  |  | —Ìý |  |  
| Forfeits |  | (4,250) |  |  | 7.49Ìý |  |  
| Vested |  | (138,168) |  |  | 12.83Ìý |  |  
| Expired |  | —Ìý |  |  | —Ìý |  |  
| Unvested Balance Outstanding, October 31,2020 |  | 669,800Ìý |  |  | $ | 6.16Ìý |  |  | 
| Summary of Warrant Activity | A summary of the Company’s warrant activity during the six months ended OctoberÌý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, 2020 |  | 566,223Ìý |  |  | $ | 6.22Ìý |  |  | 3.17 |  | $ | 950,100Ìý |  |  
| Granted |  | —Ìý |  |  | $ | —Ìý |  |  | —Ìý |  |  | —Ìý |  |  
| Exercised |  | (192,049) |  |  | $ | 5.60Ìý |  |  | —Ìý |  |  | —Ìý |  |  
| Surrendered |  | —Ìý |  |  | $ | —Ìý |  |  | —Ìý |  |  | —Ìý |  |  
| Expired |  | —Ìý |  |  | $ | —Ìý |  |  | —Ìý |  |  | —Ìý |  |  
| Balance Outstanding, October 31, 2020 |  | 374,174Ìý |  |  | $ | 6.37Ìý |  |  | 2.39 |  | $ | 1,125,177Ìý |  |  
|  |  |  |  |  |  |  |  |  |  
| Exercisable, October 31, 2020 |  | 374,174Ìý |  |  | $ | 6.37Ìý |  |  | 2.39 |  | $ | 1,125,177Ìý |  |  | 
| Warrant | Ìý | 
| Share-based Payment Arrangement, Option, Exercise Price Range | 
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  
| OUTSTANDING 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Ìý |  |  | 3.44 |  | 50,000Ìý |  |  
|  |  |  |  |  |  |  |  |  |  |  |  
|  |  |  |  |  |  |  |  |  |  |  |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $ | 6.00Ìý |  |  | $ | 6.00Ìý |  |  | 100,000Ìý |  |  | $ | 6.00Ìý |  |  | 3.35 |  | 100,000Ìý |  |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $ | 6.87Ìý |  |  | $ | 6.87Ìý |  |  | 224,174Ìý |  |  | $ | 6.87Ìý |  |  | 1.73 |  | 224,174Ìý |  |  
|  |  |  |  |  |  |  |  |  |  |  |  
| Ìý |  |  |  | 374,174Ìý |  |  | Ìý |  | Ìý |  | 374,174Ìý |  |  | 
| Stock Incentive Plan and Stock Option Grants to Employees and Directors | Ìý | 
| Share-based Payment Arrangement, Option, Exercise Price Range | 
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  
| OUTSTANDING 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.86Ìý |  |  | 35,141Ìý |  |  | $ | 1.86Ìý |  |  | 0.44 |  | 35,141Ìý |  |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $2.28 to $2.76 |  | $ | 2.34Ìý |  |  | 96,573Ìý |  |  | $ | 2.34Ìý |  |  | 0.25 |  | 96,573Ìý |  |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $3.24 to $4.38 |  | $ | 3.90Ìý |  |  | 262,658Ìý |  |  | $ | 3.87Ìý |  |  | 0.95 |  | 220,657Ìý |  |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $4.50 to $5.20 |  | $ | 4.93Ìý |  |  | 650,808Ìý |  |  | $ | 4.91Ìý |  |  | 1.75 |  | 540,896Ìý |  |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $5.95 to $6.28 |  | $ | 6.10Ìý |  |  | 67,000Ìý |  |  | $ | 6.10Ìý |  |  | 1.72 |  | 67,000Ìý |  |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $7.17 to $7.55 |  | $ | 7.45Ìý |  |  | 474,425Ìý |  |  | $ | 7.43Ìý |  |  | 2.87 |  | 329,175Ìý |  |  
|  |  |  |  |  |  |  |  |  |  |  |  
| $8.57 to $9.07 |  | $ | 8.98Ìý |  |  | 157,749Ìý |  |  | $ | 9.00Ìý |  |  | 2.18 |  | 149,888Ìý |  |  
|  |  |  |  |  |  |  |  |  |  |  |  
| Options only |  |  |  | 1,744,354Ìý |  |  |  |  |  |  | 1,439,330Ìý |  |  | 
| 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, 2020
 |  
| Expected life (years) | n/a |  
| Expected volatility | n/a |  
| Risk-free interest rate | n/a |  
| Dividend yield | n/a |  
| Expected forfeiture rate | 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, 2020, is presented below: 
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  
| Options |  | Number of Shares
 |  | Weighted Average
 Exercise
 Price
 |  | Weighted Average
 Remaining
 Contractual
 Term
 |  | Aggregate Intrinsic
 Value
 |  
| Balance Outstanding, April 30, 2020 |  | 2,740,539Ìý |  |  | $ | 4.62Ìý |  |  | 1.97 |  | $ | 9,146,198Ìý |  |  
| Granted |  | —Ìý |  |  | $ | —Ìý |  |  | —Ìý |  |  | —Ìý |  |  
| Exercised |  | (989,767) |  |  | $ | 10.78Ìý |  |  | —Ìý |  |  | —Ìý |  |  
| Forfeited |  | (6,418) |  |  | $ | 6.51Ìý |  |  | —Ìý |  |  | —Ìý |  |  
| Expired |  | —Ìý |  |  | $ | —Ìý |  |  | —Ìý |  |  | —Ìý |  |  
| Balance Outstanding, OctoberÌý31, 2020 |  | 1,744,354Ìý |  |  | $ | 5.66Ìý |  |  | 1.99 |  | $ | 6,482,286Ìý |  |  
|  |  |  |  |  |  |  |  |  |  
| Exercisable, OctoberÌý31, 2020 |  | 1,439,330Ìý |  |  | $ | 5.66Ìý |  |  | 1.79 |  | $ | 5,495,787Ìý |  |  |