namespace marlin.web.Controllers; using core; using core.models; using Data; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; [Route("vcs")] public class VCSController(ApplicationDbContext dbContext) : Controller { [HttpGet("list")] public async Task List(CancellationToken ct) { var items = await dbContext.Sources .ToListAsync(ct); return this.View(items); } [HttpGet("details/{id}")] public async Task Details(Guid id, CancellationToken ct) { var item = await dbContext.Sources .FirstOrDefaultAsync(x => x.Id == id, ct); if (item == null) return this.NotFound(); return this.View(item); } [HttpPost("edit/{id}")] public async Task Edit(Guid id, VersionControlSource vcs, CancellationToken ct) { var item = await dbContext.Sources .FirstOrDefaultAsync(x => x.Id == id, ct); if (item == null) return this.NotFound(); item.UpstreamUrl = vcs.UpstreamUrl; item.BranchFilter = vcs.BranchFilter; item.MainBranch = vcs.MainBranch; item.MinPollingInterval = vcs.MinPollingInterval; await dbContext.SaveChangesAsync(ct); return this.RedirectToAction("List"); } [HttpGet("create")] public async Task Create() { return this.View(); } [HttpPost("create")] public async Task CreatePost(VersionControlSource vcs, CancellationToken ct) { vcs.Id = Guid.Empty; await dbContext.AddAsync(vcs, ct); await dbContext.SaveChangesAsync(ct); return this.RedirectToAction("Details", new { id = vcs.Id }); } }