diff --git a/ApiControllers/rep_eva_self_review_allControllers.cs b/ApiControllers/rep_eva_self_review_allControllers.cs new file mode 100644 index 0000000..d0e7982 --- /dev/null +++ b/ApiControllers/rep_eva_self_review_allControllers.cs @@ -0,0 +1,127 @@ +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_eva_self_review_all")] + public class rep_eva_self_review_allController : BaseController + { + #region Private Variables + private ILogger _logger; + private Irep_eva_self_review_allService _repository; + private IConfiguration Configuration { get; set; } + #endregion + + #region Properties + + #endregion + + /// + /// Default constructure for dependency injection + /// + /// + /// + /// + public rep_eva_self_review_allController(ILogger logger, Irep_eva_self_review_allService 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_eva_self_review_allWithSelectionViewModel), 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}"); + } + } + + /// + /// Download Report + /// + /// + /// + /// Return list of items by specifced keyword + /// Returns the item + /// Error Occurred + [HttpGet("rep_eva_self_review_all_report")] + [ProducesResponseType(typeof(FileStreamResult), 200)] + [ProducesResponseType(400)] + [ProducesResponseType(500)] + //[ValidateAntiForgeryToken] + public IActionResult rep_eva_self_review_all_report(rep_eva_self_review_allReportRequestModel 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"); + + model.employee_id = Convert.ToInt32(HttpContext.Request.Cookies["emp_id"]); + + string url = $"{mainurl}{reportsite}/rep_eva_self_review_all.{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}"); + } + } + + + } +} diff --git a/EXCEL/eva_level_score@rep_eva_self_review_all.xlsx b/EXCEL/eva_level_score@rep_eva_self_review_all.xlsx new file mode 100644 index 0000000..088972b Binary files /dev/null and b/EXCEL/eva_level_score@rep_eva_self_review_all.xlsx differ diff --git a/Models/rep_eva_self_review_all/Irep_eva_self_review_allService.cs b/Models/rep_eva_self_review_all/Irep_eva_self_review_allService.cs new file mode 100644 index 0000000..8f9fa7d --- /dev/null +++ b/Models/rep_eva_self_review_all/Irep_eva_self_review_allService.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using TTSW.EF; +using TTSW.Utils; +using TTSW.Constant; +using TTSW.Common; +using TodoAPI2.Models; + +namespace TodoAPI2.Models +{ + public interface Irep_eva_self_review_allService + { + rep_eva_self_review_allWithSelectionViewModel GetBlankItem(); + + } +} + diff --git a/Models/rep_eva_self_review_all/rep_eva_self_review_allInputModel.cs b/Models/rep_eva_self_review_all/rep_eva_self_review_allInputModel.cs new file mode 100644 index 0000000..198ee9b --- /dev/null +++ b/Models/rep_eva_self_review_all/rep_eva_self_review_allInputModel.cs @@ -0,0 +1,24 @@ +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_self_review_allInputModel + { + + public Guid? id { get; set; } + + public int? employee_id { get; set; } + + public string active_mode { get; set; } + } +} + diff --git a/Models/rep_eva_self_review_all/rep_eva_self_review_allReportRequestModel.cs b/Models/rep_eva_self_review_all/rep_eva_self_review_allReportRequestModel.cs new file mode 100644 index 0000000..44829e6 --- /dev/null +++ b/Models/rep_eva_self_review_all/rep_eva_self_review_allReportRequestModel.cs @@ -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_self_review_allReportRequestModel : rep_eva_self_review_allSearchModel + { + public string filetype { get; set; } + + public string contentType { get { return MyHelper.GetContentType(filetype); } } + } +} + diff --git a/Models/rep_eva_self_review_all/rep_eva_self_review_allSearchModel.cs b/Models/rep_eva_self_review_all/rep_eva_self_review_allSearchModel.cs new file mode 100644 index 0000000..5b69f1d --- /dev/null +++ b/Models/rep_eva_self_review_all/rep_eva_self_review_allSearchModel.cs @@ -0,0 +1,23 @@ +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_self_review_allSearchModel + { + + public Guid id { get; set; } + + public int? employee_id { get; set; } + + } +} + diff --git a/Models/rep_eva_self_review_all/rep_eva_self_review_allService.cs b/Models/rep_eva_self_review_all/rep_eva_self_review_allService.cs new file mode 100644 index 0000000..dac4248 --- /dev/null +++ b/Models/rep_eva_self_review_all/rep_eva_self_review_allService.cs @@ -0,0 +1,41 @@ +using AutoMapper; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using TTSW.EF; +using TTSW.Utils; +using TTSW.Constant; +using TTSW.Common; +using TodoAPI2.Models; +using System.IO; +using System.Web; +using System.Net; +using TTSW.Configure; +using Microsoft.Extensions.Options; +using System.Data; + +namespace TodoAPI2.Models +{ + public class rep_eva_self_review_allService : Irep_eva_self_review_allService + { + private IBaseRepository _repository; + private IMyDatabase db; + private Iexternal_linkageService ext; + + public rep_eva_self_review_allService(IBaseRepository repository, IMyDatabase mydb, Iexternal_linkageService inext) + { + _repository = repository; + db = mydb; + ext = inext; + } + + public rep_eva_self_review_allWithSelectionViewModel GetBlankItem() + { + var i = new rep_eva_self_review_allWithSelectionViewModel(); + + + return i; + } + } +} \ No newline at end of file diff --git a/Models/rep_eva_self_review_all/rep_eva_self_review_allViewModel.cs b/Models/rep_eva_self_review_all/rep_eva_self_review_allViewModel.cs new file mode 100644 index 0000000..e6d2efb --- /dev/null +++ b/Models/rep_eva_self_review_all/rep_eva_self_review_allViewModel.cs @@ -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_self_review_allViewModel : BaseViewModel2 + { + + public int? employee_id { get; set; } + + + } +} \ No newline at end of file diff --git a/Models/rep_eva_self_review_all/rep_eva_self_review_allWithSelectionViewModel.cs b/Models/rep_eva_self_review_all/rep_eva_self_review_allWithSelectionViewModel.cs new file mode 100644 index 0000000..c81184b --- /dev/null +++ b/Models/rep_eva_self_review_all/rep_eva_self_review_allWithSelectionViewModel.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace TodoAPI2.Models +{ + public class rep_eva_self_review_allWithSelectionViewModel: rep_eva_self_review_allViewModel + { + + } +} \ No newline at end of file diff --git a/Startup.cs b/Startup.cs index 515a506..bb7184a 100644 --- a/Startup.cs +++ b/Startup.cs @@ -303,6 +303,8 @@ namespace Test01 services.AddScoped(); + services.AddScoped(); + #endregion services.TryAddSingleton(); @@ -546,7 +548,9 @@ namespace Test01 cfg.CreateMap(); cfg.CreateMap(); - + cfg.CreateMap(); + cfg.CreateMap(); + cfg.CreateMap(); }); #endregion diff --git a/ViewControllers/rep_eva_self_review_allViewControllers.cs b/ViewControllers/rep_eva_self_review_allViewControllers.cs new file mode 100644 index 0000000..2794cfa --- /dev/null +++ b/ViewControllers/rep_eva_self_review_allViewControllers.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using TodoAPI2.Models; +using STAFF_API.Models; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Configuration; +using TodoAPI2.Controllers; + +namespace TodoAPI2.Controllers +{ + public class rep_eva_self_review_allViewController : Controller + { + private ILogger _logger; + private Irep_eva_self_review_allService _repository; + private IConfiguration Configuration { get; set; } + private Iexternal_employeeService emp; + + /// + /// Default constructure for dependency injection + /// + /// + /// + /// + /// + public rep_eva_self_review_allViewController(ILogger logger, Irep_eva_self_review_allService repository, + IConfiguration configuration, Iexternal_employeeService inemp) + { + _logger = logger; + _repository = repository; + Configuration = configuration; + emp = inemp; + } + + + public IActionResult rep_eva_self_review_all_report() + { + MyHelper.get_login(HttpContext, emp, Response); + if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); // Or UnauthorizedView + return View(); + } + + + [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] + public IActionResult Error() + { + return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); + } + } +} + + diff --git a/Views/rep_eva_self_review_allView/rep_eva_self_review_all_report.cshtml b/Views/rep_eva_self_review_allView/rep_eva_self_review_all_report.cshtml new file mode 100644 index 0000000..a29a5bc --- /dev/null +++ b/Views/rep_eva_self_review_allView/rep_eva_self_review_all_report.cshtml @@ -0,0 +1,45 @@ +@using Microsoft.Extensions.Configuration +@inject IConfiguration Configuration +@{ + ViewData["Title"] = "rep_eva_self_review_all"; +} + +
+
+
+ @Configuration["SiteInformation:modulename"] +
+
+
+ +
+
+ +
+
รายงานประวัติการเลื่อนเงินเดือนรายบุคคล
+
+
+ +
+ +
+
+
+
+
+ + +@section FooterPlaceHolder{ + + +} + diff --git a/tb320eva.csproj b/tb320eva.csproj index 1485eec..68c6c13 100644 --- a/tb320eva.csproj +++ b/tb320eva.csproj @@ -73,11 +73,13 @@ + + Always diff --git a/tb320eva.xml b/tb320eva.xml index 8a94aa8..7802db4 100644 --- a/tb320eva.xml +++ b/tb320eva.xml @@ -3710,6 +3710,34 @@ Returns the item Error Occurred + + + Default constructure for dependency injection + + + + + + + + Get Blank Item + + + + Return a blank item + Returns the item + Error Occurred + + + + Download Report + + + + Return list of items by specifced keyword + Returns the item + Error Occurred + Default constructure for dependency injection @@ -4296,6 +4324,15 @@ + + + Default constructure for dependency injection + + + + + + Default constructure for dependency injection diff --git a/wwwroot/js/rep_eva_self_review_all/rep_eva_self_review_all_report.js b/wwwroot/js/rep_eva_self_review_all/rep_eva_self_review_all_report.js new file mode 100644 index 0000000..db7722d --- /dev/null +++ b/wwwroot/js/rep_eva_self_review_all/rep_eva_self_review_all_report.js @@ -0,0 +1,59 @@ +var rep_eva_self_review_all_API = "/api/rep_eva_self_review_all/"; + +//================= Search Customizaiton ========================================= + +function rep_eva_self_review_all_GetSearchParameter(fileType) { + var rep_eva_self_review_allSearchObject = new Object(); + rep_eva_self_review_allSearchObject.employee_id = $("#s_rep_eva_self_review_all_employee_id").val(); + + + rep_eva_self_review_allSearchObject.fileType = fileType; + + console.log(rep_eva_self_review_allSearchObject); + + return rep_eva_self_review_allSearchObject; +} + +function rep_eva_self_review_all_FeedDataToSearchForm(data) { + $("#s_rep_eva_self_review_all_employee_id").val(data.employee_id); + +} + +//================= Form Data Customizaiton ========================================= + +function rep_eva_self_review_all_InitialForm(s) { + var successFunc = function (result) { + rep_eva_self_review_all_FeedDataToSearchForm(result); + rep_eva_self_review_all_DoSearch('pdf'); + endLoad(); + }; + startLoad(); + AjaxGetRequest(apisite + rep_eva_self_review_all_API + "GetBlankItem", successFunc, AlertDanger); +} + +//================= Data Table ========================================= + +var s_rep_eva_self_review_all_customValidation = function (group) { + return ""; +}; + + +function rep_eva_self_review_all_DoSearch(fileType) { + if (!ValidateForm('s_rep_eva_self_review_all', s_rep_eva_self_review_all_customValidation)) { + return; + } + + var p = $.param(rep_eva_self_review_all_GetSearchParameter(fileType)); + + var report_url = apisite + "/api/rep_eva_self_review_all/rep_eva_self_review_all_report?" + p; + + if (fileType === "pdf") { + $("#report_result").attr("src", report_url); + $("#report_result").show(); + //window.open(report_url); + } else { + $("#report_result").hide(); + window.open(report_url); + } +} +