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 ProjectsController : ControllerBase { private readonly TaskContext _context; public ProjectsController(TaskContext context) { _context = context; } // GET: api/projects [HttpGet] public async Task>> GetProject() { IEnumerable filtered = _context.Projects; if (HttpContext.Request.Query["title"].ToString() != "") { filtered = filtered.Where(t => t.title.Contains(HttpContext.Request.Query["title"].ToString())); } if (HttpContext.Request.Query["isprivate"].ToString() != "") { filtered = filtered.Where(t => t.isprivate == Convert.ToBoolean(HttpContext.Request.Query["isprivate"])); } return filtered.ToList(); } // 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); } } }