using JobsJobsJobs.Server.Data; using JobsJobsJobs.Shared; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using NodaTime; using System; using System.Collections.Generic; using System.Linq; using System.Security.Claims; using System.Threading.Tasks; namespace JobsJobsJobs.Server.Areas.Api.Controllers { /// /// API controller for job listings /// [Route("api/listings")] [Authorize] [ApiController] public class ListingController : ControllerBase { /// /// The data context /// private readonly JobsDbContext _db; /// /// The NodaTime clock instance /// private readonly IClock _clock; /// /// Constructor /// /// The data context to use for this request /// The clock instance to use for this request public ListingController(JobsDbContext db, IClock clock) { _db = db; _clock = clock; } /// /// The current citizen ID /// private CitizenId CurrentCitizenId => CitizenId.Parse(User.FindFirst(ClaimTypes.NameIdentifier)!.Value); [HttpGet("mine")] public async Task Mine() => Ok(await _db.FindListingsByCitizen(CurrentCitizenId)); } }