From 2c7f8dbe845276385923948f456f9d3c5fe54b37 Mon Sep 17 00:00:00 2001 From: Jakob Fahr Date: Wed, 8 Jul 2020 18:10:58 +0200 Subject: [PATCH 1/2] all property names in UpperCamelCase --- .../Controllers/CategoriesController.cs | 12 +-- .../Controllers/ProjectsController.cs | 16 +-- .../Controllers/SprintsController.cs | 96 ++++++++--------- .../Controllers/StatusController.cs | 8 +- ScrumTaskboard/Controllers/TasksController.cs | 62 +++++------ ScrumTaskboard/Controllers/UsersController.cs | 14 +-- .../Controllers/UserstoriesController.cs | 20 ++-- ScrumTaskboard/TaskContext.cs | 101 +++++++++--------- 8 files changed, 164 insertions(+), 165 deletions(-) diff --git a/ScrumTaskboard/Controllers/CategoriesController.cs b/ScrumTaskboard/Controllers/CategoriesController.cs index f2b3a6d..fcbfa5e 100644 --- a/ScrumTaskboard/Controllers/CategoriesController.cs +++ b/ScrumTaskboard/Controllers/CategoriesController.cs @@ -27,15 +27,15 @@ namespace ScrumTaskboard.Controllers if (title != null) { - filtered = filtered.Where(c => c.title.Contains(title)); + filtered = filtered.Where(c => c.Title.Contains(title)); } if (projectid != null) { - filtered = filtered.Where(c => c.projectid == projectid); + filtered = filtered.Where(c => c.ProjectId == projectid); } if (color != null) { - filtered = filtered.Where(c => c.color == color); + filtered = filtered.Where(c => c.Color == color); } @@ -62,7 +62,7 @@ namespace ScrumTaskboard.Controllers public async Task PutCategory(int id, ScrumCategory category) { // Die ID der Kategorie darf nicht geändert werden - if (id != category.id) + if (id != category.Id) { return BadRequest(); } @@ -99,7 +99,7 @@ namespace ScrumTaskboard.Controllers await _context.SaveChangesAsync(); // Die neue Userstory wurde erstellt und kann über die GetUserstory Methode abgerufen werden. - return CreatedAtAction("GetCategory", new { id = category.id }, category); + return CreatedAtAction("GetCategory", new { id = category.Id }, category); } // DELETE: api/category/1 @@ -125,7 +125,7 @@ namespace ScrumTaskboard.Controllers /// private bool CategoryExists(int id) { - return _context.Categories.Any(e => e.id == id); + return _context.Categories.Any(e => e.Id == id); } } } \ No newline at end of file diff --git a/ScrumTaskboard/Controllers/ProjectsController.cs b/ScrumTaskboard/Controllers/ProjectsController.cs index e78521f..171937c 100644 --- a/ScrumTaskboard/Controllers/ProjectsController.cs +++ b/ScrumTaskboard/Controllers/ProjectsController.cs @@ -27,11 +27,11 @@ namespace ScrumTaskboard.Controllers if (title != null) { - filtered = filtered.Where(t => t.title.Contains(title)); + filtered = filtered.Where(t => t.Title.Contains(title)); } if (isprivate != null) { - filtered = filtered.Where(t => t.isprivate == isprivate); + filtered = filtered.Where(t => t.IsPrivate == isprivate); } return await filtered.ToListAsync(); @@ -42,14 +42,14 @@ namespace ScrumTaskboard.Controllers [HttpGet("{id}")] public async Task> GetProjects(int id) { - var Project = await _context.Projects.FindAsync(id); + var project = await _context.Projects.FindAsync(id); - if (Project == null) + if (project == null) { return NotFound(); } - return Project; + return project; } // PUT: api/Project/5 @@ -57,7 +57,7 @@ namespace ScrumTaskboard.Controllers public async Task PutProject(int id, ScrumProject projects) { // Die ID des Projects darf nicht geändert werden - if (id != projects.id) + if (id != projects.Id) { return BadRequest(); } @@ -94,7 +94,7 @@ namespace ScrumTaskboard.Controllers await _context.SaveChangesAsync(); // Der neue Project wurde erstellt und kann über die GetProject Methode abgerufen werden. - return CreatedAtAction("GetProject", new { id = projects.id }, projects); + return CreatedAtAction("GetProject", new { id = projects.Id }, projects); } // DELETE: api/Project/5 @@ -120,7 +120,7 @@ namespace ScrumTaskboard.Controllers /// private bool ProjectExists(int id) { - return _context.Projects.Any(e => e.id == id); + return _context.Projects.Any(e => e.Id == id); } } } \ No newline at end of file diff --git a/ScrumTaskboard/Controllers/SprintsController.cs b/ScrumTaskboard/Controllers/SprintsController.cs index 185cdd2..bc915de 100644 --- a/ScrumTaskboard/Controllers/SprintsController.cs +++ b/ScrumTaskboard/Controllers/SprintsController.cs @@ -1,48 +1,48 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.EntityFrameworkCore; - -namespace ScrumTaskboard.Controllers -{ - [Route("[controller]")] - [ApiController] - public class SprintsController : ControllerBase - { - private readonly TaskContext _context; - - public SprintsController(TaskContext context) - { - _context = context; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; + +namespace ScrumTaskboard.Controllers +{ + [Route("[controller]")] + [ApiController] + public class SprintsController : ControllerBase + { + private readonly TaskContext _context; + + public SprintsController(TaskContext context) + { + _context = context; } // GET: api/sprint - #nullable enable - [HttpGet] - public async Task>> GetSprint([FromQuery]string? title, [FromQuery]int? projectid, [FromQuery]DateTime? startDate, [FromQuery]DateTime? endDate) - { - var filtered = _context.Sprints.AsQueryable(); - - if (title != null) - { - filtered = filtered.Where(s => s.title.Contains(title)); - } - if (projectid != null) - { - filtered = filtered.Where(s => s.projectid == projectid); - } + #nullable enable + [HttpGet] + public async Task>> GetSprint([FromQuery]string? title, [FromQuery]int? projectid, [FromQuery]DateTime? startDate, [FromQuery]DateTime? endDate) + { + var filtered = _context.Sprints.AsQueryable(); + + if (title != null) + { + filtered = filtered.Where(s => s.Title.Contains(title)); + } + if (projectid != null) + { + filtered = filtered.Where(s => s.ProjectId == projectid); + } if (startDate != null) { - filtered = filtered.Where(s => s.startDate == startDate); + filtered = filtered.Where(s => s.StartDate == startDate); } if (endDate != null) - { - filtered = filtered.Where(s => s.endDate == endDate); - } - - return await filtered.ToListAsync(); + { + filtered = filtered.Where(s => s.EndDate == endDate); + } + + return await filtered.ToListAsync(); } #nullable disable @@ -50,14 +50,14 @@ namespace ScrumTaskboard.Controllers [HttpGet("{id}")] public async Task> GetSprint(int id) { - var Sprint = await _context.Sprints.FindAsync(id); + var sprint = await _context.Sprints.FindAsync(id); - if (Sprint == null) + if (sprint == null) { return NotFound(); } - return Sprint; + return sprint; } // PUT: api/sprint/5 @@ -65,7 +65,7 @@ namespace ScrumTaskboard.Controllers public async Task PutSprint(int id, ScrumSprint sprint) { // Die ID des Sprints darf nicht geändert werden - if (id != sprint.id) + if (id != sprint.Id) { return BadRequest(); } @@ -102,7 +102,7 @@ namespace ScrumTaskboard.Controllers await _context.SaveChangesAsync(); // Der neue Sprint wurde erstellt und kann über die GetSprint Methode abgerufen werden. - return CreatedAtAction("GetSprint", new { id = sprint.id }, sprint); + return CreatedAtAction("GetSprint", new { id = sprint.Id }, sprint); } // DELETE: api/Sprint/5 @@ -123,12 +123,12 @@ namespace ScrumTaskboard.Controllers return scrumSprint; } - /// - /// Prüft, ob ein Sprint mit der angegebenen ID bereits existiert. - /// + /// + /// Prüft, ob ein Sprint mit der angegebenen ID bereits existiert. + /// private bool SprintExists(int id) { - return _context.Sprints.Any(e => e.id == id); + return _context.Sprints.Any(e => e.Id == id); } - } -} + } +} diff --git a/ScrumTaskboard/Controllers/StatusController.cs b/ScrumTaskboard/Controllers/StatusController.cs index 3532df9..e11709a 100644 --- a/ScrumTaskboard/Controllers/StatusController.cs +++ b/ScrumTaskboard/Controllers/StatusController.cs @@ -26,7 +26,7 @@ namespace ScrumTaskboard.Controllers if (title != null) { - filtered = filtered.Where(s => s.title.Contains(title)); + filtered = filtered.Where(s => s.Title.Contains(title)); } return await filtered.ToListAsync(); @@ -52,7 +52,7 @@ namespace ScrumTaskboard.Controllers public async Task PutStatus(int id, ScrumStatus userstory) { // Die ID des Status darf nicht geändert werden - if (id != userstory.id) + if (id != userstory.Id) { return BadRequest(); } @@ -89,7 +89,7 @@ namespace ScrumTaskboard.Controllers await _context.SaveChangesAsync(); // Der neue Status wurde erstellt und kann über die GetStatus Methode abgerufen werden. - return CreatedAtAction("GetStatus", new { id = userstory.id }, userstory); + return CreatedAtAction("GetStatus", new { id = userstory.Id }, userstory); } // DELETE: api/status/1 @@ -115,7 +115,7 @@ namespace ScrumTaskboard.Controllers /// private bool StatusExists(int id) { - return _context.Status.Any(e => e.id == id); + return _context.Status.Any(e => e.Id == id); } } } \ No newline at end of file diff --git a/ScrumTaskboard/Controllers/TasksController.cs b/ScrumTaskboard/Controllers/TasksController.cs index c6dcdd1..8088476 100644 --- a/ScrumTaskboard/Controllers/TasksController.cs +++ b/ScrumTaskboard/Controllers/TasksController.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -16,46 +16,46 @@ namespace ScrumTaskboard.Controllers public TasksController(TaskContext context) { _context = context; - } - - // GET: api/tasks + } + + // GET: api/tasks #nullable enable [HttpGet] public async Task>> GetTasks([FromQuery]string? title, [FromQuery]int? userstoryid, [FromQuery]int? statusid, [FromQuery]int? assignedtoid, [FromQuery]int? projectid, [FromQuery]ScrumPrio? priority) { var filtered = _context.Tasks.AsQueryable(); - if (title != null) - { - filtered = filtered.Where(t => t.title.Contains(title)); + if (title != null) + { + filtered = filtered.Where(t => t.Title.Contains(title)); } - if (userstoryid != null) - { - filtered = filtered.Where(t => t.userstoryid == userstoryid); + if (userstoryid != null) + { + filtered = filtered.Where(t => t.UserstoryId == userstoryid); } - if (statusid != null) - { - filtered = filtered.Where(t => t.statusid == statusid); + if (statusid != null) + { + filtered = filtered.Where(t => t.StatusId == statusid); } - if (assignedtoid != null) - { - filtered = filtered.Where(t => t.assignedtoid == assignedtoid); + if (assignedtoid != null) + { + filtered = filtered.Where(t => t.AssignedToId == assignedtoid); } - if (projectid != null) - { - filtered = filtered.Where(t => t.projectid == projectid); + if (projectid != null) + { + filtered = filtered.Where(t => t.ProjectId == projectid); } - if (priority != null) - { - filtered = filtered.Where(t => t.priority == priority); - } - - + if (priority != null) + { + filtered = filtered.Where(t => t.Priority == priority); + } + + return await filtered.ToListAsync(); - } + } #nullable disable - - // GET: api/tasks/5 + + // GET: api/tasks/5 [HttpGet("{id}")] public async Task> GetTask(int id) { @@ -74,7 +74,7 @@ namespace ScrumTaskboard.Controllers public async Task PutTask(int id, ScrumTask task) { // Die ID des Tasks darf nicht geändert werden - if (id != task.id) + if (id != task.Id) { return BadRequest(); } @@ -111,7 +111,7 @@ namespace ScrumTaskboard.Controllers await _context.SaveChangesAsync(); // Der neue Task wurde erstellt und kann über die GetTask Methode abgerufen werden. - return CreatedAtAction("GetTask", new { id = task.id }, task); + return CreatedAtAction("GetTask", new { id = task.Id }, task); } // DELETE: api/tasks/5 @@ -137,7 +137,7 @@ namespace ScrumTaskboard.Controllers /// private bool TaskExists(int id) { - return _context.Tasks.Any(e => e.id == id); + return _context.Tasks.Any(e => e.Id == id); } } } diff --git a/ScrumTaskboard/Controllers/UsersController.cs b/ScrumTaskboard/Controllers/UsersController.cs index f0fe5c2..80837f7 100644 --- a/ScrumTaskboard/Controllers/UsersController.cs +++ b/ScrumTaskboard/Controllers/UsersController.cs @@ -25,7 +25,7 @@ namespace ScrumTaskboard.Controllers var filtered = _context.Users.AsQueryable(); if (name != null) { - filtered = filtered.Where(u => u.name.Contains(name)); + filtered = filtered.Where(u => u.Name.Contains(name)); } return await filtered.ToListAsync(); @@ -36,14 +36,14 @@ namespace ScrumTaskboard.Controllers [HttpGet("{id}")] public async Task> GetUser(int id) { - var User = await _context.Users.FindAsync(id); + var user = await _context.Users.FindAsync(id); - if (User == null) + if (user == null) { return NotFound(); } - return User; + return user; } // PUT: api/sprint/5 @@ -51,7 +51,7 @@ namespace ScrumTaskboard.Controllers public async Task PutUser(int id, ScrumUser sprint) { // Die ID des Users darf nicht geändert werden - if (id != sprint.id) + if (id != sprint.Id) { return BadRequest(); } @@ -88,7 +88,7 @@ namespace ScrumTaskboard.Controllers await _context.SaveChangesAsync(); // Der neue User wurde erstellt und kann über die GetUser Methode abgerufen werden. - return CreatedAtAction("GetUser", new { id = sprint.id }, sprint); + return CreatedAtAction("GetUser", new { id = sprint.Id }, sprint); } // DELETE: api/User/5 @@ -114,7 +114,7 @@ namespace ScrumTaskboard.Controllers /// private bool UserExists(int id) { - return _context.Users.Any(e => e.id == id); + return _context.Users.Any(e => e.Id == id); } } } \ No newline at end of file diff --git a/ScrumTaskboard/Controllers/UserstoriesController.cs b/ScrumTaskboard/Controllers/UserstoriesController.cs index 605e247..e28d8e5 100644 --- a/ScrumTaskboard/Controllers/UserstoriesController.cs +++ b/ScrumTaskboard/Controllers/UserstoriesController.cs @@ -27,31 +27,31 @@ namespace ScrumTaskboard.Controllers if (title != null) { - filtered = filtered.Where(t => t.title.Contains(title)); + filtered = filtered.Where(t => t.Title.Contains(title)); } if (statusid != null) { - filtered = filtered.Where(t => t.statusid == statusid); + filtered = filtered.Where(t => t.StatusId == statusid); } if (categoryid != null) { - filtered = filtered.Where(t => t.categoryid == categoryid); + filtered = filtered.Where(t => t.CategoryId == categoryid); } if (createdbyid != null) { - filtered = filtered.Where(t => t.createdbyid == createdbyid); + filtered = filtered.Where(t => t.CreatedById == createdbyid); } if (projectid != null) { - filtered = filtered.Where(t => t.projectid == projectid); + filtered = filtered.Where(t => t.ProjectId == projectid); } if (sprintid != null) { - filtered = filtered.Where(t => t.sprintid == sprintid); + filtered = filtered.Where(t => t.SprintId == sprintid); } if (priority != null) { - filtered = filtered.Where(t => t.priority == priority); + filtered = filtered.Where(t => t.Priority == priority); } @@ -78,7 +78,7 @@ namespace ScrumTaskboard.Controllers public async Task PutUserstory(int id, ScrumUserstory userstory) { // Die ID der Userstory darf nicht geändert werden - if (id != userstory.id) + if (id != userstory.Id) { return BadRequest(); } @@ -115,7 +115,7 @@ namespace ScrumTaskboard.Controllers await _context.SaveChangesAsync(); // Die neue Userstory wurde erstellt und kann über die GetUserstory Methode abgerufen werden. - return CreatedAtAction("GetUserstory", new { id = userstory.id }, userstory); + return CreatedAtAction("GetUserstory", new { id = userstory.Id }, userstory); } // DELETE: api/userstories/1 @@ -141,7 +141,7 @@ namespace ScrumTaskboard.Controllers /// private bool UserstoryExists(int id) { - return _context.Userstories.Any(e => e.id == id); + return _context.Userstories.Any(e => e.Id == id); } } } \ No newline at end of file diff --git a/ScrumTaskboard/TaskContext.cs b/ScrumTaskboard/TaskContext.cs index 973f4e2..3baacce 100644 --- a/ScrumTaskboard/TaskContext.cs +++ b/ScrumTaskboard/TaskContext.cs @@ -21,99 +21,98 @@ namespace ScrumTaskboard public class ScrumTask { - public int id { get; set; } - public string title { get; set; } - public string content { get; set; } + public int Id { get; set; } + public string Title { get; set; } + public string Content { get; set; } - public int? statusid { get; set; } - public ScrumStatus status { get; set; } + public int? StatusId { get; set; } + public ScrumStatus Status { get; set; } - public int? assignedtoid { get; set; } - public ScrumUser assignedto { get; set; } + public int? AssignedToId { get; set; } + public ScrumUser AssignedTo { get; set; } - public int? projectid { get; set; } - public ScrumProject project { get; set; } + public int? ProjectId { get; set; } + public ScrumProject Project { get; set; } - public int? userstoryid { get; set; } - public ScrumUserstory userstory { get; set; } + public int? UserstoryId { get; set; } + public ScrumUserstory Userstory { get; set; } - public ScrumPrio priority { get; set; } + public ScrumPrio Priority { get; set; } } public class ScrumUserstory { - public int id { get; set; } - public string title { get; set; } - public string content { get; set; } - public ScrumPrio priority { get; set; } + public int Id { get; set; } + public string Title { get; set; } + public string Content { get; set; } + public ScrumPrio Priority { get; set; } - public int? statusid { get; set; } - public ScrumStatus status { get; set; } + public int? StatusId { get; set; } + public ScrumStatus Status { get; set; } - public int? categoryid { get; set; } - public ScrumCategory category { get; set; } + public int? CategoryId { get; set; } + public ScrumCategory Category { get; set; } - public int? createdbyid { get; set; } - public ScrumUser createdby { get; set; } + public int? CreatedById { get; set; } + public ScrumUser CreatedBy { get; set; } - public int? projectid { get; set; } - public ScrumProject project { get; set; } + public int? ProjectId { get; set; } + public ScrumProject Project { get; set; } - public int? sprintid { get; set; } - public ScrumSprint sprint { get; set; } + public int? SprintId { get; set; } + public ScrumSprint Sprint { get; set; } } public class ScrumCategory { - public int id { get; set; } - public string title { get; set; } - public string description { get; set; } - public string color { get; set; } + public int Id { get; set; } + public string Title { get; set; } + public string Description { get; set; } + public string Color { get; set; } - public int? projectid { get; set; } - public ScrumProject project { get; set; } + public int? ProjectId { get; set; } + public ScrumProject Project { get; set; } } public class ScrumSprint { - public int id { get; set; } - public string title { get; set; } - public string description { get; set; } - public DateTime startDate { get; set; } - public DateTime endDate { get; set; } + public int Id { get; set; } + public string Title { get; set; } + public string Description { get; set; } + public DateTime StartDate { get; set; } + public DateTime EndDate { get; set; } - - public int? projectid { get; set; } - public ScrumProject project { get; set; } + public int? ProjectId { get; set; } + public ScrumProject Project { get; set; } } public class ScrumStatus { - public int id { get; set; } - public string title { get; set; } - public string description { get; set; } + public int Id { get; set; } + public string Title { get; set; } + public string Description { get; set; } } public class ScrumProject { - public int id { get; set; } - public string title { get; set; } - public bool isprivate { get; set; } + public int Id { get; set; } + public string Title { get; set; } + public bool IsPrivate { get; set; } } public class ScrumUser { - public int id { get; set; } - public string name { get; set; } + public int Id { get; set; } + public string Name { get; set; } } public enum ScrumPrio { [EnumMember(Value = "low")] - low, + Low, [EnumMember(Value = "medium")] - medium, + Medium, [EnumMember(Value = "high")] - high + High } } From 2ab30e0701cc82107c8d7736979ff819dd3f894e Mon Sep 17 00:00:00 2001 From: Jakob Fahr Date: Sun, 12 Jul 2020 22:29:56 +0200 Subject: [PATCH 2/2] Add comments to TaskContext --- ScrumTaskboard/TaskContext.cs | 62 +++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/ScrumTaskboard/TaskContext.cs b/ScrumTaskboard/TaskContext.cs index 3baacce..8e5fa43 100644 --- a/ScrumTaskboard/TaskContext.cs +++ b/ScrumTaskboard/TaskContext.cs @@ -4,6 +4,13 @@ using System.Runtime.Serialization; namespace ScrumTaskboard { + /// + /// Provides access to the database via the Entity Framework Core. + /// + /// + /// Each property represents a table. + /// Tables can be queried and updated via the context class. + /// public class TaskContext : DbContext { public DbSet Tasks { get; set; } @@ -14,11 +21,23 @@ namespace ScrumTaskboard public DbSet Projects { get; set; } public DbSet Users { get; set; } + /// + /// Creates a new instance with default options. + /// public TaskContext() { } + /// + /// Creates a new instance with the given options. + /// public TaskContext(DbContextOptions options) : base(options) { } } + /// + /// Represents a task in an agile work process. + /// + /// + /// A task is a small piece of work, associated with a larger userstory. + /// public class ScrumTask { public int Id { get; set; } @@ -40,6 +59,13 @@ namespace ScrumTaskboard public ScrumPrio Priority { get; set; } } + /// + /// Represents a userstory in an agile work process. + /// + /// + /// A userstory is a piece of work that can be done in one sprint. + /// It can be further divided into multiple tasks. + /// public class ScrumUserstory { public int Id { get; set; } @@ -63,6 +89,13 @@ namespace ScrumTaskboard public ScrumSprint Sprint { get; set; } } + /// + /// Represents a category of userstories. + /// + /// + /// Every userstory can optionally be associated with a single category. + /// This can be helpful to organize work in larger teams. + /// public class ScrumCategory { public int Id { get; set; } @@ -74,6 +107,14 @@ namespace ScrumTaskboard public ScrumProject Project { get; set; } } + /// + /// Represents an agile sprint. + /// + /// + /// A sprint is typically one to four weeks long. + /// Userstories are typically started and completed + /// during one sprint. + /// public class ScrumSprint { public int Id { get; set; } @@ -86,6 +127,13 @@ namespace ScrumTaskboard public ScrumProject Project { get; set; } } + /// + /// Represents the status of a task or userstory. + /// + /// + /// Classic status are "Backlog", "In Progress" and "Done", but + /// teams can create others to fit their individual workflow. + /// public class ScrumStatus { public int Id { get; set; } @@ -93,6 +141,13 @@ namespace ScrumTaskboard public string Description { get; set; } } + /// + /// Represents a project that the team works on. + /// + /// + /// Userstories and sprints can be categorized into projects, + /// to help organization for larger teams. + /// public class ScrumProject { public int Id { get; set; } @@ -100,6 +155,13 @@ namespace ScrumTaskboard public bool IsPrivate { get; set; } } + /// + /// Represents a team member that can work on userstories. + /// + /// + /// This allows teams to track who is working on a userstory + /// at a given time. + /// public class ScrumUser { public int Id { get; set; }