using Microsoft.AspNetCore.Mvc; using CarParkValidationAPI.Authorization; using CarParkValidationAPI.Entities; using CarParkValidationAPI.Models; using CarParkValidationAPI.Interface; using System.Threading.Tasks; using System; using Microsoft.AspNetCore.StaticFiles; using CarParkValidationAPI.Repository; namespace CarParkValidationAPI.Controllers { // [Authorize] [ApiController] [Route("api/v1/[controller]")] public class ConcessionValidationController : ControllerBase { private ConcessionValidationReportRepository _concessionValidationReport; private IConcessionValidation _concessionValidation; private readonly FileExtensionContentTypeProvider _contentTypeProvider; public ConcessionValidationController(IConcessionValidation concessionValidation, ConcessionValidationReportRepository concesionReportReport) { _concessionValidationReport = concesionReportReport; _concessionValidation = concessionValidation; } [HttpPost] public async Task ConcessionValidation([FromBody] ConcessionValidationDto model) { var currentUser = (User)HttpContext.Items["User"]; if (null == currentUser) return Unauthorized(new { message = "Unauthorized" }); _concessionValidation.SetCurrentUser(currentUser.Username); var response = await _concessionValidation.SaveConcessionValidationAsync(model); return Ok(response); } [HttpGet] public async Task ConcessionValidation(bool onlyActive=true) { var retval = await _concessionValidation.LoadConcessionValidationAsync(onlyActive); return Ok(retval); } [HttpGet("[action]")] public async Task ConcessionValidationByStaff(string staffLinkNo, DateTime currentDate) { var retval = await _concessionValidation.LoadConcessionValidationStaffLinkNoAsync(staffLinkNo, currentDate); return Ok(retval); } [HttpGet("[action]")] public async Task CheckConcessionValidationByStaff(string staffLinkNo, string concessionCard, DateTime currentDate, int id) { var retval = await _concessionValidation.CheckConcessionValidationStaffLinkNoAsync(staffLinkNo, concessionCard, currentDate, id); return Ok(retval); } [HttpGet("{id:int}")] public async Task ConcessionValidation(int id) { /* // only admins can access other user records var currentUser = (User)HttpContext.Items["User"]; if (id != currentUser.Id && currentUser.Role != Role.Admin) return Unauthorized(new { message = "Unauthorized" }); */ var retval = await _concessionValidation.LoadConcessionValidationByIdAsync(id); return Ok(retval); } [HttpDelete("{id:int}")] public async Task DeleteConcessionValidation(int id) { // only admins can access other user records var currentUser = (User)HttpContext.Items["User"]; //if (id != currentUser.Id && currentUser.Role != Role.Admin) return Unauthorized(new { message = "Unauthorized" }); // var retval = await _concessionValidation.DeleteConcessionValidationAsync(id); return Ok(retval); } /* download the excel file */ [HttpGet("[action]")] public async Task GetReportFile(DateTime fromDate , DateTime toDate) { // this.Response.Headers.Add("Access-Control-Expose-Headers", "Content-Disposition"); var result = await _concessionValidationReport.GetConcessionValidationReport(fromDate, toDate); // _concessionValidation.GetReport(fromDate, toDate); string fileContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; //Map(result.Data.FileName); return File(result.Data.Content, fileContentType, result.Data.FileName); } [NonAction] private string Map(string fileName) { if (!_contentTypeProvider.TryGetContentType(fileName, out string contentType)) { contentType = "application/octet-stream"; } return contentType; } } }