using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.Logging; using TTSW.Controllers; using TTSW.EF; using TTSW.Utils; using TTSW.Constant; using TTSW.Common; using TodoAPI2.Models; using System.Data; using Microsoft.Extensions.Configuration; using System.IO; using System.Net; namespace TodoAPI2.Controllers { //[Authorize] [Produces("application/json")] [Route("api/rep_eva01")] public class rep_eva01Controller : BaseController { #region Private Variables private ILogger _logger; private Irep_eva01Service _repository; private IConfiguration Configuration { get; set; } #endregion #region Properties #endregion /// /// Default constructure for dependency injection /// /// /// /// public rep_eva01Controller(ILogger logger, Irep_eva01Service repository, IConfiguration configuration) { _logger = logger; _repository = repository; Configuration = configuration; } /// /// Get Blank Item /// /// /// /// Return a blank item /// Returns the item /// Error Occurred [HttpGet("GetBlankItem")] [ProducesResponseType(typeof(rep_eva01WithSelectionViewModel), 200)] [ProducesResponseType(400)] [ProducesResponseType(500)] //[ValidateAntiForgeryToken] public IActionResult GetBlankItem() { try { if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); var result = _repository.GetBlankItem(); return Ok(result); } catch (Exception ex) { _logger.LogCritical($"Exception in IActionResult GetBlankItem.", ex); return StatusCode(500, $"Exception in IActionResult GetBlankItem. {ex.Message}"); } } /// /// Download Report /// /// /// /// Return list of items by specifced keyword /// Returns the item /// Error Occurred [HttpGet("rep_eva01_report")] [ProducesResponseType(typeof(FileStreamResult), 200)] [ProducesResponseType(400)] [ProducesResponseType(500)] //[ValidateAntiForgeryToken] public IActionResult rep_eva01_report(rep_eva01ReportRequestModel model) { try { model.print_dt = MyHelper.GetDateStringForReport(DateTime.Now) + " " + MyHelper.GetTimeStringFromDate(DateTime.Now); if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); //var httpclient = MyHelper.getHttpClient(Configuration); var httpclient = new WebClient(); string mainurl = MyHelper.GetConfig(Configuration, "JasperReportServer:MainURL"); string reportsite = MyHelper.GetConfig(Configuration, "JasperReportServer:reportsite"); string username = MyHelper.GetConfig(Configuration, "JasperReportServer:username"); string password = MyHelper.GetConfig(Configuration, "JasperReportServer:password"); var p = (from i in _repository.GetContext().eva_adjust_postponement where i.id == model.round_id select i).FirstOrDefault(); model.date_text = MyHelper.GetDateStringForReport(p.theDate); model.command_no = p.command_no; string url = $"{mainurl}{reportsite}/rep_eva01.{model.filetype}?{MyHelper.GetParameterForJasperReport(model)}&j_username={username}&j_password={password}"; var data = httpclient.DownloadData(url); var stream = new MemoryStream(data); return File(stream, model.contentType); } catch (Exception ex) { _logger.LogCritical($"Exception while GetReport.", ex); return StatusCode(500, $"Exception while GetReport. {ex.Message}"); } } } }