404 lines
15 KiB
C#
404 lines
15 KiB
C#
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/eva_limit_frame_employee")]
|
|
public class eva_limit_frame_employeeController : BaseController
|
|
{
|
|
#region Private Variables
|
|
private ILogger<eva_limit_frame_employeeController> _logger;
|
|
private Ieva_limit_frame_employeeService _repository;
|
|
private IConfiguration Configuration { get; set; }
|
|
#endregion
|
|
|
|
#region Properties
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// Default constructure for dependency injection
|
|
/// </summary>
|
|
/// <param name="repository"></param>
|
|
/// <param name="configuration"></param>
|
|
/// <param name="logger"></param>
|
|
public eva_limit_frame_employeeController(ILogger<eva_limit_frame_employeeController> logger, Ieva_limit_frame_employeeService repository, IConfiguration configuration)
|
|
{
|
|
_logger = logger;
|
|
_repository = repository;
|
|
Configuration = configuration;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Get specific item by id
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// </remarks>
|
|
/// <returns>Return Get specific item by id</returns>
|
|
/// <response code="200">Returns the item</response>
|
|
/// <response code="500">Error Occurred</response>
|
|
[HttpGet("{id}")]
|
|
[ProducesResponseType(typeof(eva_limit_frame_employeeWithSelectionViewModel), 200)]
|
|
[ProducesResponseType(400)]
|
|
[ProducesResponseType(500)]
|
|
//[ValidateAntiForgeryToken]
|
|
public IActionResult Get(Guid id)
|
|
{
|
|
try
|
|
{
|
|
if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized();
|
|
var result = _repository.GetWithSelection(id);
|
|
|
|
return Ok(result);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogCritical($"Exception in IActionResult Get.", ex);
|
|
return StatusCode(500, $"{ex.Message}");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Get Blank Item
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// </remarks>
|
|
/// <returns>Return a blank item</returns>
|
|
/// <response code="200">Returns the item</response>
|
|
/// <response code="500">Error Occurred</response>
|
|
[HttpGet("GetBlankItem")]
|
|
[ProducesResponseType(typeof(eva_limit_frame_employeeWithSelectionViewModel), 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, $"{ex.Message}");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Get list items by employee_id
|
|
/// </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("")]
|
|
[ProducesResponseType(typeof(List<eva_limit_frame_employeeViewModel>), 200)]
|
|
[ProducesResponseType(400)]
|
|
[ProducesResponseType(500)]
|
|
//[ValidateAntiForgeryToken]
|
|
public IActionResult GetList(int? employee_id)
|
|
{
|
|
try
|
|
{
|
|
if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized();
|
|
return Ok(_repository.GetListByemployee_id(employee_id));
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogCritical($"Exception in IActionResult GetList.", ex);
|
|
return StatusCode(500, $"{ex.Message}");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Get list items by search
|
|
/// </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("GetListBySearch")]
|
|
[ProducesResponseType(typeof(List<eva_limit_frame_employeeViewModel>), 200)]
|
|
[ProducesResponseType(400)]
|
|
[ProducesResponseType(500)]
|
|
//[ValidateAntiForgeryToken]
|
|
public IActionResult GetListBySearch(eva_limit_frame_employeeSearchModel model)
|
|
{
|
|
try
|
|
{
|
|
if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized();
|
|
return Ok(_repository.GetListBySearch(model));
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogCritical($"Exception in IActionResult GetListBySearch.", ex);
|
|
return StatusCode(500, $"{ex.Message}");
|
|
}
|
|
}
|
|
|
|
/// <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("eva_limit_frame_employee_report")]
|
|
[ProducesResponseType(typeof(FileStreamResult), 200)]
|
|
[ProducesResponseType(400)]
|
|
[ProducesResponseType(500)]
|
|
//[ValidateAntiForgeryToken]
|
|
public IActionResult eva_limit_frame_employee_report(eva_limit_frame_employeeReportRequestModel model)
|
|
{
|
|
try
|
|
{
|
|
if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized();
|
|
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}/xxใส่ชื่อรายงานตรงนี้xx.{model.filetype}?{MyHelper.GetParameterForJasperReport(model)}&j_username={username}&j_password={password}";
|
|
|
|
if (model.filetype == "xlsx")
|
|
{
|
|
url += "&ignorePagination=true";
|
|
}
|
|
|
|
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, $"{ex.Message}");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Create new item
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// </remarks>
|
|
/// <param name="model"></param>
|
|
/// <returns>Response Result Message</returns>
|
|
/// <response code="200">Response Result Message</response>
|
|
/// <response code="400">If the model is invalid</response>
|
|
/// <response code="500">Error Occurred</response>
|
|
[HttpPost("")]
|
|
[ProducesResponseType(typeof(CommonResponseMessage), 200)]
|
|
[ProducesResponseType(400)]
|
|
[ProducesResponseType(500)]
|
|
//[ValidateAntiForgeryToken]
|
|
public IActionResult Insert([FromBody] eva_limit_frame_employeeInputModel model)
|
|
{
|
|
if (ModelState.IsValid)
|
|
{
|
|
try
|
|
{
|
|
if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized();
|
|
var result = _repository.Insert(model, true);
|
|
var message = new CommonResponseMessage();
|
|
message.code = "200";
|
|
message.message = $"เพิ่มข้อมูล เรียบร้อย";
|
|
message.data = result;
|
|
return Ok(message);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogCritical($"Exception while insert.", ex);
|
|
return StatusCode(500, $"{ex.Message}");
|
|
}
|
|
}
|
|
|
|
return BadRequest(ModelState);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Update item
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// </remarks>
|
|
/// <param name="id"></param>
|
|
/// <param name="model"></param>
|
|
/// <returns>Response Result Message</returns>
|
|
/// <response code="200">Response Result Message</response>
|
|
/// <response code="400">If the model is invalid</response>
|
|
/// <response code="500">Error Occurred</response>
|
|
[HttpPut("{id}")]
|
|
[ProducesResponseType(typeof(CommonResponseMessage), 200)]
|
|
[ProducesResponseType(400)]
|
|
[ProducesResponseType(500)]
|
|
//[ValidateAntiForgeryToken]
|
|
public IActionResult Update(Guid id, [FromBody] eva_limit_frame_employeeInputModel model)
|
|
{
|
|
if (ModelState.IsValid)
|
|
{
|
|
try
|
|
{
|
|
if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized();
|
|
var result = _repository.Update(id, model, true);
|
|
var message = new CommonResponseMessage();
|
|
message.code = "200";
|
|
message.message = $"แก้ไขข้อมูล เรียบร้อย";
|
|
message.data = result;
|
|
return Ok(message);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogCritical($"Exception while update {id.ToString()}.", ex);
|
|
return StatusCode(500, $"{id.ToString()}. {ex.Message}");
|
|
}
|
|
}
|
|
|
|
return BadRequest(ModelState);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Delete item
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// </remarks>
|
|
/// <param name="id"></param>
|
|
/// <returns>Response Result Message</returns>
|
|
/// <response code="200">Response Result Message</response>
|
|
/// <response code="400">If the model is invalid</response>
|
|
/// <response code="500">Error Occurred</response>
|
|
[HttpDelete("{id}")]
|
|
[ProducesResponseType(typeof(CommonResponseMessage), 200)]
|
|
[ProducesResponseType(400)]
|
|
[ProducesResponseType(500)]
|
|
//[ValidateAntiForgeryToken]
|
|
public IActionResult Delete(Guid id)
|
|
{
|
|
if (ModelState.IsValid)
|
|
{
|
|
try
|
|
{
|
|
if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized();
|
|
_repository.Delete(id);
|
|
var message = new CommonResponseMessage();
|
|
message.code = "200";
|
|
message.message = $"ลบข้อมูล เรียบร้อย";
|
|
message.data = null;
|
|
return Ok(message);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogCritical($"Exception while delete {id.ToString()}.", ex);
|
|
return StatusCode(500, $"{id.ToString()}. {ex.Message}");
|
|
}
|
|
}
|
|
|
|
return BadRequest(ModelState);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Update multiple item
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// </remarks>
|
|
/// <param name="model"></param>
|
|
/// <returns>Response Result Message</returns>
|
|
/// <response code="200">Response Result Message</response>
|
|
/// <response code="400">If the model is invalid</response>
|
|
/// <response code="500">Error Occurred</response>
|
|
[HttpPut("UpdateMultiple")]
|
|
[ProducesResponseType(typeof(CommonResponseMessage), 200)]
|
|
[ProducesResponseType(400)]
|
|
[ProducesResponseType(500)]
|
|
//[ValidateAntiForgeryToken]
|
|
public IActionResult UpdateMultiple([FromBody] List<eva_limit_frame_employeeInputModel> model)
|
|
{
|
|
if (ModelState.IsValid)
|
|
{
|
|
try
|
|
{
|
|
if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized();
|
|
string rowCount = _repository.UpdateMultiple(model, true);
|
|
var message = new CommonResponseMessage();
|
|
message.code = "200";
|
|
message.message = "ปรับปรุงข้อมูลเรียบร้อย จำนวน "+rowCount+" รายการ";
|
|
message.data = null;
|
|
return Ok(message);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogCritical($"Exception while UpdateMultiple.", ex);
|
|
return StatusCode(500, $"{ex.Message}");
|
|
}
|
|
}
|
|
|
|
return BadRequest(ModelState);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Refresh AutoField of all items
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// </remarks>
|
|
/// <returns>Response Result Message</returns>
|
|
/// <response code="200">Response Result Message</response>
|
|
/// <response code="400">If the model is invalid</response>
|
|
/// <response code="500">Error Occurred</response>
|
|
[HttpPut("RefreshAutoField")]
|
|
[ProducesResponseType(typeof(CommonResponseMessage), 200)]
|
|
[ProducesResponseType(400)]
|
|
[ProducesResponseType(500)]
|
|
//[ValidateAntiForgeryToken]
|
|
public IActionResult RefreshAutoField()
|
|
{
|
|
if (ModelState.IsValid)
|
|
{
|
|
try
|
|
{
|
|
//if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized();
|
|
_repository.RefreshAutoFieldOfAllData();
|
|
var message = new CommonResponseMessage();
|
|
message.code = "200";
|
|
message.message = $"ปรับปรุง Auto Field ของทุก record เรียบร้อย";
|
|
message.data = null;
|
|
return Ok(message);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogCritical($"Exception while RefreshAutoField.", ex);
|
|
return StatusCode(500, $"มีปัญหาระหว่างการปรับปรุง Auto Field. {ex.Message}");
|
|
}
|
|
}
|
|
|
|
return BadRequest(ModelState);
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|