diff --git a/ApiControllers/core_permission_listControllers.cs b/ApiControllers/core_permission_listControllers.cs new file mode 100644 index 0000000..5cd1105 --- /dev/null +++ b/ApiControllers/core_permission_listControllers.cs @@ -0,0 +1,147 @@ +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; +using OfficeOpenXml; + +namespace TodoAPI2.Controllers +{ + //[Authorize] + [Produces("application/json")] + [Route("api/core_permission_list")] + public class core_permission_listController : BaseController + { + #region Private Variables + private ILogger _logger; + private Icore_permission_listService _repository; + private IConfiguration Configuration { get; set; } + #endregion + + #region Properties + + #endregion + + /// + /// Default constructure for dependency injection + /// + /// + /// + /// + public core_permission_listController(ILogger logger, Icore_permission_listService 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(core_permission_listWithSelectionViewModel), 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("core_permission_list_report")] + [ProducesResponseType(typeof(FileStreamResult), 200)] + [ProducesResponseType(400)] + [ProducesResponseType(500)] + //[ValidateAntiForgeryToken] + public IActionResult core_permission_list_report(core_permission_listReportRequestModel model) + { + try + { + if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); + + var stream = new MemoryStream(); + + using (ExcelPackage excel = new ExcelPackage(stream)) + { + excel.Workbook.Worksheets.Add("Sheet1"); + + var headerRow = new List() + { + new string[] { "Column Name", "Data Type", "Size", "Primary Key", "FK", "UI", "MultiSelectionTable", "Desc", "Desc EN", "row", "column", "length" } + }; + + // Determine the header range (e.g. A1:D1) + string headerRange = "A1:" + Char.ConvertFromUtf32(headerRow[0].Length + 64) + "1"; + + // Target a worksheet + var worksheet = excel.Workbook.Worksheets["Sheet1"]; + + // Popular header row data + worksheet.Cells[headerRange].LoadFromArrays(headerRow); + + //convert the excel package to a byte array + byte[] bin = excel.GetAsByteArray(); + + return File(new MemoryStream(bin), model.contentType); + } + + } + catch (Exception ex) + { + _logger.LogCritical($"Exception while GetReport.", ex); + return StatusCode(500, $"{ex.Message}"); + } + } + + private byte[] ReadFully(Stream input) + { + using (MemoryStream ms = new MemoryStream()) + { + input.CopyTo(ms); + return ms.ToArray(); + } + } + + } + + +} + + diff --git a/EXCEL/eva_level_score@core_permission_list.xlsx b/EXCEL/eva_level_score@core_permission_list.xlsx new file mode 100644 index 0000000..077384e Binary files /dev/null and b/EXCEL/eva_level_score@core_permission_list.xlsx differ diff --git a/Models/core_permission_list/Icore_permission_listService.cs b/Models/core_permission_list/Icore_permission_listService.cs new file mode 100644 index 0000000..1c893f9 --- /dev/null +++ b/Models/core_permission_list/Icore_permission_listService.cs @@ -0,0 +1,18 @@ +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 Icore_permission_listService + { + core_permission_listWithSelectionViewModel GetBlankItem(); + } +} + diff --git a/Models/core_permission_list/core_permission_listInputModel.cs b/Models/core_permission_list/core_permission_listInputModel.cs new file mode 100644 index 0000000..c2612ec --- /dev/null +++ b/Models/core_permission_list/core_permission_listInputModel.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 core_permission_listInputModel + { + + public Guid? id { get; set; } + + public int? org_id { get; set; } + + public string active_mode { get; set; } + } +} + diff --git a/Models/core_permission_list/core_permission_listReportRequestModel.cs b/Models/core_permission_list/core_permission_listReportRequestModel.cs new file mode 100644 index 0000000..d0cd691 --- /dev/null +++ b/Models/core_permission_list/core_permission_listReportRequestModel.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 core_permission_listReportRequestModel : core_permission_listSearchModel + { + public string filetype { get; set; } + + public string contentType { get { return MyHelper.GetContentType(filetype); } } + } +} + diff --git a/Models/core_permission_list/core_permission_listSearchModel.cs b/Models/core_permission_list/core_permission_listSearchModel.cs new file mode 100644 index 0000000..4688fcd --- /dev/null +++ b/Models/core_permission_list/core_permission_listSearchModel.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 core_permission_listSearchModel + { + + public Guid id { get; set; } + + public int? org_id { get; set; } + + } +} + diff --git a/Models/core_permission_list/core_permission_listService.cs b/Models/core_permission_list/core_permission_listService.cs new file mode 100644 index 0000000..e8c3696 --- /dev/null +++ b/Models/core_permission_list/core_permission_listService.cs @@ -0,0 +1,44 @@ +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 core_permission_listService : Icore_permission_listService + { + private IMyDatabase db; + private Iexternal_linkageService ext; + + public core_permission_listService(IMyDatabase mydb, Iexternal_linkageService inext) + { + db = mydb; + ext = inext; + } + + + public core_permission_listWithSelectionViewModel GetBlankItem() + { + var i = new core_permission_listWithSelectionViewModel(); + i.item_org_id = (from x in ext.GetSortingDep() select x).ToList(); + + + return i; + } + + } +} + + diff --git a/Models/core_permission_list/core_permission_listViewModel.cs b/Models/core_permission_list/core_permission_listViewModel.cs new file mode 100644 index 0000000..215be88 --- /dev/null +++ b/Models/core_permission_list/core_permission_listViewModel.cs @@ -0,0 +1,22 @@ +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 core_permission_listViewModel : BaseViewModel2 + { + + public int? org_id { get; set; } + + public string org_id_external_linkage_external_name { get; set; } + + } +} \ No newline at end of file diff --git a/Models/core_permission_list/core_permission_listWithSelectionViewModel.cs b/Models/core_permission_list/core_permission_listWithSelectionViewModel.cs new file mode 100644 index 0000000..1ae34a1 --- /dev/null +++ b/Models/core_permission_list/core_permission_listWithSelectionViewModel.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace TodoAPI2.Models +{ + public class core_permission_listWithSelectionViewModel: core_permission_listViewModel + { + public List item_org_id { get; set; } + + } +} \ No newline at end of file diff --git a/Startup.cs b/Startup.cs index 0c1f0ff..e39bc17 100644 --- a/Startup.cs +++ b/Startup.cs @@ -293,6 +293,8 @@ namespace Test01 services.AddScoped(); + services.AddScoped(); + #endregion services.TryAddSingleton(); @@ -515,6 +517,11 @@ namespace Test01 cfg.CreateMap(); cfg.CreateMap(); cfg.CreateMap(); + + cfg.CreateMap(); + cfg.CreateMap(); + cfg.CreateMap(); + }); #endregion diff --git a/ViewControllers/core_permission_listViewControllers.cs b/ViewControllers/core_permission_listViewControllers.cs new file mode 100644 index 0000000..76d5c04 --- /dev/null +++ b/ViewControllers/core_permission_listViewControllers.cs @@ -0,0 +1,66 @@ +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 core_permission_listViewController : Controller + { + private ILogger _logger; + private Icore_permission_listService _repository; + private IConfiguration Configuration { get; set; } + + /// + /// Default constructure for dependency injection + /// + /// + /// + /// + public core_permission_listViewController(ILogger logger, Icore_permission_listService repository, IConfiguration configuration) + { + _logger = logger; + _repository = repository; + Configuration = configuration; + } + + // public IActionResult core_permission_list() + // { + // if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); // Or UnauthorizedView + // return View(); + // } + + // public IActionResult core_permission_list_d() + // { + // if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); // Or UnauthorizedView + // return View(); + // } + + public IActionResult core_permission_list_report() + { + if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); // Or UnauthorizedView + return View(); + } + + //public IActionResult core_permission_list_inline() + //{ + // 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/core_permission_listView/core_permission_list_report.cshtml b/Views/core_permission_listView/core_permission_list_report.cshtml new file mode 100644 index 0000000..e76a3d0 --- /dev/null +++ b/Views/core_permission_listView/core_permission_list_report.cshtml @@ -0,0 +1,55 @@ +@using Microsoft.Extensions.Configuration +@inject IConfiguration Configuration +@{ + ViewData["Title"] = "core_permission_list"; +} + +
+
+
+ @Configuration["SiteInformation:modulename"] +
+
+
+ +
+
+ +
+
รายงาน core_permission_list
+
+
+
+
+ +
+ + +
+ +
+
+
+ + +
+
+
+
+
+ + +@section FooterPlaceHolder{ + + +} + diff --git a/appsettings.Development.json b/appsettings.Development.json index 69fb467..fc51dce 100644 --- a/appsettings.Development.json +++ b/appsettings.Development.json @@ -1,9 +1,9 @@ { "connectionStrings": { - //"mainDBConnectionString": "Server=192.168.1.34;Port=32432;Database=tb320_hr_site2;User ID=postgres;Password=ZdPr0jects;", - //"externalDBConnectionString": "Server=192.168.1.34;Port=32432;Database=tb320_hr_site2;User ID=postgres;Password=ZdPr0jects;" - "mainDBConnectionString": "Server=192.168.2.233;Port=5432;Database=tb320_hr_site2;User ID=postgres;Password=project0*;", - "externalDBConnectionString": "Server=192.168.2.233;Port=5432;Database=tb320_hr_site2;User ID=postgres;Password=project0*;" + "mainDBConnectionString": "Server=192.168.1.34;Port=32432;Database=tb320_hr_site2;User ID=postgres;Password=ZdPr0jects;", + "externalDBConnectionString": "Server=192.168.1.34;Port=32432;Database=tb320_hr_site2;User ID=postgres;Password=ZdPr0jects;" + //"mainDBConnectionString": "Server=192.168.2.233;Port=5432;Database=tb320_hr_site2;User ID=postgres;Password=project0*;", + //"externalDBConnectionString": "Server=192.168.2.233;Port=5432;Database=tb320_hr_site2;User ID=postgres;Password=project0*;" }, "IdentityServer": { "url": "", diff --git a/tb320eva.xml b/tb320eva.xml index 5f47d8a..36348a3 100644 --- a/tb320eva.xml +++ b/tb320eva.xml @@ -23,6 +23,34 @@ If the model is invalid 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 @@ -3726,6 +3754,14 @@ Returns the item Error Occurred + + + Default constructure for dependency injection + + + + + Default constructure for dependency injection diff --git a/wwwroot/js/core_permission_list/core_permission_list_report.js b/wwwroot/js/core_permission_list/core_permission_list_report.js new file mode 100644 index 0000000..e519725 --- /dev/null +++ b/wwwroot/js/core_permission_list/core_permission_list_report.js @@ -0,0 +1,58 @@ +var core_permission_list_API = "/api/core_permission_list/"; + +//================= Search Customizaiton ========================================= + +function core_permission_list_GetSearchParameter(fileType) { + var core_permission_listSearchObject = new Object(); +core_permission_listSearchObject.org_id = $("#s_core_permission_list_org_id").val(); + + + core_permission_listSearchObject.fileType = fileType; + + console.log(core_permission_listSearchObject); + + return core_permission_listSearchObject; +} + +function core_permission_list_FeedDataToSearchForm(data) { +DropDownClearFormAndFeedWithData($("#s_core_permission_list_org_id"), data, "id", "external_name", "item_org_id", data.org_id); + +} + +//================= Form Data Customizaiton ========================================= + +function core_permission_list_InitialForm(s) { + var successFunc = function (result) { + core_permission_list_FeedDataToSearchForm(result); + endLoad(); + }; + startLoad(); + AjaxGetRequest(apisite + core_permission_list_API + "GetBlankItem", successFunc, AlertDanger); +} + +//================= Data Table ========================================= + +var s_core_permission_list_customValidation = function (group) { + return ""; +}; + + +function core_permission_list_DoSearch(fileType) { + if (!ValidateForm('s_core_permission_list', s_core_permission_list_customValidation)) { + return; + } + + var p = $.param(core_permission_list_GetSearchParameter(fileType)); + + var report_url = apisite + "/api/core_permission_list/core_permission_list_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); + } +} +