ทำหน้า font ให้แสดง report jasper และ เขียน api controller ให้แสดง report และ ทำ class model รับ parameter จาก font

This commit is contained in:
Pairat Sangprasert
2021-07-14 18:54:07 +07:00
parent c7745f6ab4
commit 9aa338ff18
5 changed files with 124 additions and 0 deletions

View File

@@ -15,6 +15,7 @@ using TodoAPI2.Models;
using System.Data;
using Microsoft.Extensions.Configuration;
using System.IO;
using System.Net;
namespace TodoAPI2.Controllers
{
@@ -315,6 +316,44 @@ namespace TodoAPI2.Controllers
return BadRequest(ModelState);
}
/// <summary>
/// Download Report
/// </summary>
/// <remarks>
/// </remarks>
/// <returns>Return list of items by specifced keyword</returns>
/// <response code="200">Returns the item</response>
/// <response code="500">Error Occurred</response>
[HttpGet("rep_eva_savemessage")]
[ProducesResponseType(typeof(FileStreamResult), 200)]
[ProducesResponseType(400)]
[ProducesResponseType(500)]
//[ValidateAntiForgeryToken]
public IActionResult rep_eva_savemessage(rep_eva_savemessageReportRequestModel model)
{
try
{
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");
string url = $"{mainurl}{reportsite}/rep_eva_savemessage.{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}");
}
}
}
}

View File

@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Threading.Tasks;
using TTSW.EF;
using TTSW.Utils;
using TTSW.Constant;
using TTSW.Common;
namespace TodoAPI2.Models
{
public class rep_eva_savemessageReportRequestModel
{
public int? quota_id { get; set; }
public string filetype { get; set; }
public string contentType { get { return MyHelper.GetContentType(filetype); } }
}
}

View File

@@ -5,6 +5,29 @@
Layout = "_LayoutDirect";
}
<div class="modal fade" id="report_xModel" style="z-index:1500" tabindex="-1" role="dialog" aria-labelledby="report_xModelLabel" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="report_xModelLabel">พิมพ์ บันทึกข้อความ</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-12">
<iframe id="report_result" style="display:none; height:500px; width:100%;"></iframe>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">ปิด</button>
</div>
</div>
</div>
</div>
<div class="row page-title">
<div class="col-md-5">
@@ -103,6 +126,7 @@
<div class="row">
<div class="col-md-12">
<button class="btn btn-info" type="button" onclick="javascript:CalculateRemainQuota(true)">คำนวณค่าครองชีพใหม่ ตามเกณฑ์เงินเดือน 13,285</button>
<button type="button" class="btn btn-submit" onclick="javascript:rep_eva_savemessage_DoSearch('pdf')">พิมพ์ บันทึกข้อความ</button>
</div>
</div>
</div>

View File

@@ -886,6 +886,16 @@
<response code="400">If the model is invalid</response>
<response code="500">Error Occurred</response>
</member>
<member name="M:TodoAPI2.Controllers.eva_adjust_postponement_quotaController.rep_eva_savemessage(TodoAPI2.Models.rep_eva_savemessageReportRequestModel)">
<summary>
Download Report
</summary>
<remarks>
</remarks>
<returns>Return list of items by specifced keyword</returns>
<response code="200">Returns the item</response>
<response code="500">Error Occurred</response>
</member>
<member name="M:TodoAPI2.Controllers.eva_create_evaluationController.#ctor(Microsoft.Extensions.Logging.ILogger{TodoAPI2.Controllers.eva_create_evaluationController},TodoAPI2.Models.Ieva_create_evaluationService,Microsoft.Extensions.Configuration.IConfiguration)">
<summary>
Default constructure for dependency injection

View File

@@ -180,3 +180,33 @@ function CalculateRemainQuota(m) {
}
// ================================================= report rep_eva_savemessage ==================================================
function rep_eva_savemessage_GetSearchParameter(fileType) {
var eva_adjust_postponement_quotaObject = new Object();
eva_adjust_postponement_quotaObject.quota_id = $("#eva_adjust_postponement_quota_id").val();
eva_adjust_postponement_quotaObject.fileType = fileType;
return eva_adjust_postponement_quotaObject;
}
function rep_eva_savemessage_DoSearch(fileType) {
if (!ValidateForm('eva_adjust_postponement_quota', eva_adjust_postponement_quota_customValidation)) {
return;
}
var p = $.param(rep_eva_savemessage_GetSearchParameter(fileType));
var report_url = apisite + eva_adjust_postponement_quota_API + "rep_eva_savemessage?" + p;
if (fileType === "pdf") {
$("#report_result").attr("src", report_url);
$("#report_result").show();
$("#report_xModel").modal("show");
} else {
$("#report_result").hide();
window.open(report_url);
}
}