Ejemplo n.º 1
0
        public RowOpResult DeleteColumn(ColumnDTO column)
        {
            RowOpResult result = new RowOpResult();

            // Delete task from db
            using (SqliteConnection db =
                       new SqliteConnection(this.db.Database.GetDbConnection().ConnectionString))
            {
                db.Open();

                try
                {
                    SqliteCommand deleteCommand = new SqliteCommand
                                                      ("DELETE FROM tblColumns WHERE Id=@id AND BoardID=@boardId", db);
                    deleteCommand.Parameters.AddWithValue("id", column.Id);
                    deleteCommand.Parameters.AddWithValue("boardId", column.BoardId);
                    deleteCommand.ExecuteNonQuery();

                    SqliteCommand deleteTasksCommand = new SqliteCommand
                                                           ("DELETE FROM tblTasks WHERE Category=@category", db);
                    deleteTasksCommand.Parameters.AddWithValue("category", column.ColumnName);
                    deleteTasksCommand.ExecuteNonQuery();

                    result.Success = true;
                }
                finally
                {
                    db.Close();
                }
            }
            return(result);
        }
Ejemplo n.º 2
0
        public RowOpResult UpdateColumnIndex(ColumnDTO column)
        {
            RowOpResult result = new RowOpResult();

            using (SqliteConnection db =
                       new SqliteConnection(this.db.Database.GetDbConnection().ConnectionString))
            {
                db.Open();

                try
                {
                    SqliteCommand updateCommand = new SqliteCommand
                                                      ("UPDATE tblColumns SET Position=@position WHERE Id=@id AND BoardId=@boardId", db);

                    updateCommand.Parameters.AddWithValue("@id", column.Id);
                    updateCommand.Parameters.AddWithValue("@boardId", column.BoardId);
                    updateCommand.Parameters.AddWithValue("@position", column.Position);
                    updateCommand.ExecuteNonQuery();
                }
                finally
                {
                    db.Close();
                }
            }
            return(result);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Updates the column's data in the database
        /// </summary>
        /// <param name="column"></param>
        /// <returns></returns>
        public RowOpResult <ColumnDTO> SaveColumn(ColumnDTO column)
        {
            RowOpResult <ColumnDTO> result = new RowOpResult <ColumnDTO>(column);

            using (SqliteConnection db = new SqliteConnection(this.db.Database.GetDbConnection().ConnectionString))
            {
                try
                {
                    db.Open();
                    SqliteCommand command = new SqliteCommand {
                        Connection = db
                    };
                    command.Parameters.AddWithValue("@id", column.Id);
                    command.Parameters.AddWithValue("@boardId", column.BoardId);
                    command.Parameters.AddWithValue("@columnName", column.ColumnName);
                    command.Parameters.AddWithValue("@maxTaskLimit", column.MaxTaskLimit);
                    command.CommandText = "UPDATE tblColumns SET ColumnName=@columnName,MaxTaskLimit=@maxTaskLimit WHERE Id=@id AND BoardID=@boardId";
                    command.ExecuteNonQuery();

                    result.Success = true;
                }
                finally
                {
                    db.Close();
                }
            }
            return(result);
        }
Ejemplo n.º 4
0
        public ColumnDTO CreateColumn(ColumnDTO column)
        {
            RowOpResult <ColumnDTO> result = new RowOpResult <ColumnDTO>(column);

            using (SqliteConnection db = new SqliteConnection(this.db.Database.GetDbConnection().ConnectionString))
            {
                try
                {
                    db.Open();

                    SqliteCommand insertCommand = new SqliteCommand {
                        Connection = db
                    };
                    insertCommand.Parameters.AddWithValue("@boardId", column.BoardId);
                    insertCommand.Parameters.AddWithValue("@columnName", column.ColumnName);
                    insertCommand.Parameters.AddWithValue("@position", column.Position);
                    insertCommand.Parameters.AddWithValue("@maxTaskLimit", column.MaxTaskLimit);
                    insertCommand.CommandText =
                        "INSERT INTO tblColumns (BoardID,ColumnName,Position,MaxTaskLimit) " +
                        "VALUES (@boardId, @columnName, @position, @maxTaskLimit); ; SELECT last_insert_rowid();";
                    column.Id = Convert.ToInt32(insertCommand.ExecuteScalar());

                    result.Success = true;
                }
                finally
                {
                    db.Close();
                }
                return(column);
            }
        }
Ejemplo n.º 5
0
        public virtual RowOpResult <BoardDTO> ValidateBoard(RowOpResult <BoardDTO> result)
        {
            BoardDTO b = result.Entity;

            if (string.IsNullOrEmpty(b.Name))
            {
                result.ErrorMessage = "Name is required.";
            }
            else if (b.Name.Length > 100)
            {
                result.ErrorMessage = "Name is too long.";
            }
            if (string.IsNullOrEmpty(b.Notes))
            {
                result.ErrorMessage = "Notes are required.";
            }
            else if (b.Notes.Length > 1000)
            {
                result.ErrorMessage = "Notes are too long.";
            }

            // more validation here
            result.Success = string.IsNullOrEmpty(result.ErrorMessage);
            return(result);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Deletes the tasks associated with the current board first
        /// and then removes the board from tblBoards
        /// </summary>
        /// <param name="boardId"></param>
        /// <returns>If deletion was successful</returns>
        public RowOpResult DeleteBoard(int boardId)
        {
            RowOpResult result = new RowOpResult();

            // Delete task from db
            using (SqliteConnection db =
                       new SqliteConnection(this.db.Database.GetDbConnection().ConnectionString))
            {
                db.Open();

                try
                {
                    SqliteCommand deleteCommand = new SqliteCommand
                                                      ("DELETE FROM tblTasks WHERE BoardID=@boardId", db);
                    deleteCommand.Parameters.AddWithValue("boardId", boardId);
                    deleteCommand.ExecuteNonQuery();

                    deleteCommand = new SqliteCommand
                                        ("DELETE FROM tblBoards WHERE Id=@id", db);
                    deleteCommand.Parameters.AddWithValue("id", boardId);
                    deleteCommand.ExecuteNonQuery();

                    result.Success = true;
                    return(result);
                }

                finally
                {
                    db.Close();
                }
            }
        }
Ejemplo n.º 7
0
        public virtual RowOpResult DeleteBoard(int boardId)
        {
            RowOpResult result = new RowOpResult();
            BoardDTO    board  = db.Boards.FirstOrDefault(x => x.Id == boardId);

            if (board == null)
            {
                result.ErrorMessage = $"boardId {boardId} is invalid.  Board may have already been deleted.";
                return(result);
            }

            db.Entry(board).State = EntityState.Deleted;
            db.SaveChanges();
            result.Success = true;
            return(result);
        }
Ejemplo n.º 8
0
        public virtual RowOpResult <BoardDTO> SaveBoard(BoardDTO board)
        {
            RowOpResult <BoardDTO> result = new RowOpResult <BoardDTO>(board);

            ValidateBoard(result);

            if (!result.Success)
            {
                return(result);
            }

            db.Entry(board).State = board.Id == 0 ? EntityState.Added : EntityState.Modified;
            db.SaveChanges();
            result.Success = true;
            return(result);
        }
Ejemplo n.º 9
0
        public virtual RowOpResult DeleteTask(int id)
        {
            RowOpResult result = new RowOpResult();
            TaskDTO     task   = db.Tasks.FirstOrDefault(x => x.Id == id);

            if (task == null)
            {
                result.ErrorMessage = $"taskId {id} is invalid.  Task may have already been deleted.";
                return(result);
            }

            db.Entry(task).State = EntityState.Deleted;
            db.SaveChanges();
            result.Success = true;
            return(result);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Inserts the passed Board object if the ID is zero, otherwise updates it.
        /// </summary>
        /// <param name="board"></param>
        /// <returns></returns>
        public RowOpResult <BoardDTO> SaveBoard(BoardDTO board)
        {
            RowOpResult <BoardDTO> result = new RowOpResult <BoardDTO>(board);

            ValidateBoard(result);

            if (!result.Success)
            {
                return(result);
            }

            using (SqliteConnection db = new SqliteConnection(this.db.Database.GetDbConnection().ConnectionString))
            {
                try
                {
                    db.Open();
                    SqliteCommand command = new SqliteCommand {
                        Connection = db
                    };
                    command.Parameters.AddWithValue("@boardName", board.Name);
                    command.Parameters.AddWithValue("@boardNotes", board.Notes);

                    if (board.Id == 0)
                    {
                        command.CommandText = "INSERT INTO tblBoards (Name,Notes) VALUES (@boardName, @boardNotes); ; SELECT last_insert_rowid();";
                        board.Id            = Convert.ToInt32(command.ExecuteScalar());
                    }
                    else
                    {
                        command.Parameters.AddWithValue("@boardId", board.Id);
                        command.CommandText = "UPDATE tblBoards SET Name=@boardName,Notes=@boardNotes WHERE Id=@boardId";
                        command.ExecuteNonQuery();
                    }
                    result.Success = true;
                }
                finally
                {
                    db.Close();
                }
            }
            return(result);
        }
Ejemplo n.º 11
0
        public virtual RowOpResult <TaskDTO> SaveTask(TaskDTO task)
        {
            if (task == null)
            {
                throw new ArgumentNullException(nameof(task));
            }

            RowOpResult <TaskDTO> result = new RowOpResult <TaskDTO>(task);

            ValidateTask(result);

            if (!result.Success)
            {
                return(result);
            }

            db.Entry(task).State = task.Id == 0 ? EntityState.Added : EntityState.Modified;
            db.SaveChanges();
            result.Success = true;
            return(result);
        }
Ejemplo n.º 12
0
        public virtual RowOpResult <TaskDTO> ValidateTask(RowOpResult <TaskDTO> result)
        {
            TaskDTO t = result.Entity;

            // NOTE: Require Title? For now just set it to empty string; if not db will throw exception for null
            // Set the dates to null if nothing set.. otherwise sqlite insert crashes because of no value to insert
            if (string.IsNullOrEmpty(t.Title))
            {
                t.Title = "";
            }
            else if (t.Title.Length > 100)
            {
                result.ErrorMessage = "Title is too long.";
            }
            if (string.IsNullOrEmpty(t.Description))
            {
                t.Description = "";
            }
            if (string.IsNullOrEmpty(t.DueDate))
            {
                t.DueDate = "";
            }
            if (string.IsNullOrEmpty(t.FinishDate))
            {
                t.FinishDate = "";
            }
            if (string.IsNullOrEmpty(t.ReminderTime))
            {
                t.ReminderTime = "";
            }
            if (string.IsNullOrEmpty(t.StartDate))
            {
                t.StartDate = "";
            }


            // more validation here
            result.Success = string.IsNullOrEmpty(result.ErrorMessage);
            return(result);
        }
Ejemplo n.º 13
0
        public virtual RowOpResult <TaskDTO> ValidateTask(RowOpResult <TaskDTO> result)
        {
            TaskDTO t = result.Entity;

            // NOTE: Require Title? For now just set it to empty string; if not db will throw exception for null
            if (string.IsNullOrEmpty(t.Title))
            {
                t.Title = "";
            }
            else if (t.Title.Length > 100)
            {
                result.ErrorMessage = "Title is too long.";
            }
            if (string.IsNullOrEmpty(t.Description))
            {
                t.Description = "";
            }

            // more validation here
            result.Success = string.IsNullOrEmpty(result.ErrorMessage);
            return(result);
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Inserts the passed Task object if it's ID is zero, otherwise updates it.
        /// </summary>
        /// <param name="task"></param>
        /// <returns></returns>
        public RowOpResult <TaskDTO> SaveTask(TaskDTO task)
        {
            if (task == null)
            {
                throw new ArgumentNullException(nameof(task));
            }

            RowOpResult <TaskDTO> result = new RowOpResult <TaskDTO>(task);

            ValidateTask(result);

            if (!result.Success)
            {
                return(result);
            }

            using (SqliteConnection db = new SqliteConnection(this.db.Database.GetDbConnection().ConnectionString))
            {
                db.Open();

                try
                {
                    SqliteCommand command = new SqliteCommand {
                        Connection = db
                    };
                    command.Parameters.AddWithValue("@title", task.Title);
                    command.Parameters.AddWithValue("@desc", task.Description);
                    command.Parameters.AddWithValue("@categ", task.Category);
                    command.Parameters.AddWithValue("@colorKey", task.ColorKey);
                    command.Parameters.AddWithValue("@tags", task.Tags);
                    command.Parameters.AddWithValue("@columnIndex", task.ColumnIndex);
                    command.Parameters.AddWithValue("@dueDate", task.DueDate);
                    command.Parameters.AddWithValue("@finishDate", task.FinishDate);
                    command.Parameters.AddWithValue("@timeDue", task.TimeDue);
                    command.Parameters.AddWithValue("@reminderTime", task.ReminderTime);
                    command.Parameters.AddWithValue("@startDate", task.StartDate);

                    if (task.Id == 0)
                    {
                        // Insert a new row
                        command.Parameters.AddWithValue("@boardID", task.BoardId);
                        command.Parameters.AddWithValue("@dateCreated", task.DateCreated);
                        command.CommandText = "INSERT INTO tblTasks (BoardID,DateCreated,Title,Description,Category,ColorKey,Tags, ColumnIndex, DueDate, FinishDate, TimeDue, ReminderTime, StartDate) VALUES (" +
                                              "@boardID, @dateCreated, @title, @desc, @categ, @colorKey, @tags, @columnIndex, @dueDate, @finishDate, @timeDue, @reminderTime, @startDate); ; SELECT last_insert_rowid();";
                        task.Id = Convert.ToInt32(command.ExecuteScalar());
                    }
                    else
                    {
                        // Update an existing row
                        command.Parameters.AddWithValue("@id", task.Id);
                        command.CommandText = "UPDATE tblTasks SET Title=@title, Description=@desc, Category=@categ, ColorKey=@colorKey, Tags=@tags, ColumnIndex=@columnIndex, DueDate=@dueDate, FinishDate=@finishDate, TimeDue=@timeDue, ReminderTime=@reminderTime, StartDate=@startDate WHERE Id=@id";
                        command.ExecuteNonQuery();
                    }

                    result.Success = true;
                }
                catch (Exception)
                {
                    result.Success = false;
                    throw;
                }
                finally
                {
                    db.Close();
                }
            }
            return(result);
        }
Ejemplo n.º 15
0
        public RowOpResult CreateColumns(int boardId)
        {
            RowOpResult result = new RowOpResult();

            using (SqliteConnection db =
                       new SqliteConnection(this.db.Database.GetDbConnection().ConnectionString))
            {
                db.Open();

                try
                {
                    //List<ColumnDTO> defaultColumns = CreateDefaultColumns(boardId);

                    // Set default columns for new board
                    ColumnDTO columnOne, columnTwo, columnThree, columnFour, columnFive;
                    columnOne = new ColumnDTO
                    {
                        BoardId      = boardId,
                        ColumnName   = "Backlog",
                        Position     = 0,
                        MaxTaskLimit = 10
                    };

                    columnTwo = new ColumnDTO
                    {
                        BoardId      = boardId,
                        ColumnName   = "To Do",
                        Position     = 1,
                        MaxTaskLimit = 10
                    };

                    columnThree = new ColumnDTO
                    {
                        BoardId      = boardId,
                        ColumnName   = "In Progress",
                        Position     = 2,
                        MaxTaskLimit = 10
                    };

                    columnFour = new ColumnDTO
                    {
                        BoardId      = boardId,
                        ColumnName   = "Review",
                        Position     = 3,
                        MaxTaskLimit = 10
                    };

                    columnFive = new ColumnDTO
                    {
                        BoardId      = boardId,
                        ColumnName   = "Completed",
                        Position     = 4,
                        MaxTaskLimit = 10
                    };

                    // Insert columns and return id
                    SqliteCommand insertCommand = new SqliteCommand {
                        Connection = db
                    };
                    insertCommand.Parameters.AddWithValue("@boardId", columnOne.BoardId);
                    insertCommand.Parameters.AddWithValue("@columnName", columnOne.ColumnName);
                    insertCommand.Parameters.AddWithValue("@position", columnOne.Position);
                    insertCommand.Parameters.AddWithValue("@maxTaskLimit", columnOne.MaxTaskLimit);
                    insertCommand.CommandText =
                        "INSERT INTO tblColumns (BoardID,ColumnName,Position, MaxTaskLimit) " +
                        "VALUES (@boardId, @columnName, @position, @maxTaskLimit); ; SELECT last_insert_rowid();";
                    columnOne.Id = Convert.ToInt32(insertCommand.ExecuteScalar());

                    insertCommand.Parameters.Clear();
                    insertCommand.Parameters.AddWithValue("@boardId", columnTwo.BoardId);
                    insertCommand.Parameters.AddWithValue("@columnName", columnTwo.ColumnName);
                    insertCommand.Parameters.AddWithValue("@position", columnTwo.Position);
                    insertCommand.Parameters.AddWithValue("@maxTaskLimit", columnOne.MaxTaskLimit);
                    insertCommand.CommandText =
                        "INSERT INTO tblColumns (BoardID,ColumnName,Position, MaxTaskLimit) " +
                        "VALUES (@boardId, @columnName, @position, @maxTaskLimit); ; SELECT last_insert_rowid();";
                    columnTwo.Id = Convert.ToInt32(insertCommand.ExecuteScalar());

                    insertCommand.Parameters.Clear();
                    insertCommand.Parameters.AddWithValue("@boardId", columnThree.BoardId);
                    insertCommand.Parameters.AddWithValue("@columnName", columnThree.ColumnName);
                    insertCommand.Parameters.AddWithValue("@position", columnThree.Position);
                    insertCommand.Parameters.AddWithValue("@maxTaskLimit", columnOne.MaxTaskLimit);
                    insertCommand.CommandText =
                        "INSERT INTO tblColumns (BoardID,ColumnName,Position, MaxTaskLimit) " +
                        "VALUES (@boardId, @columnName, @position, @maxTaskLimit); ; SELECT last_insert_rowid();";
                    columnThree.Id = Convert.ToInt32(insertCommand.ExecuteScalar());

                    insertCommand.Parameters.Clear();
                    insertCommand.Parameters.AddWithValue("@boardId", columnFour.BoardId);
                    insertCommand.Parameters.AddWithValue("@columnName", columnFour.ColumnName);
                    insertCommand.Parameters.AddWithValue("@position", columnFour.Position);
                    insertCommand.Parameters.AddWithValue("@maxTaskLimit", columnOne.MaxTaskLimit);
                    insertCommand.CommandText =
                        "INSERT INTO tblColumns (BoardID,ColumnName,Position, MaxTaskLimit) " +
                        "VALUES (@boardId, @columnName, @position, @maxTaskLimit); ; SELECT last_insert_rowid();";
                    columnFour.Id = Convert.ToInt32(insertCommand.ExecuteScalar());

                    insertCommand.Parameters.Clear();
                    insertCommand.Parameters.AddWithValue("@boardId", columnFive.BoardId);
                    insertCommand.Parameters.AddWithValue("@columnName", columnFive.ColumnName);
                    insertCommand.Parameters.AddWithValue("@position", columnFive.Position);
                    insertCommand.Parameters.AddWithValue("@maxTaskLimit", columnOne.MaxTaskLimit);
                    insertCommand.CommandText =
                        "INSERT INTO tblColumns (BoardID,ColumnName,Position, MaxTaskLimit) " +
                        "VALUES (@boardId, @columnName, @position, @maxTaskLimit); ; SELECT last_insert_rowid();";
                    columnFive.Id = Convert.ToInt32(insertCommand.ExecuteScalar());

                    result.Success = true;
                    return(result);
                }

                finally
                {
                    db.Close();
                }
            }
        }