Files
carparkvalidation/CarParkValidationAPI/Controllers/ConcessionValidationController.cs
T
2026-06-18 21:39:20 +10:00

107 lines
4.5 KiB
C#

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<IActionResult> 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<IActionResult> ConcessionValidation(bool onlyActive=true)
{
var retval = await _concessionValidation.LoadConcessionValidationAsync(onlyActive);
return Ok(retval);
}
[HttpGet("[action]")]
public async Task<IActionResult> ConcessionValidationByStaff(string staffLinkNo, DateTime fromDate, DateTime toDate)
{
var retval = await _concessionValidation.LoadConcessionValidationStaffLinkNoAsync(staffLinkNo, fromDate, toDate);
return Ok(retval);
}
[HttpGet("[action]")]
public async Task<IActionResult> CheckConcessionValidationByStaff(string staffLinkNo, string concessionCard, DateTime currentDate, int id)
{
var retval = await _concessionValidation.CheckConcessionValidationStaffLinkNoAsync(staffLinkNo, concessionCard, currentDate, id);
return Ok(retval);
}
[HttpGet("{id}")]
public async Task<IActionResult> 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<IActionResult> DeleteConcessionValidation(int id)
{
// only admins can access other user records
var currentUser = (User)HttpContext.Items["User"];
if (null == currentUser)
return Unauthorized(new { message = "Unauthorized" });
_concessionValidation.SetCurrentUser(currentUser.Username);
var retval = await _concessionValidation.DeleteConcessionValidationAsync(id);
return Ok(retval);
}
/* download the excel file */
[HttpGet("[action]")]
public async Task<IActionResult> 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;
}
}
}