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