private async Task SetHWStatusAsync(int hwID, HWStatus status)
 {
     try
     {
         var cmd = this.sqlConnection.CreateCommand();
         cmd.CommandType = System.Data.CommandType.Text;
         cmd.CommandText = "update homework set status = @status where hw_id = @hw_id";
         cmd.Parameters.Add("@status", MySqlDbType.Int16);
         cmd.Parameters.Add("@hw_id", MySqlDbType.Int32);
         cmd.Parameters["@status"].Value = (int)status;
         cmd.Parameters["@hw_id"].Value  = hwID;
         await cmd.ExecuteNonQueryAsync();
     }
     catch (Exception e)
     {
         logger.LogError(e.Message);
         throw new Exception("Action Failed!");
     }
 }
        private async Task <List <HWTime> > GetHWTimeListAsync(HWStatus status)
        {
            try
            {
                var cmd = this.sqlConnection.CreateCommand();
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.CommandText = "select hw_id, course_id, title, startTime, endTime from homework where status = @status";
                cmd.Parameters.Add("@status", MySqlDbType.Int16);
                cmd.Parameters["@status"].Value = (int)status;
                using var reader = await cmd.ExecuteReaderAsync();

                var resList = new List <HWTime>();
                while (await reader.ReadAsync())
                {
                    var id        = Convert.ToInt32(reader["hw_id"]);
                    var title     = Convert.ToString(reader["title"]);
                    var courseID  = Convert.ToInt32(reader["course_id"]);
                    var startTime = Convert.ToDateTime(reader["startTime"]);
                    var endTime   = Convert.ToDateTime(reader["endTime"]);
                    resList.Add(new HWTime()
                    {
                        ID        = id,
                        Title     = title,
                        CourseID  = courseID,
                        StartTime = startTime,
                        EndTime   = endTime,
                        Status    = status
                    });
                }
                return(resList);
            }
            catch (Exception e)
            {
                logger.LogError(e.Message);
                throw new Exception("Action Failed!");
            }
        }