107 lines
4.5 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|