/**
           * This function gets UserID and QueryOption and returns the TaskID,TaskName,
           * Status,ElapsedTime of all the tasks that have the given UserID and that they are
           * in the state of the given QueryOpiton.
           */
        public List<TaskStatus> getWorkDetails(String userID, QueryOption option)
        {
            // 1. Instantiate the connection
            SqlConnection conn = new SqlConnection(SettingsReader.getConnectionString());

            SqlDataReader rdr = null;

            List<TaskStatus> taskDetailsList = new List<TaskStatus>();

            try
            {
                // 2. Open the connection
                conn.Open();

                SqlCommand cmd;

                String statusString = "";

                switch (option)
                {
                    case QueryOption.ActiveTasks:
                        statusString = "ACTIVE";
                        break;
                    case QueryOption.IdleTasks:
                        statusString = "IDLE";
                        break;
                    case QueryOption.WaitingTasks:
                        statusString = "WAITING";
                        break;
                    default:
                        statusString = "";
                        break;
                }

                if (option == QueryOption.AllTasks)
                {
                    cmd = new SqlCommand("SELECT TaskID,TaskName,Status,ElapsedTime from Task WHERE UserID=\'" + userID + "\'", conn);
                }
                else
                {
                    cmd = new SqlCommand("SELECT TaskID,TaskName,Status,ElapsedTime from Task" +
                            " WHERE UserID=\'" + userID + "\' AND Status=\'" + statusString + "\'", conn);
                }

                // get query results
                rdr = cmd.ExecuteReader();

                if (rdr.HasRows)
                {
                    while (rdr.Read())
                    {
                        TaskStatus taskDetails = new TaskStatus(rdr["TaskID"].ToString());
                        taskDetails.setTaskElapsedTime((long)rdr["ElapsedTime"]);
                        taskDetails.setTaskName((String)rdr["TaskName"]);
                        Status statusOfTask = TaskStatus.convertToStatusObj((String)rdr["Status"]);
                        taskDetails.setTaskStatus(statusOfTask);
                        taskDetailsList.Add(taskDetails);
                    }
                }
            }
            finally
            {
                // close the reader
                if (rdr != null)
                {
                    rdr.Close();
                }

                // 5. Close the connection
                if (conn != null)
                {
                    conn.Close();
                }
            }
            return taskDetailsList;
        }
 public void Test3()
 {
     Console.WriteLine("[] Trying to change an existing task ...");
     ConfigurationStorageImp ss = new ConfigurationStorageImp();
     TaskStatus status = new TaskStatus("92667983-3cb9-4cb7-8b5b-5febb5db9341");
     status.setTaskElapsedTime(39);
     status.setTaskName("snoop");
     status.setTaskStatus(Status.Waiting);
     ss.changeWorkDetails(status);
     Console.WriteLine(" - PASSED -");
 }