diff --git a/ApiControllers/rep_eva_self_reviewControllers.cs b/ApiControllers/rep_eva_self_reviewControllers.cs new file mode 100644 index 0000000..b48698a --- /dev/null +++ b/ApiControllers/rep_eva_self_reviewControllers.cs @@ -0,0 +1,146 @@ +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")] + public class rep_eva_self_reviewController : BaseController + { + #region Private Variables + private ILogger _logger; + private Irep_eva_self_reviewService _repository; + private IConfiguration Configuration { get; set; } + #endregion + + #region Properties + + #endregion + + /// + /// Default constructure for dependency injection + /// + /// + /// + /// + public rep_eva_self_reviewController(ILogger logger, Irep_eva_self_reviewService 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_reviewWithSelectionViewModel), 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_report")] + [ProducesResponseType(typeof(FileStreamResult), 200)] + [ProducesResponseType(400)] + [ProducesResponseType(500)] + //[ValidateAntiForgeryToken] + public IActionResult rep_eva_self_review_report(rep_eva_self_reviewReportRequestModel 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"); + + var temp = (from x in _repository.GetContext().eva_adjust_postponement_detail + join y in _repository.GetContext().eva_adjust_postponement + on x.adjust_postponement_id equals y.id + where x.id == model.detail_id + select y).FirstOrDefault(); + if(temp != null) + { + model.theround = temp.theRound.ToString(); + model.theyear = temp.fiscal_year.ToString(); + } + + var temp2 = (from x in _repository.GetContext().eva_adjust_postponement_detail + where x.id == model.detail_id + select x).FirstOrDefault(); + + if(temp2 != null && temp2.promoted_percentage.HasValue) + { + model.x1 = temp2.promoted_percentage.Value > 0 ? "X" : ""; + model.x2 = temp2.promoted_percentage.Value <= 0 ? "X" : ""; + } + + string url = $"{mainurl}{reportsite}/rep_eva_self_review.{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.xlsx b/EXCEL/eva_level_score@rep_eva_self_review.xlsx new file mode 100644 index 0000000..759e835 Binary files /dev/null and b/EXCEL/eva_level_score@rep_eva_self_review.xlsx differ diff --git a/Models/rep_eva_self_review/Irep_eva_self_reviewService.cs b/Models/rep_eva_self_review/Irep_eva_self_reviewService.cs new file mode 100644 index 0000000..c854d48 --- /dev/null +++ b/Models/rep_eva_self_review/Irep_eva_self_reviewService.cs @@ -0,0 +1,24 @@ +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_reviewService + { + + rep_eva_self_reviewWithSelectionViewModel GetBlankItem(); + + DataContext GetContext(); + + + + } +} + diff --git a/Models/rep_eva_self_review/rep_eva_self_reviewInputModel.cs b/Models/rep_eva_self_review/rep_eva_self_reviewInputModel.cs new file mode 100644 index 0000000..7409c7d --- /dev/null +++ b/Models/rep_eva_self_review/rep_eva_self_reviewInputModel.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_reviewInputModel + { + + public Guid? id { get; set; } + + public int? detail_id { get; set; } + + public string active_mode { get; set; } + } +} + diff --git a/Models/rep_eva_self_review/rep_eva_self_reviewReportRequestModel.cs b/Models/rep_eva_self_review/rep_eva_self_reviewReportRequestModel.cs new file mode 100644 index 0000000..44b3da7 --- /dev/null +++ b/Models/rep_eva_self_review/rep_eva_self_reviewReportRequestModel.cs @@ -0,0 +1,29 @@ +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_reviewReportRequestModel : rep_eva_self_reviewSearchModel + { + public string filetype { get; set; } + + public string contentType { get { return MyHelper.GetContentType(filetype); } } + + public string theyear { get; set; } + + public string theround { get; set; } + + public string x1 { get; set; } + + public string x2 { get; set; } + } +} + diff --git a/Models/rep_eva_self_review/rep_eva_self_reviewSearchModel.cs b/Models/rep_eva_self_review/rep_eva_self_reviewSearchModel.cs new file mode 100644 index 0000000..29f1f8b --- /dev/null +++ b/Models/rep_eva_self_review/rep_eva_self_reviewSearchModel.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_reviewSearchModel + { + + public Guid id { get; set; } + + public int? detail_id { get; set; } + + } +} + diff --git a/Models/rep_eva_self_review/rep_eva_self_reviewService.cs b/Models/rep_eva_self_review/rep_eva_self_reviewService.cs new file mode 100644 index 0000000..c3f128b --- /dev/null +++ b/Models/rep_eva_self_review/rep_eva_self_reviewService.cs @@ -0,0 +1,46 @@ +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_reviewService : Irep_eva_self_reviewService + { + private IBaseRepository _repository; + private IMyDatabase db; + private Iexternal_linkageService ext; + + public rep_eva_self_reviewService(IBaseRepository repository, IMyDatabase mydb, Iexternal_linkageService inext) + { + _repository = repository; + db = mydb; + ext = inext; + } + + public rep_eva_self_reviewWithSelectionViewModel GetBlankItem() + { + var i = new rep_eva_self_reviewWithSelectionViewModel(); + + + return i; + } + + public DataContext GetContext() + { + return _repository.Context; + } + } +} \ No newline at end of file diff --git a/Models/rep_eva_self_review/rep_eva_self_reviewViewModel.cs b/Models/rep_eva_self_review/rep_eva_self_reviewViewModel.cs new file mode 100644 index 0000000..a4ba022 --- /dev/null +++ b/Models/rep_eva_self_review/rep_eva_self_reviewViewModel.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_reviewViewModel : BaseViewModel2 + { + + public int? detail_id { get; set; } + + + } +} \ No newline at end of file diff --git a/Models/rep_eva_self_review/rep_eva_self_reviewWithSelectionViewModel.cs b/Models/rep_eva_self_review/rep_eva_self_reviewWithSelectionViewModel.cs new file mode 100644 index 0000000..12eaf09 --- /dev/null +++ b/Models/rep_eva_self_review/rep_eva_self_reviewWithSelectionViewModel.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_reviewWithSelectionViewModel: rep_eva_self_reviewViewModel + { + + } +} \ No newline at end of file diff --git a/Properties/launchSettings.json b/Properties/launchSettings.json index 2596353..214bc28 100644 --- a/Properties/launchSettings.json +++ b/Properties/launchSettings.json @@ -22,14 +22,14 @@ "DB_PASSWORD": "project0*", "JasperReportServer_username": "tb@zd.co.th", "SiteInformation_mainsite": "http://tb320dev.zd.co.th", - "JasperReportServer_password": "Be$m@rt", + "JasperReportServer_password": "project0*", "DB_HOST": "192.168.2.233", "SiteInformation_modulename": "ระบบประวัติเงินเดือนและการเลื่อนเงินเดือน", "SiteInformation_chatsite": "http://chat.rmutto.ac.th", "ASPNETCORE_ENVIRONMENT": "Development", "MIGRATION": "true", - "JasperReportServer_MainURL": "http://tb-320.zd.co.th/jasperserver/rest_v2/reports", - "JasperReportServer_LoginURL": "http://tb-320.zd.co.th/jasperserver/rest_v2/reports", + "JasperReportServer_MainURL": "https://hrm.thethaibar.or.th/jasperserver/rest_v2/reports", + "JasperReportServer_LoginURL": "https://hrm.thethaibar.or.th/jasperserver/rest_v2/login", "SiteInformation_appsite": "/eva", "SiteInformation_sitename": "เนติบัณฑิตยสภา ในพระบรมราชูปถัมภ์" } diff --git a/Startup.cs b/Startup.cs index 1f18d9b..515a506 100644 --- a/Startup.cs +++ b/Startup.cs @@ -301,6 +301,8 @@ namespace Test01 services.AddScoped(); + services.AddScoped(); + #endregion services.TryAddSingleton(); @@ -540,6 +542,11 @@ namespace Test01 cfg.CreateMap(); cfg.CreateMap(); + cfg.CreateMap(); + cfg.CreateMap(); + cfg.CreateMap(); + + }); #endregion diff --git a/ViewControllers/rep_eva_self_reviewViewControllers.cs b/ViewControllers/rep_eva_self_reviewViewControllers.cs new file mode 100644 index 0000000..21c5baf --- /dev/null +++ b/ViewControllers/rep_eva_self_reviewViewControllers.cs @@ -0,0 +1,50 @@ +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_reviewViewController : Controller + { + private ILogger _logger; + private Irep_eva_self_reviewService _repository; + private IConfiguration Configuration { get; set; } + + /// + /// Default constructure for dependency injection + /// + /// + /// + /// + public rep_eva_self_reviewViewController(ILogger logger, Irep_eva_self_reviewService repository, IConfiguration configuration) + { + _logger = logger; + _repository = repository; + Configuration = configuration; + } + + + public IActionResult rep_eva_self_review_report() + { + 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_reviewView/rep_eva_self_review_report.cshtml b/Views/rep_eva_self_reviewView/rep_eva_self_review_report.cshtml new file mode 100644 index 0000000..ddbad8e --- /dev/null +++ b/Views/rep_eva_self_reviewView/rep_eva_self_review_report.cshtml @@ -0,0 +1,45 @@ +@using Microsoft.Extensions.Configuration +@inject IConfiguration Configuration +@{ + ViewData["Title"] = "rep_eva_self_review"; +} + +
+
+
+ @Configuration["SiteInformation:modulename"] +
+
+
+ +
+
+ +
+
แบบแจ้งเตือนผลการเลื่อนเงินเดือน
+
+
+ +
+ +
+
+
+
+
+ + +@section FooterPlaceHolder{ + + +} + diff --git a/appsettings.Development.json b/appsettings.Development.json index 6c69a43..2b7e1ee 100644 --- a/appsettings.Development.json +++ b/appsettings.Development.json @@ -29,10 +29,10 @@ "From": "" }, "JasperReportServer": { - "MainURL": "http://tb-320.zd.co.th/jasperserver/rest_v2/reports", - "LoginURL": "http://tb-320.zd.co.th/jasperserver/rest_v2/login", + "MainURL": "https://hrm.thethaibar.or.th/jasperserver/rest_v2/reports", + "LoginURL": "https://hrm.thethaibar.or.th/jasperserver/rest_v2/login", "username": "tb@zd.co.th", - "password": "Be$m@rt", + "password": "project0*", "reportsite": "/tb320hr_site2" }, "SiteInformation": { diff --git a/tb320eva.csproj b/tb320eva.csproj index 5d602e9..1485eec 100644 --- a/tb320eva.csproj +++ b/tb320eva.csproj @@ -72,10 +72,12 @@ + + Always diff --git a/tb320eva.xml b/tb320eva.xml index 22de658..a047d37 100644 --- a/tb320eva.xml +++ b/tb320eva.xml @@ -3682,6 +3682,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 @@ -4258,6 +4286,14 @@ + + + Default constructure for dependency injection + + + + + Default constructure for dependency injection diff --git a/wwwroot/js/eva_self_review/eva_self_review.js b/wwwroot/js/eva_self_review/eva_self_review.js index c70de4d..03690ec 100644 --- a/wwwroot/js/eva_self_review/eva_self_review.js +++ b/wwwroot/js/eva_self_review/eva_self_review.js @@ -79,7 +79,8 @@ function eva_self_review_GoEdit(a) { // Incase open new page //window_open(appsite + "/eva_self_reviewView/eva_self_review_d?id=" + a); - alert(a); + //alert(a); + window_open(appsite + "/rep_eva_self_reviewView/rep_eva_self_review_report?id=" + a); } function eva_self_review_SetEditForm(a) { diff --git a/wwwroot/js/rep_eva_self_review/rep_eva_self_review_report.js b/wwwroot/js/rep_eva_self_review/rep_eva_self_review_report.js new file mode 100644 index 0000000..f233107 --- /dev/null +++ b/wwwroot/js/rep_eva_self_review/rep_eva_self_review_report.js @@ -0,0 +1,59 @@ +var rep_eva_self_review_API = "/api/rep_eva_self_review/"; + +//================= Search Customizaiton ========================================= + +function rep_eva_self_review_GetSearchParameter(fileType) { + var rep_eva_self_reviewSearchObject = new Object(); + rep_eva_self_reviewSearchObject.detail_id = getUrlParameter("id"); + + + rep_eva_self_reviewSearchObject.fileType = fileType; + + console.log(rep_eva_self_reviewSearchObject); + + return rep_eva_self_reviewSearchObject; +} + +function rep_eva_self_review_FeedDataToSearchForm(data) { + $("#s_rep_eva_self_review_detail_id").val(data.detail_id); + +} + +//================= Form Data Customizaiton ========================================= + +function rep_eva_self_review_InitialForm(s) { + var successFunc = function (result) { + rep_eva_self_review_FeedDataToSearchForm(result); + rep_eva_self_review_DoSearch('pdf'); + endLoad(); + }; + startLoad(); + AjaxGetRequest(apisite + rep_eva_self_review_API + "GetBlankItem", successFunc, AlertDanger); +} + +//================= Data Table ========================================= + +var s_rep_eva_self_review_customValidation = function (group) { + return ""; +}; + + +function rep_eva_self_review_DoSearch(fileType) { + if (!ValidateForm('s_rep_eva_self_review', s_rep_eva_self_review_customValidation)) { + return; + } + + var p = $.param(rep_eva_self_review_GetSearchParameter(fileType)); + + var report_url = apisite + "/api/rep_eva_self_review/rep_eva_self_review_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); + } +} +