From b0f2b7b48459aaf6674b49f0476402491a475173 Mon Sep 17 00:00:00 2001 From: Josh Kilgore Date: Fri, 3 Mar 2017 13:39:46 -0600 Subject: [PATCH 1/7] add first classes to reference database objects --- FakeTrello/FakeTrello.csproj | 1 + FakeTrello/Models/Board.cs | 11 +++++++++++ FakeTrello/Models/TrelloUser.cs | 18 ++++++++++++++++++ 3 files changed, 30 insertions(+) create mode 100644 FakeTrello/Models/Board.cs create mode 100644 FakeTrello/Models/TrelloUser.cs diff --git a/FakeTrello/FakeTrello.csproj b/FakeTrello/FakeTrello.csproj index ee73a9c..6e5ae07 100644 --- a/FakeTrello/FakeTrello.csproj +++ b/FakeTrello/FakeTrello.csproj @@ -186,6 +186,7 @@ + diff --git a/FakeTrello/Models/Board.cs b/FakeTrello/Models/Board.cs new file mode 100644 index 0000000..75ffc25 --- /dev/null +++ b/FakeTrello/Models/Board.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace FakeTrello.Models +{ + public class Board + { + } +} \ No newline at end of file diff --git a/FakeTrello/Models/TrelloUser.cs b/FakeTrello/Models/TrelloUser.cs new file mode 100644 index 0000000..6b103e4 --- /dev/null +++ b/FakeTrello/Models/TrelloUser.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +//Entity is our Object Relational Mapper (ORM) + +namespace FakeTrello.Models +{ + public class TrelloUser + { + [Key] + public int TrelloUserId { get; set; } //Primary Key + public string Email { get; set; } + public string Username { get; set; } + public string FullName { get; set; } + } +} \ No newline at end of file From 6824538b7d10ceee7bc4e6e8e1bdf83d51c7b49f Mon Sep 17 00:00:00 2001 From: Josh Kilgore Date: Fri, 3 Mar 2017 22:43:09 -0600 Subject: [PATCH 2/7] add my two classes to match my diagram --- FakeTrello/Models/Card.cs | 11 +++++++++++ FakeTrello/Models/List.cs | 11 +++++++++++ 2 files changed, 22 insertions(+) create mode 100644 FakeTrello/Models/Card.cs create mode 100644 FakeTrello/Models/List.cs diff --git a/FakeTrello/Models/Card.cs b/FakeTrello/Models/Card.cs new file mode 100644 index 0000000..870af0a --- /dev/null +++ b/FakeTrello/Models/Card.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace FakeTrello.Models +{ + public class Card + { + } +} \ No newline at end of file diff --git a/FakeTrello/Models/List.cs b/FakeTrello/Models/List.cs new file mode 100644 index 0000000..5e60323 --- /dev/null +++ b/FakeTrello/Models/List.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace FakeTrello.Models +{ + public class List + { + } +} \ No newline at end of file From 698dead02952d4b352220bf89edb4040c4d2567c Mon Sep 17 00:00:00 2001 From: Josh Kilgore Date: Sat, 4 Mar 2017 10:57:10 -0600 Subject: [PATCH 3/7] add new properties on classes --- FakeTrello/Models/Card.cs | 7 +++++++ FakeTrello/Models/List.cs | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/FakeTrello/Models/Card.cs b/FakeTrello/Models/Card.cs index 870af0a..2aaad76 100644 --- a/FakeTrello/Models/Card.cs +++ b/FakeTrello/Models/Card.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web; @@ -7,5 +8,11 @@ namespace FakeTrello.Models { public class Card { + [Key] + public int CardId { get; set; } + + public string Title { get; set; } + + public string Description { get; set; } } } \ No newline at end of file diff --git a/FakeTrello/Models/List.cs b/FakeTrello/Models/List.cs index 5e60323..d076d38 100644 --- a/FakeTrello/Models/List.cs +++ b/FakeTrello/Models/List.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web; @@ -7,5 +8,11 @@ namespace FakeTrello.Models { public class List { + [Key] + public int ListdId { get; set; } + + public string Name { get; set; } + + public List Cards { get; set; } } } \ No newline at end of file From 760b44d50f14acf6d1e6910b5aff29319ce81420 Mon Sep 17 00:00:00 2001 From: Josh Kilgore Date: Sat, 4 Mar 2017 13:12:55 -0600 Subject: [PATCH 4/7] add classes and relationships --- FakeTrello/DAL/FakeTrelloContext.cs | 11 +++++++++++ FakeTrello/FakeTrello.csproj | 3 +++ FakeTrello/Models/Board.cs | 12 ++++++++++++ FakeTrello/Models/Card.cs | 3 +++ FakeTrello/Models/TrelloUser.cs | 18 ++++++++++++++++++ 5 files changed, 47 insertions(+) create mode 100644 FakeTrello/DAL/FakeTrelloContext.cs diff --git a/FakeTrello/DAL/FakeTrelloContext.cs b/FakeTrello/DAL/FakeTrelloContext.cs new file mode 100644 index 0000000..a015396 --- /dev/null +++ b/FakeTrello/DAL/FakeTrelloContext.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace FakeTrello.DAL +{ + public class FakeTrelloContext + { + } +} \ No newline at end of file diff --git a/FakeTrello/FakeTrello.csproj b/FakeTrello/FakeTrello.csproj index 6e5ae07..493d08d 100644 --- a/FakeTrello/FakeTrello.csproj +++ b/FakeTrello/FakeTrello.csproj @@ -184,7 +184,10 @@ Global.asax + + + diff --git a/FakeTrello/Models/Board.cs b/FakeTrello/Models/Board.cs index 75ffc25..3f35d4a 100644 --- a/FakeTrello/Models/Board.cs +++ b/FakeTrello/Models/Board.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web; @@ -7,5 +8,16 @@ namespace FakeTrello.Models { public class Board { + [Key] + public int BoardId { get; set; } + + public string Name { get; set; } + + public string URL { get; set; } + + //Auxillary (not required to define/drive relationship) + public TrelloUser Owner { get; set; } + + public List Lists { get; set; } } } \ No newline at end of file diff --git a/FakeTrello/Models/Card.cs b/FakeTrello/Models/Card.cs index 2aaad76..6c817d7 100644 --- a/FakeTrello/Models/Card.cs +++ b/FakeTrello/Models/Card.cs @@ -14,5 +14,8 @@ public class Card public string Title { get; set; } public string Description { get; set; } + + // returns the list the card belongs to + public List BelongsTo { get; set; } } } \ No newline at end of file diff --git a/FakeTrello/Models/TrelloUser.cs b/FakeTrello/Models/TrelloUser.cs index 6b103e4..8d025bf 100644 --- a/FakeTrello/Models/TrelloUser.cs +++ b/FakeTrello/Models/TrelloUser.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web; @@ -11,8 +12,25 @@ public class TrelloUser { [Key] public int TrelloUserId { get; set; } //Primary Key + + // Stacking of properties applies to multiple annotations + // to the following property + [MinLength(10)] + [MaxLength(60)] public string Email { get; set; } + + [MaxLength(60)] public string Username { get; set; } + + [MaxLength(60)] public string FullName { get; set; } + + public ApplicationUser BaseUser { get; set; } // 1 to 1 relationship + + public List Boards { get; set; } // 1 to many (boards) relationship + + public List Lists { get; set; } // 1 to many + + public List Cards { get; set; } // 1 to many } } \ No newline at end of file From 8973ea674a3524fbe9784c472736cbe31c637722 Mon Sep 17 00:00:00 2001 From: Josh Kilgore Date: Mon, 6 Mar 2017 17:31:26 -0600 Subject: [PATCH 5/7] add classes per ERD --- FakeTrello/DAL/FakeTrelloContext.cs | 5 +++-- FakeTrello/FakeTrello.csproj | 2 ++ FakeTrello/README.md | 20 ++++++++++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 FakeTrello/README.md diff --git a/FakeTrello/DAL/FakeTrelloContext.cs b/FakeTrello/DAL/FakeTrelloContext.cs index a015396..6a4d715 100644 --- a/FakeTrello/DAL/FakeTrelloContext.cs +++ b/FakeTrello/DAL/FakeTrelloContext.cs @@ -1,11 +1,12 @@ -using System; +using FakeTrello.Models; +using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace FakeTrello.DAL { - public class FakeTrelloContext + public class FakeTrelloContext : ApplicationDbContext { } } \ No newline at end of file diff --git a/FakeTrello/FakeTrello.csproj b/FakeTrello/FakeTrello.csproj index 493d08d..067f87d 100644 --- a/FakeTrello/FakeTrello.csproj +++ b/FakeTrello/FakeTrello.csproj @@ -180,6 +180,7 @@ + Global.asax @@ -202,6 +203,7 @@ + diff --git a/FakeTrello/README.md b/FakeTrello/README.md new file mode 100644 index 0000000..08e6815 --- /dev/null +++ b/FakeTrello/README.md @@ -0,0 +1,20 @@ +# Fake Trello + +## Features + +- Users will be able to create boards, lists and cards. +- Users will be able to delete baords, lists and cards. +- Users will be able to attach up to 3 other users to a cards (regardless of card creator). +- Users will be able to move and copy Cards between lists + + +## Instructions + +1. Create a Logical ERD (models with columns). +2. Add your ERD to this README as an image. (under the "Fake Trello ERD" section) +2. Create C#/Entity models using your ERD + + +### Fake Trello ERD + +![My ERD](/FakeTrello.jpg?raw=true) From 915bc61c550379ea5d0ea161473f516e026d0338 Mon Sep 17 00:00:00 2001 From: Josh Kilgore Date: Tue, 7 Mar 2017 14:33:00 -0600 Subject: [PATCH 6/7] add changes to reflect my erd --- FakeTrello/Models/Board.cs | 9 +++----- FakeTrello/Models/Card.cs | 8 +++++-- FakeTrello/Models/List.cs | 6 ++++++ FakeTrello/Models/{TrelloUser.cs => User.cs} | 22 +++++++++----------- 4 files changed, 25 insertions(+), 20 deletions(-) rename FakeTrello/Models/{TrelloUser.cs => User.cs} (56%) diff --git a/FakeTrello/Models/Board.cs b/FakeTrello/Models/Board.cs index 3f35d4a..c2c7a1f 100644 --- a/FakeTrello/Models/Board.cs +++ b/FakeTrello/Models/Board.cs @@ -11,12 +11,9 @@ public class Board [Key] public int BoardId { get; set; } - public string Name { get; set; } - - public string URL { get; set; } - - //Auxillary (not required to define/drive relationship) - public TrelloUser Owner { get; set; } + [Required] + [MaxLength(255)] + public string Title { get; set; } public List Lists { get; set; } } diff --git a/FakeTrello/Models/Card.cs b/FakeTrello/Models/Card.cs index 6c817d7..f6241e3 100644 --- a/FakeTrello/Models/Card.cs +++ b/FakeTrello/Models/Card.cs @@ -11,9 +11,13 @@ public class Card [Key] public int CardId { get; set; } - public string Title { get; set; } + [Required] + [MaxLength(255)] + public string Name { get; set; } - public string Description { get; set; } + [Required] + [MaxLength(255)] + public string Content { get; set; } // returns the list the card belongs to public List BelongsTo { get; set; } diff --git a/FakeTrello/Models/List.cs b/FakeTrello/Models/List.cs index d076d38..4ce77b6 100644 --- a/FakeTrello/Models/List.cs +++ b/FakeTrello/Models/List.cs @@ -11,8 +11,14 @@ public class List [Key] public int ListdId { get; set; } + [MaxLength(255)] + [Required] public string Name { get; set; } + [MaxLength(255)] + [Required] + public string Content { get; set; } + public List Cards { get; set; } } } \ No newline at end of file diff --git a/FakeTrello/Models/TrelloUser.cs b/FakeTrello/Models/User.cs similarity index 56% rename from FakeTrello/Models/TrelloUser.cs rename to FakeTrello/Models/User.cs index 8d025bf..862fc7c 100644 --- a/FakeTrello/Models/TrelloUser.cs +++ b/FakeTrello/Models/User.cs @@ -8,24 +8,22 @@ namespace FakeTrello.Models { - public class TrelloUser + public class User { [Key] - public int TrelloUserId { get; set; } //Primary Key + public int UserId { get; set; } //Primary Key - // Stacking of properties applies to multiple annotations - // to the following property - [MinLength(10)] - [MaxLength(60)] - public string Email { get; set; } - - [MaxLength(60)] - public string Username { get; set; } + [Required] + [MaxLength(255)] + public string PasswordHash { get; set; } - [MaxLength(60)] + [Required] + [MaxLength(255)] public string FullName { get; set; } - public ApplicationUser BaseUser { get; set; } // 1 to 1 relationship + [Required] + [MaxLength(255)] + public string Email { get; set; } public List Boards { get; set; } // 1 to many (boards) relationship From ead96fd8aba44ddc5ad5d6e29065a9531084af4b Mon Sep 17 00:00:00 2001 From: Josh Kilgore Date: Tue, 7 Mar 2017 16:50:55 -0600 Subject: [PATCH 7/7] add ERD img --- FakeTrello/FakeTrelloERDnew.jpg | Bin 0 -> 32492 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 FakeTrello/FakeTrelloERDnew.jpg diff --git a/FakeTrello/FakeTrelloERDnew.jpg b/FakeTrello/FakeTrelloERDnew.jpg new file mode 100644 index 0000000000000000000000000000000000000000..97cea64701c32d12d592c5424a86fd64e32008d4 GIT binary patch literal 32492 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