// constructor - this function construct new board with 3 defulat column (Backlog, In progress and Done)
 // board_ID initialized with the user email
 public Board(String email, String password)
 {
     columnsHashTable.Add(1, new Column("Backlog"));
     columnsHashTable.Add(2, new Column("In progress"));
     columnsHashTable.Add(3, new Column("Done"));
     if (DataLayerColumn.Open("Backlog", email) == null)
     {
         DataLayerColumn.save("Backlog", int.MaxValue, email, "Backlog");
     }
     if (DataLayerColumn.Open("In progress", email) == null)
     {
         DataLayerColumn.save("In progress", int.MaxValue, email, "In progress");
     }
     if (DataLayerColumn.Open("Done", email) == null)
     {
         DataLayerColumn.save("Done", int.MaxValue, email, "Done");
     }
     this.currColumnCount = 3;
     this.boardID         = email;
 }
        // this function collet all the tasks from data and forward to the specific column they belong to.
        public int open(string author, string existingColumns)
        {
            int numberOfColumns = 1;

            columnsHashTable     = new Hashtable();
            this.currColumnCount = 0;
            string columnID;

            string[] splited = existingColumns.Split('+');
            for (int i = 0; i < splited.Length; i = i + 1)
            {
                if (!splited[i].Equals(""))
                {
                    columnID = splited[i];
                    ColumnD columnD = DataLayerColumn.Open(columnID, author);
                    Column  column  = new Column(columnD.getName());
                    column.setMAX_TASKS(author, columnD.getMaxCapacity());
                    columnsHashTable.Add(numberOfColumns, column);
                    this.currColumnCount = this.currColumnCount + 1;
                    numberOfColumns      = numberOfColumns + 1;
                    Log.Info("Column " + column.getName() + " loaded successfully from the database.");
                }
            }
            int   numberOfTasksAdded = 0;
            TaskD taskD = DataLayerTask.Open(numberOfTasksAdded, author);

            while (taskD != null)
            {
                Column column = (Column)columnsHashTable[taskD.getStatus()];
                column.addTask(taskD.getTitle(), taskD.getDescription(), taskD.getStatus(), taskD.getDueDate(), taskD.getCreationTime(), taskD.getAuthor(), taskD.getTaskUID());
                Log.Info("Task #" + numberOfTasksAdded + " loaded successfully from the database.");
                numberOfTasksAdded++;
                taskD = DataLayerTask.Open(numberOfTasksAdded, author);
            }
            return(numberOfTasksAdded);
        }