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; } + } }