/// <summary> /// Simple constructor of the board, so it need an email(unique) in order to create a new one for a new user! /// </summary> /// <param name="email"></param> public Board(string email) { taskId = 1; Email = email; boardColumns = new List <Column>(); columnDalController = new DataAccess_Layer.ColumnDalController(); taskDalController = new DataAccess_Layer.TaskDalController(); Column c1 = new Column("backlog"); c1.Email = email; c1.columnID = 0; columnDalController.Insert(c1.ToDalObject()); Column c2 = new Column("in progress"); c2.Email = email; c2.columnID = 1; columnDalController.Insert(c2.ToDalObject()); Column c3 = new Column("done"); c3.Email = email; c3.columnID = 2; columnDalController.Insert(c3.ToDalObject()); boardColumns.Add(c1); boardColumns.Add(c2); boardColumns.Add(c3); }
/// <summary> /// Simple constructor /// </summary> public BoardController() { boardController = new Dictionary <string, Board>(); userOnline = new Dictionary <string, bool>(); UsersOfBoard = new Dictionary <string, List <string> >(); DataOfBoard = new DataAccess_Layer.BoardDalController(); DataOfTask = new DataAccess_Layer.TaskDalController(); DataOfColumn = new DataAccess_Layer.ColumnDalController(); id = 0; }
/// <summary> /// Constructor converting DAL-Board to BL-Board - in order to load data /// </summary> /// <param name="b"></param> public Board(DataAccess_Layer.DTOs.BoardDTO b) { taskId = b.taskID; Email = b.Email; columnDalController = new DataAccess_Layer.ColumnDalController(); List <ColumnDTO> colDTO_list = columnDalController.SelectUserColumns(Email); boardColumns = new List <Column>(); foreach (ColumnDTO col in colDTO_list) { boardColumns.Add(new Column(col)); } id = b.ID; }
/// <summary> /// Removing an exists column from the board! /// WE musts have minimum 2 columns on the board! so if the NumberOfColumns equals to 2 throws an error! /// All the tasks are moved to the neighbor column but only if the neighbor coloum has limit > NumOfHisTasks + NumOfOtherTasks /// </summary> /// <param name="columnID"> unique id for the column to be moved! </param> public void removeColumn(int columnID) // 0 (1) 2 { taskDalController = new DataAccess_Layer.TaskDalController(); columnDalController = new DataAccess_Layer.ColumnDalController(); if (columnID < 0 || columnID >= boardColumns.Count || boardColumns.Count == 2) { throw new Exception("Board must have minmum of 2 columns!"); } if (columnID == 0) { if (!(getColumnById(1).getLimit() == -1) && getColumnById(1).getNumberOfTasks() + getColumnById(0).getNumberOfTasks() > getColumnById(1).getLimit()) { throw new Exception("Couldnt remove the column!"); } foreach (Task t in getColumnById(columnID).getTasks()) { taskDalController.Delete(t.ToDalObject()); boardColumns[1].addTask(t, t.getId()); } } else { if (!(getColumnById(columnID - 1).getLimit() == -1) && getColumnById(columnID - 1).getNumberOfTasks() + getColumnById(columnID).getNumberOfTasks() > getColumnById(columnID - 1).getLimit()) { throw new Exception("Couldnt remove the column!"); } foreach (Task t in getColumnById(columnID).getTasks()) { taskDalController.Delete(t.ToDalObject()); boardColumns[columnID - 1].addTask(t, t.getId()); } } columnDalController.Delete(getColumnById(columnID).ToDalObject()); //Shifting columns back. for (int i = columnID + 1; i < boardColumns.Count; i++) { boardColumns.ElementAt(i).columnID--; // done id = 1 boardColumns.ElementAt(i).Save(); } boardColumns.RemoveAt(columnID); Save();//Saving board due to columns decrement. }