From 19e6ed16ec593b82a8fb716764f2824c37fc3ac8 Mon Sep 17 00:00:00 2001 From: Niggl1999 Date: Thu, 4 Jun 2020 08:32:44 +0200 Subject: [PATCH 01/13] Added basics for userstories --- .../Controllers/UserstoryController.cs | 30 +++++++++++++++++++ ScrumTaskboard/ScrumTaskboard.csproj | 1 + ScrumTaskboard/TaskContext.cs | 21 ++++++++----- 3 files changed, 44 insertions(+), 8 deletions(-) create mode 100644 ScrumTaskboard/Controllers/UserstoryController.cs diff --git a/ScrumTaskboard/Controllers/UserstoryController.cs b/ScrumTaskboard/Controllers/UserstoryController.cs new file mode 100644 index 0000000..95ff529 --- /dev/null +++ b/ScrumTaskboard/Controllers/UserstoryController.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using ScrumTaskboard; + +namespace ScrumTaskboard.Controllers +{ + [Route("[controller]")] + [ApiController] + public class UserstoryController : ControllerBase + { + private readonly TaskContext _context; + + public UserstoryController(TaskContext context) + { + _context = context; + } + + // GET: api/Tasks + [HttpGet] + public async Task>> GetUserstory() + { + return await _context.Userstories.ToListAsync(); + } + } +} \ No newline at end of file diff --git a/ScrumTaskboard/ScrumTaskboard.csproj b/ScrumTaskboard/ScrumTaskboard.csproj index 436c762..54b53bb 100644 --- a/ScrumTaskboard/ScrumTaskboard.csproj +++ b/ScrumTaskboard/ScrumTaskboard.csproj @@ -12,6 +12,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/ScrumTaskboard/TaskContext.cs b/ScrumTaskboard/TaskContext.cs index a6d74e7..6920c07 100644 --- a/ScrumTaskboard/TaskContext.cs +++ b/ScrumTaskboard/TaskContext.cs @@ -6,6 +6,7 @@ namespace ScrumTaskboard public class TaskContext : DbContext { public DbSet Tasks { get; set; } + public DbSet Userstories { get; set; } public TaskContext() { } @@ -20,22 +21,26 @@ namespace ScrumTaskboard public class ScrumTask { public int Id { get; set; } - public string Titel { get; set; } - public string Inhalt { get; set; } - - - - public int Status { get; set; } public int Kategorie { get; set; } public int Bearbeiter { get; set; } public int ZugeordneterSprint { get; set; } public int Projekt { get; set; } - - public int Userstory { get; set; } } + + public class ScrumUserstory + { + public int id { get; set; } + public string title { get; set; } + public string conetent { get; set; } + public int priority { get; set; } + public int status { get; set; } + public int category { get; set; } + public int creator { get; set; } + public int project { get; set; } + } } From d8d79c6ee8d9f2e81937dedd0aaec3a831611bf4 Mon Sep 17 00:00:00 2001 From: Niggl1999 Date: Thu, 4 Jun 2020 08:37:51 +0200 Subject: [PATCH 02/13] Changed naming --- .../{UserstoryController.cs => UserstoriesController.cs} | 4 ++-- ScrumTaskboard/TaskContext.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename ScrumTaskboard/Controllers/{UserstoryController.cs => UserstoriesController.cs} (81%) diff --git a/ScrumTaskboard/Controllers/UserstoryController.cs b/ScrumTaskboard/Controllers/UserstoriesController.cs similarity index 81% rename from ScrumTaskboard/Controllers/UserstoryController.cs rename to ScrumTaskboard/Controllers/UserstoriesController.cs index 95ff529..cfb539f 100644 --- a/ScrumTaskboard/Controllers/UserstoryController.cs +++ b/ScrumTaskboard/Controllers/UserstoriesController.cs @@ -11,11 +11,11 @@ namespace ScrumTaskboard.Controllers { [Route("[controller]")] [ApiController] - public class UserstoryController : ControllerBase + public class UserstoriesController : ControllerBase { private readonly TaskContext _context; - public UserstoryController(TaskContext context) + public UserstoriesController(TaskContext context) { _context = context; } diff --git a/ScrumTaskboard/TaskContext.cs b/ScrumTaskboard/TaskContext.cs index b0d5a54..f6d2118 100644 --- a/ScrumTaskboard/TaskContext.cs +++ b/ScrumTaskboard/TaskContext.cs @@ -46,7 +46,7 @@ namespace ScrumTaskboard public int priority { get; set; } public int status { get; set; } public int category { get; set; } - public int creator { get; set; } + public int createdby { get; set; } public int project { get; set; } } } From 6a613ea05c8f6421aa50eee885514be5164f53ab Mon Sep 17 00:00:00 2001 From: Niggl1999 Date: Thu, 4 Jun 2020 08:52:49 +0200 Subject: [PATCH 03/13] Copy pase can indeed be hard - Fixed spelling --- ScrumTaskboard/TaskContext.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ScrumTaskboard/TaskContext.cs b/ScrumTaskboard/TaskContext.cs index 845ca88..adc7371 100644 --- a/ScrumTaskboard/TaskContext.cs +++ b/ScrumTaskboard/TaskContext.cs @@ -35,7 +35,7 @@ namespace ScrumTaskboard { public int id { get; set; } public string title { get; set; } - public string conetent { get; set; } + public string content { get; set; } public int priority { get; set; } public int status { get; set; } public int category { get; set; } From f94274755c9a6a60f186afad24f3756216ed7736 Mon Sep 17 00:00:00 2001 From: Niggl1999 Date: Thu, 4 Jun 2020 08:53:20 +0200 Subject: [PATCH 04/13] Added all the basic methods for userstories --- .../Controllers/UserstoriesController.cs | 87 ++++++++++++++++++- 1 file changed, 86 insertions(+), 1 deletion(-) diff --git a/ScrumTaskboard/Controllers/UserstoriesController.cs b/ScrumTaskboard/Controllers/UserstoriesController.cs index cfb539f..9fcf9dc 100644 --- a/ScrumTaskboard/Controllers/UserstoriesController.cs +++ b/ScrumTaskboard/Controllers/UserstoriesController.cs @@ -20,11 +20,96 @@ namespace ScrumTaskboard.Controllers _context = context; } - // GET: api/Tasks + // GET: api/userstories [HttpGet] public async Task>> GetUserstory() { return await _context.Userstories.ToListAsync(); } + + // GET: api/userstories/1 + [HttpGet("{id}")] + public async Task> GetUserstory(int id) + { + var userstory = await _context.Userstories.FindAsync(id); + + if (userstory == null) + { + return NotFound(); + } + + return userstory; + } + + // PUT: api/userstories/1 + [HttpPut("{id}")] + public async Task PutUserstory(int id, ScrumUserstory userstory) + { + // Die ID der Userstory darf nicht geändert werden + if (id != userstory.id) + { + return BadRequest(); + } + + // Speichere die geänderten Userstory im Context + _context.Entry(userstory).State = EntityState.Modified; + + try + { + // Übernehme die Änderungen in die Datenbank + await _context.SaveChangesAsync(); + } + catch (DbUpdateConcurrencyException) + { + // Wenn die Userstory nicht existiert, gib Statuscode 404 zurück + if (!UserstoryExists(id)) + { + return NotFound(); + } + else + { + throw; + } + } + + return NoContent(); + } + + // POST: api/userstories + [HttpPost] + public async Task> PostTask(ScrumUserstory userstory) + { + _context.Userstories.Add(userstory); + await _context.SaveChangesAsync(); + + // Die neue Userstory wurde erstellt und kann über die GetUserstory Methode abgerufen werden. + return CreatedAtAction("GetUserstory", new { id = userstory.id }, userstory); + } + + // DELETE: api/userstories/1 + [HttpDelete("{id}")] + public async Task> DeleteUserstory(int id) + { + var userstory = await _context.Userstories.FindAsync(id); + if (userstory == null) + { + return NotFound(); + } + + // Entferne die Userstory aus dem Context + _context.Userstories.Remove(userstory); + // Speichere die Änderungen in der Datenbank + await _context.SaveChangesAsync(); + + return userstory; + } + + /// + /// Prüft, ob eine Userstory mit der angegebenen ID bereits existiert. + /// + private bool UserstoryExists(int id) + { + return _context.Userstories.Any(e => e.id == id); + } } } \ No newline at end of file From ce4ba27653ced8c935488216e29291e56207f640 Mon Sep 17 00:00:00 2001 From: Niggl1999 Date: Thu, 4 Jun 2020 16:42:29 +0200 Subject: [PATCH 05/13] Added basics for task controller --- .../Controllers/CategoryController.cs | 114 ++++++++++++++++++ ScrumTaskboard/TaskContext.cs | 10 ++ 2 files changed, 124 insertions(+) create mode 100644 ScrumTaskboard/Controllers/CategoryController.cs diff --git a/ScrumTaskboard/Controllers/CategoryController.cs b/ScrumTaskboard/Controllers/CategoryController.cs new file mode 100644 index 0000000..98e1c40 --- /dev/null +++ b/ScrumTaskboard/Controllers/CategoryController.cs @@ -0,0 +1,114 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; + +namespace ScrumTaskboard.Controllers +{ + [Route("[controller]")] + [ApiController] + public class CategoryController : ControllerBase + { + private readonly TaskContext _context; + + public CategoryController(TaskContext context) + { + _context = context; + } + + // GET: api/category + [HttpGet] + public async Task>> GetCategory() + { + return await _context.Categories.ToListAsync(); + } + + // GET: api/category/1 + [HttpGet("{id}")] + public async Task> GetCategory(int id) + { + var category = await _context.Categories.FindAsync(id); + + if (category == null) + { + return NotFound(); + } + + return category; + } + + // PUT: api/category/1 + [HttpPut("{id}")] + public async Task PutCategory(int id, ScrumCategory category) + { + // Die ID der Kategorie darf nicht geändert werden + if (id != category.id) + { + return BadRequest(); + } + + // Speichere die geänderten Kategorie im Context + _context.Entry(category).State = EntityState.Modified; + + try + { + // Übernehme die Änderungen in die Datenbank + await _context.SaveChangesAsync(); + } + catch (DbUpdateConcurrencyException) + { + // Wenn die Kategorie nicht existiert, gib Statuscode 404 zurück + if (!CategoryExists(id)) + { + return NotFound(); + } + else + { + throw; + } + } + + return NoContent(); + } + + // POST: api/category + [HttpPost] + public async Task> PostCategory(ScrumCategory category) + { + _context.Categories.Add(category); + await _context.SaveChangesAsync(); + + // Die neue Userstory wurde erstellt und kann über die GetUserstory Methode abgerufen werden. + return CreatedAtAction("GetCategory", new { id = category.id }, category); + } + + // DELETE: api/category/1 + [HttpDelete("{id}")] + public async Task> DeleteCategory(int id) + { + var category = await _context.Categories.FindAsync(id); + if (category == null) + { + return NotFound(); + } + + // Entferne die Kateorie aus dem Context + _context.Categories.Remove(category); + // Speichere die Änderungen in der Datenbank + await _context.SaveChangesAsync(); + + return category; + } + + /// + /// Prüft, ob eine Kategorie mit der angegebenen ID bereits existiert. + /// + private bool CategoryExists(int id) + { + return _context.Categories.Any(e => e.id == id); + } + } +} \ No newline at end of file diff --git a/ScrumTaskboard/TaskContext.cs b/ScrumTaskboard/TaskContext.cs index adc7371..0af142e 100644 --- a/ScrumTaskboard/TaskContext.cs +++ b/ScrumTaskboard/TaskContext.cs @@ -7,6 +7,7 @@ namespace ScrumTaskboard { public DbSet Tasks { get; set; } public DbSet Userstories { get; set; } + public DbSet Categories { get; set; } public TaskContext() { } @@ -42,4 +43,13 @@ namespace ScrumTaskboard public int createdby { get; set; } public int project { 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 project { get; set; } + } } From 392ec801d4b91eed64d8969cd14396ac7a7b924a Mon Sep 17 00:00:00 2001 From: Niggl1999 Date: Thu, 4 Jun 2020 16:53:59 +0200 Subject: [PATCH 06/13] Renamed to fit the scheme --- ...yController.cs => CategoriesController.cs} | 4 +- ScrumTaskboard/ScrumTaskboard.csproj | 42 +++--- ScrumTaskboard/Startup.cs | 138 +++++++++--------- 3 files changed, 92 insertions(+), 92 deletions(-) rename ScrumTaskboard/Controllers/{CategoryController.cs => CategoriesController.cs} (93%) diff --git a/ScrumTaskboard/Controllers/CategoryController.cs b/ScrumTaskboard/Controllers/CategoriesController.cs similarity index 93% rename from ScrumTaskboard/Controllers/CategoryController.cs rename to ScrumTaskboard/Controllers/CategoriesController.cs index 98e1c40..7c637ba 100644 --- a/ScrumTaskboard/Controllers/CategoryController.cs +++ b/ScrumTaskboard/Controllers/CategoriesController.cs @@ -10,11 +10,11 @@ namespace ScrumTaskboard.Controllers { [Route("[controller]")] [ApiController] - public class CategoryController : ControllerBase + public class CategoriesController : ControllerBase { private readonly TaskContext _context; - public CategoryController(TaskContext context) + public CategoriesController(TaskContext context) { _context = context; } diff --git a/ScrumTaskboard/ScrumTaskboard.csproj b/ScrumTaskboard/ScrumTaskboard.csproj index 54b53bb..510a70d 100644 --- a/ScrumTaskboard/ScrumTaskboard.csproj +++ b/ScrumTaskboard/ScrumTaskboard.csproj @@ -1,21 +1,21 @@ - - - - netcoreapp3.1 - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - + + + + netcoreapp3.1 + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + diff --git a/ScrumTaskboard/Startup.cs b/ScrumTaskboard/Startup.cs index 9a52d4e..812cc4f 100644 --- a/ScrumTaskboard/Startup.cs +++ b/ScrumTaskboard/Startup.cs @@ -1,69 +1,69 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.HttpsPolicy; -using Microsoft.AspNetCore.Mvc; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; -using Microsoft.Extensions.Logging; - -namespace ScrumTaskboard -{ - public class Startup - { - public Startup(IConfiguration configuration) - { - Configuration = configuration; - } - - public IConfiguration Configuration { get; } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - services.AddCors(o => o.AddPolicy("AllowAll", builder => - { - builder.AllowAnyOrigin() - .AllowAnyMethod() - .AllowAnyHeader(); - })); - services.AddScoped(serviceProvider => new TaskContext( - new DbContextOptionsBuilder() - .UseNpgsql("Host=nig.gl; Port=8543; Username=scrum; Database=taskboard; Password=c6gXud7YvBWp2sgxSgy4wRN") - .Options)); - services.AddControllers(); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - using (var serviceScope = app.ApplicationServices.GetService().CreateScope()) - { - var context = serviceScope.ServiceProvider.GetRequiredService(); - context.Database.EnsureCreated(); - } - - if (env.IsDevelopment()) - { - app.UseDeveloperExceptionPage(); - } - - //app.UseHttpsRedirection(); - app.UseCors("AllowAll"); - - app.UseRouting(); - - app.UseAuthorization(); - - app.UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.HttpsPolicy; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; + +namespace ScrumTaskboard +{ + public class Startup + { + public Startup(IConfiguration configuration) + { + Configuration = configuration; + } + + public IConfiguration Configuration { get; } + + // This method gets called by the runtime. Use this method to add services to the container. + public void ConfigureServices(IServiceCollection services) + { + services.AddCors(o => o.AddPolicy("AllowAll", builder => + { + builder.AllowAnyOrigin() + .AllowAnyMethod() + .AllowAnyHeader(); + })); + services.AddScoped(serviceProvider => new TaskContext( + new DbContextOptionsBuilder() + .UseNpgsql("Host=nig.gl; Port=8543; Username=scrum; Database=taskboard; Password=c6gXud7YvBWp2sgxSgy4wRN") + .Options)); + services.AddControllers(); + } + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + using (var serviceScope = app.ApplicationServices.GetService().CreateScope()) + { + var context = serviceScope.ServiceProvider.GetRequiredService(); + context.Database.EnsureCreated(); + } + + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + + //app.UseHttpsRedirection(); + app.UseCors("AllowAll"); + + app.UseRouting(); + + app.UseAuthorization(); + + app.UseEndpoints(endpoints => + { + endpoints.MapControllers(); + }); + } + } +} From 0f129ae292f804209b1e10a10d5745bbbfb992a4 Mon Sep 17 00:00:00 2001 From: Taha FADL <24903274+Taha5492@users.noreply.github.com> Date: Thu, 4 Jun 2020 17:04:19 +0200 Subject: [PATCH 07/13] Created sprintController --- .../Controllers/SprintsController.cs | 114 ++++++++++++++++++ ScrumTaskboard/TaskContext.cs | 10 ++ 2 files changed, 124 insertions(+) create mode 100644 ScrumTaskboard/Controllers/SprintsController.cs diff --git a/ScrumTaskboard/Controllers/SprintsController.cs b/ScrumTaskboard/Controllers/SprintsController.cs new file mode 100644 index 0000000..4fc5d7f --- /dev/null +++ b/ScrumTaskboard/Controllers/SprintsController.cs @@ -0,0 +1,114 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +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 + [HttpGet] + public async Task>> GetSprints() + { + return await _context.Sprints.ToListAsync(); + } + + // GET: api/sprint/5 + [HttpGet("{id}")] + public async Task> GetSprint(int id) + { + var Sprint = await _context.Sprints.FindAsync(id); + + if (Sprint == null) + { + return NotFound(); + } + + return Sprint; + } + + // PUT: api/Sprint/5 + [HttpPut("{id}")] + public async Task PutSprint(int id, ScrumSprint sprint) + { + // Die ID des Sprints darf nicht geändert werden + if (id != sprint.id) + { + return BadRequest(); + } + + // Speichere den geänderten Sprint im Context + _context.Entry(sprint).State = EntityState.Modified; + + try + { + // Übernehme die Änderungen in die Datenbank + await _context.SaveChangesAsync(); + } + catch (DbUpdateConcurrencyException) + { + // Wenn der Sprint nicht existiert, gib Statuscode 404 zurück + if (!SprintExists(id)) + { + return NotFound(); + } + else + { + throw; + } + } + + return NoContent(); + } + + // POST: api/Sprint + [HttpPost] + public async Task> PostSprint(ScrumSprint sprint) + { + _context.Sprints.Add(sprint); + await _context.SaveChangesAsync(); + + // Der neue Sprint wurde erstellt und kann über die GetSprint Methode abgerufen werden. + return CreatedAtAction("GetSprint", new { id = sprint.id }, sprint); + } + + // DELETE: api/Sprint/5 + [HttpDelete("{id}")] + public async Task> DeleteSprint(int id) + { + var scrumSprint = await _context.Sprints.FindAsync(id); + if (scrumSprint == null) + { + return NotFound(); + } + + // Entferne den Sprint aus dem Context + _context.Sprints.Remove(scrumSprint); + // Speichere die Änderungen in der Datenbank + await _context.SaveChangesAsync(); + + return scrumSprint; + } + + /// + /// Prüft, ob ein Sprint mit der angegebenen ID bereits existiert. + /// + private bool SprintExists(int id) + { + return _context.Sprints.Any(e => e.id == id); + } + } +} diff --git a/ScrumTaskboard/TaskContext.cs b/ScrumTaskboard/TaskContext.cs index 014c535..850b568 100644 --- a/ScrumTaskboard/TaskContext.cs +++ b/ScrumTaskboard/TaskContext.cs @@ -6,6 +6,7 @@ namespace ScrumTaskboard public class TaskContext : DbContext { public DbSet Tasks { get; set; } + public DbSet Sprints { get; set; } public TaskContext() { } @@ -29,4 +30,13 @@ namespace ScrumTaskboard public int project { get; set; } public int userstory { 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 project { get; set; } + } } From caa5456eab9243eca64b10cd234595199e926dda Mon Sep 17 00:00:00 2001 From: Niggl1999 Date: Thu, 4 Jun 2020 17:32:56 +0200 Subject: [PATCH 08/13] Added basic controller for status --- .../Controllers/StatusController.cs | 114 ++++++++++++++++++ ScrumTaskboard/TaskContext.cs | 8 ++ 2 files changed, 122 insertions(+) create mode 100644 ScrumTaskboard/Controllers/StatusController.cs diff --git a/ScrumTaskboard/Controllers/StatusController.cs b/ScrumTaskboard/Controllers/StatusController.cs new file mode 100644 index 0000000..30e98d0 --- /dev/null +++ b/ScrumTaskboard/Controllers/StatusController.cs @@ -0,0 +1,114 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; + +namespace ScrumTaskboard.Controllers +{ + [Route("[controller]")] + [ApiController] + public class StatusController : ControllerBase + { + private readonly TaskContext _context; + + public StatusController(TaskContext context) + { + _context = context; + } + + // GET: api/status + [HttpGet] + public async Task>> GetStatus() + { + return await _context.Status.ToListAsync(); + } + + // GET: api/status/1 + [HttpGet("{id}")] + public async Task> GetStatus(int id) + { + var userstory = await _context.Status.FindAsync(id); + + if (userstory == null) + { + return NotFound(); + } + + return userstory; + } + + // PUT: api/status/1 + [HttpPut("{id}")] + public async Task PutStatus(int id, ScrumStatus userstory) + { + // Die ID des Status darf nicht geändert werden + if (id != userstory.id) + { + return BadRequest(); + } + + // Speichere deb geänderten Status im Context + _context.Entry(userstory).State = EntityState.Modified; + + try + { + // Übernehme die Änderungen in die Datenbank + await _context.SaveChangesAsync(); + } + catch (DbUpdateConcurrencyException) + { + // Wenn der Status nicht existiert, gib Statuscode 404 zurück + if (!StatusExists(id)) + { + return NotFound(); + } + else + { + throw; + } + } + + return NoContent(); + } + + // POST: api/status + [HttpPost] + public async Task> PostTask(ScrumStatus userstory) + { + _context.Status.Add(userstory); + await _context.SaveChangesAsync(); + + // Der neue Status wurde erstellt und kann über die GetStatus Methode abgerufen werden. + return CreatedAtAction("GetStatus", new { id = userstory.id }, userstory); + } + + // DELETE: api/status/1 + [HttpDelete("{id}")] + public async Task> DeleteStatus(int id) + { + var userstory = await _context.Status.FindAsync(id); + if (userstory == null) + { + return NotFound(); + } + + // Entferne den Status aus dem Context + _context.Status.Remove(userstory); + // Speichere die Änderungen in der Datenbank + await _context.SaveChangesAsync(); + + return userstory; + } + + /// + /// Prüft, ob ein Status mit der angegebenen ID bereits existiert. + /// + private bool StatusExists(int id) + { + return _context.Status.Any(e => e.id == id); + } + } +} \ No newline at end of file diff --git a/ScrumTaskboard/TaskContext.cs b/ScrumTaskboard/TaskContext.cs index 3dbdf86..9e00e6b 100644 --- a/ScrumTaskboard/TaskContext.cs +++ b/ScrumTaskboard/TaskContext.cs @@ -9,6 +9,7 @@ namespace ScrumTaskboard public DbSet Userstories { get; set; } public DbSet Categories { get; set; } public DbSet Sprints { get; set; } + public DbSet Status { get; set; } public TaskContext() { } @@ -63,4 +64,11 @@ namespace ScrumTaskboard public DateTime endDate { get; set; } public int project { get; set; } } + + public class ScrumStatus + { + public int id { get; set; } + public string title { get; set; } + public string description { get; set; } + } } From 5ee9e6e4441f804c65448a8e24849fd9c0e58c50 Mon Sep 17 00:00:00 2001 From: Niggl1999 Date: Thu, 4 Jun 2020 17:44:11 +0200 Subject: [PATCH 09/13] Added Basic project controller --- .../Controllers/ProjectsController.cs | 113 ++++++++++++++++++ ScrumTaskboard/TaskContext.cs | 8 ++ 2 files changed, 121 insertions(+) create mode 100644 ScrumTaskboard/Controllers/ProjectsController.cs diff --git a/ScrumTaskboard/Controllers/ProjectsController.cs b/ScrumTaskboard/Controllers/ProjectsController.cs new file mode 100644 index 0000000..dcf6100 --- /dev/null +++ b/ScrumTaskboard/Controllers/ProjectsController.cs @@ -0,0 +1,113 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; + +namespace ScrumTaskboard.Controllers +{ + [Route("[controller]")] + [ApiController] + public class ProjectsController : ControllerBase + { + private readonly TaskContext _context; + + public ProjectsController(TaskContext context) + { + _context = context; + } + + // GET: api/projects + [HttpGet] + public async Task>> GetProject() + { + return await _context.Projects.ToListAsync(); + } + + // GET: api/projects/5 + [HttpGet("{id}")] + public async Task> GetProjects(int id) + { + var Project = await _context.Projects.FindAsync(id); + + if (Project == null) + { + return NotFound(); + } + + return Project; + } + + // PUT: api/Project/5 + [HttpPut("{id}")] + public async Task PutProject(int id, ScrumProject projects) + { + // Die ID des Projects darf nicht geändert werden + if (id != projects.id) + { + return BadRequest(); + } + + // Speichere den geänderten Project im Context + _context.Entry(projects).State = EntityState.Modified; + + try + { + // Übernehme die Änderungen in die Datenbank + await _context.SaveChangesAsync(); + } + catch (DbUpdateConcurrencyException) + { + // Wenn der Project nicht existiert, gib Statuscode 404 zurück + if (!ProjectExists(id)) + { + return NotFound(); + } + else + { + throw; + } + } + + return NoContent(); + } + + // POST: api/Project + [HttpPost] + public async Task> PostProject(ScrumProject projects) + { + _context.Projects.Add(projects); + await _context.SaveChangesAsync(); + + // Der neue Project wurde erstellt und kann über die GetProject Methode abgerufen werden. + return CreatedAtAction("GetProject", new { id = projects.id }, projects); + } + + // DELETE: api/Project/5 + [HttpDelete("{id}")] + public async Task> DeleteProject(int id) + { + var scrumProject = await _context.Projects.FindAsync(id); + if (scrumProject == null) + { + return NotFound(); + } + + // Entferne den Project aus dem Context + _context.Projects.Remove(scrumProject); + // Speichere die Änderungen in der Datenbank + await _context.SaveChangesAsync(); + + return scrumProject; + } + + /// + /// Prüft, ob ein Project mit der angegebenen ID bereits existiert. + /// + private bool ProjectExists(int id) + { + return _context.Projects.Any(e => e.id == id); + } + } +} \ No newline at end of file diff --git a/ScrumTaskboard/TaskContext.cs b/ScrumTaskboard/TaskContext.cs index 9e00e6b..f01fea3 100644 --- a/ScrumTaskboard/TaskContext.cs +++ b/ScrumTaskboard/TaskContext.cs @@ -10,6 +10,7 @@ namespace ScrumTaskboard public DbSet Categories { get; set; } public DbSet Sprints { get; set; } public DbSet Status { get; set; } + public DbSet Projects { get; set; } public TaskContext() { } @@ -71,4 +72,11 @@ namespace ScrumTaskboard 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; } + } } From 5c8c46f893be179da3be45bbcee889c00dd7f59c Mon Sep 17 00:00:00 2001 From: Niggl1999 Date: Thu, 4 Jun 2020 17:45:36 +0200 Subject: [PATCH 10/13] Fixed naming --- ScrumTaskboard/Controllers/SprintsController.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ScrumTaskboard/Controllers/SprintsController.cs b/ScrumTaskboard/Controllers/SprintsController.cs index 4fc5d7f..c5856e1 100644 --- a/ScrumTaskboard/Controllers/SprintsController.cs +++ b/ScrumTaskboard/Controllers/SprintsController.cs @@ -21,7 +21,7 @@ namespace ScrumTaskboard.Controllers // GET: api/sprint [HttpGet] - public async Task>> GetSprints() + public async Task>> GetSprint() { return await _context.Sprints.ToListAsync(); } @@ -40,7 +40,7 @@ namespace ScrumTaskboard.Controllers return Sprint; } - // PUT: api/Sprint/5 + // PUT: api/sprint/5 [HttpPut("{id}")] public async Task PutSprint(int id, ScrumSprint sprint) { From 30291cc6ef469e266afaf9657a3645b6341c961f Mon Sep 17 00:00:00 2001 From: Niggl1999 Date: Thu, 4 Jun 2020 17:54:26 +0200 Subject: [PATCH 11/13] Added basic controller for users --- ScrumTaskboard/Controllers/UsersController.cs | 114 ++++++++++++++++++ ScrumTaskboard/TaskContext.cs | 7 ++ 2 files changed, 121 insertions(+) create mode 100644 ScrumTaskboard/Controllers/UsersController.cs diff --git a/ScrumTaskboard/Controllers/UsersController.cs b/ScrumTaskboard/Controllers/UsersController.cs new file mode 100644 index 0000000..d8895f1 --- /dev/null +++ b/ScrumTaskboard/Controllers/UsersController.cs @@ -0,0 +1,114 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; + +namespace ScrumTaskboard.Controllers +{ + [Route("[controller]")] + [ApiController] + public class UsersController : ControllerBase + { + private readonly TaskContext _context; + + public UsersController(TaskContext context) + { + _context = context; + } + + // GET: api/sprint + [HttpGet] + public async Task>> GetUser() + { + return await _context.Users.ToListAsync(); + } + + // GET: api/sprint/5 + [HttpGet("{id}")] + public async Task> GetUser(int id) + { + var User = await _context.Users.FindAsync(id); + + if (User == null) + { + return NotFound(); + } + + return User; + } + + // PUT: api/sprint/5 + [HttpPut("{id}")] + public async Task PutUser(int id, ScrumUser sprint) + { + // Die ID des Users darf nicht geändert werden + if (id != sprint.id) + { + return BadRequest(); + } + + // Speichere den geänderten User im Context + _context.Entry(sprint).State = EntityState.Modified; + + try + { + // Übernehme die Änderungen in die Datenbank + await _context.SaveChangesAsync(); + } + catch (DbUpdateConcurrencyException) + { + // Wenn der User nicht existiert, gib Statuscode 404 zurück + if (!UserExists(id)) + { + return NotFound(); + } + else + { + throw; + } + } + + return NoContent(); + } + + // POST: api/User + [HttpPost] + public async Task> PostUser(ScrumUser sprint) + { + _context.Users.Add(sprint); + await _context.SaveChangesAsync(); + + // Der neue User wurde erstellt und kann über die GetUser Methode abgerufen werden. + return CreatedAtAction("GetUser", new { id = sprint.id }, sprint); + } + + // DELETE: api/User/5 + [HttpDelete("{id}")] + public async Task> DeleteUser(int id) + { + var scrumUser = await _context.Users.FindAsync(id); + if (scrumUser == null) + { + return NotFound(); + } + + // Entferne den User aus dem Context + _context.Users.Remove(scrumUser); + // Speichere die Änderungen in der Datenbank + await _context.SaveChangesAsync(); + + return scrumUser; + } + + /// + /// Prüft, ob ein User mit der angegebenen ID bereits existiert. + /// + private bool UserExists(int id) + { + return _context.Users.Any(e => e.id == id); + } + } +} \ No newline at end of file diff --git a/ScrumTaskboard/TaskContext.cs b/ScrumTaskboard/TaskContext.cs index f01fea3..12762b2 100644 --- a/ScrumTaskboard/TaskContext.cs +++ b/ScrumTaskboard/TaskContext.cs @@ -11,6 +11,7 @@ namespace ScrumTaskboard public DbSet Sprints { get; set; } public DbSet Status { get; set; } public DbSet Projects { get; set; } + public DbSet Users { get; set; } public TaskContext() { } @@ -79,4 +80,10 @@ namespace ScrumTaskboard public string title { get; set; } public bool isprivate { get; set; } } + + public class ScrumUser + { + public int id { get; set; } + public string name { get; set; } + } } From 2393177b2e56fbcec1eb2c51b3d6fb65b16d275f Mon Sep 17 00:00:00 2001 From: Niggl Date: Fri, 5 Jun 2020 15:27:41 +0200 Subject: [PATCH 12/13] Added Enum for priority --- ScrumTaskboard/Startup.cs | 6 ++++++ ScrumTaskboard/TaskContext.cs | 14 +++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/ScrumTaskboard/Startup.cs b/ScrumTaskboard/Startup.cs index 812cc4f..8c739f1 100644 --- a/ScrumTaskboard/Startup.cs +++ b/ScrumTaskboard/Startup.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Text.Json.Serialization; using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; @@ -32,6 +33,11 @@ namespace ScrumTaskboard .AllowAnyMethod() .AllowAnyHeader(); })); + services.AddMvc().AddJsonOptions(o => + { + o.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()); + o.JsonSerializerOptions.IgnoreNullValues = true; + }); services.AddScoped(serviceProvider => new TaskContext( new DbContextOptionsBuilder() .UseNpgsql("Host=nig.gl; Port=8543; Username=scrum; Database=taskboard; Password=c6gXud7YvBWp2sgxSgy4wRN") diff --git a/ScrumTaskboard/TaskContext.cs b/ScrumTaskboard/TaskContext.cs index 12762b2..dbbe83b 100644 --- a/ScrumTaskboard/TaskContext.cs +++ b/ScrumTaskboard/TaskContext.cs @@ -1,6 +1,7 @@ using Microsoft.EntityFrameworkCore; using System; - +using System.Runtime.Serialization; + namespace ScrumTaskboard { public class TaskContext : DbContext @@ -34,6 +35,7 @@ namespace ScrumTaskboard public int sprint { get; set; } public int project { get; set; } public int userstory { get; set; } + public ScrumPrio priority { get; set; } } public class ScrumUserstory @@ -86,4 +88,14 @@ namespace ScrumTaskboard public int id { get; set; } public string name { get; set; } } + + public enum ScrumPrio + { + [EnumMember(Value = "low")] + low, + [EnumMember(Value = "medium")] + medium, + [EnumMember(Value = "high")] + high + } } From 541d276b7446a7df388928af6f0841c9ef1861be Mon Sep 17 00:00:00 2001 From: Niggl Date: Fri, 5 Jun 2020 15:29:34 +0200 Subject: [PATCH 13/13] Changed prio to enum --- ScrumTaskboard/TaskContext.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ScrumTaskboard/TaskContext.cs b/ScrumTaskboard/TaskContext.cs index dbbe83b..5ce3d46 100644 --- a/ScrumTaskboard/TaskContext.cs +++ b/ScrumTaskboard/TaskContext.cs @@ -43,7 +43,7 @@ namespace ScrumTaskboard public int id { get; set; } public string title { get; set; } public string content { get; set; } - public int priority { get; set; } + public ScrumPrio priority { get; set; } public int status { get; set; } public int category { get; set; } public int createdby { get; set; }