From dcd730b5112b4a857ccf57b76d7a9dedf2669a07 Mon Sep 17 00:00:00 2001 From: Nakorn Rientrakrunchai Date: Fri, 11 Dec 2020 21:38:21 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B9=80=E0=B8=9E=E0=B8=B4=E0=B9=88=E0=B8=A1?= =?UTF-8?q?=E0=B8=AB=E0=B8=99=E0=B9=89=E0=B8=B2=E0=B8=88=E0=B8=AD=E0=B8=A3?= =?UTF-8?q?=E0=B8=B2=E0=B8=A2=E0=B8=87=E0=B8=B2=E0=B8=99=20=E0=B9=81?= =?UTF-8?q?=E0=B8=9A=E0=B8=9A=E0=B9=80=E0=B8=95=E0=B8=B7=E0=B8=AD=E0=B8=99?= =?UTF-8?q?=E0=B8=81=E0=B8=B2=E0=B8=A3=E0=B9=80=E0=B8=A5=E0=B8=B7=E0=B9=88?= =?UTF-8?q?=E0=B8=AD=E0=B8=99=E0=B9=80=E0=B8=87=E0=B8=B4=E0=B8=99=E0=B9=80?= =?UTF-8?q?=E0=B8=94=E0=B8=B7=E0=B8=AD=E0=B8=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ApiControllers/eva_self_reviewControllers.cs | 213 +++++++++++ ...t_postponement_detail@eva_self_review.xlsx | Bin 0 -> 10476 bytes .../Ieva_self_reviewService.cs | 32 ++ .../eva_self_reviewInputModel.cs | 32 ++ .../eva_self_reviewReportRequestModel.cs | 21 ++ .../eva_self_reviewSearchModel.cs | 31 ++ .../eva_self_review/eva_self_reviewService.cs | 353 ++++++++++++++++++ .../eva_self_reviewViewModel.cs | 33 ++ .../eva_self_reviewWithSelectionViewModel.cs | 14 + Startup.cs | 6 + .../eva_self_reviewViewControllers.cs | 66 ++++ .../eva_self_review.cshtml | 72 ++++ tb320eva.csproj | 2 + tb320eva.xml | 66 ++++ wwwroot/js/eva_self_review/eva_self_review.js | 235 ++++++++++++ 15 files changed, 1176 insertions(+) create mode 100644 ApiControllers/eva_self_reviewControllers.cs create mode 100644 EXCEL/eva_adjust_postponement_detail@eva_self_review.xlsx create mode 100644 Models/eva_self_review/Ieva_self_reviewService.cs create mode 100644 Models/eva_self_review/eva_self_reviewInputModel.cs create mode 100644 Models/eva_self_review/eva_self_reviewReportRequestModel.cs create mode 100644 Models/eva_self_review/eva_self_reviewSearchModel.cs create mode 100644 Models/eva_self_review/eva_self_reviewService.cs create mode 100644 Models/eva_self_review/eva_self_reviewViewModel.cs create mode 100644 Models/eva_self_review/eva_self_reviewWithSelectionViewModel.cs create mode 100644 ViewControllers/eva_self_reviewViewControllers.cs create mode 100644 Views/eva_self_reviewView/eva_self_review.cshtml create mode 100644 wwwroot/js/eva_self_review/eva_self_review.js diff --git a/ApiControllers/eva_self_reviewControllers.cs b/ApiControllers/eva_self_reviewControllers.cs new file mode 100644 index 0000000..b19bf3e --- /dev/null +++ b/ApiControllers/eva_self_reviewControllers.cs @@ -0,0 +1,213 @@ +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_self_review")] + public class eva_self_reviewController : BaseController + { + #region Private Variables + private ILogger _logger; + private Ieva_self_reviewService _repository; + private IConfiguration Configuration { get; set; } + #endregion + + #region Properties + + #endregion + + /// + /// Default constructure for dependency injection + /// + /// + /// + /// + public eva_self_reviewController(ILogger logger, Ieva_self_reviewService repository, IConfiguration configuration) + { + _logger = logger; + _repository = repository; + Configuration = configuration; + } + + /// + /// Get specific item by id + /// + /// + /// + /// Return Get specific item by id + /// Returns the item + /// Error Occurred + [HttpGet("{id}")] + [ProducesResponseType(typeof(eva_self_reviewWithSelectionViewModel), 200)] + [ProducesResponseType(400)] + [ProducesResponseType(500)] + //[ValidateAntiForgeryToken] + public IActionResult Get(int 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}"); + } + } + + /// + /// Get Blank Item + /// + /// + /// + /// Return a blank item + /// Returns the item + /// Error Occurred + [HttpGet("GetBlankItem")] + [ProducesResponseType(typeof(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}"); + } + } + + /// + /// Get list items by adjust_postponement_id + /// + /// + /// + /// Return list of items by specifced keyword + /// Returns the item + /// Error Occurred + [HttpGet("")] + [ProducesResponseType(typeof(List), 200)] + [ProducesResponseType(400)] + [ProducesResponseType(500)] + //[ValidateAntiForgeryToken] + public IActionResult GetList(int? adjust_postponement_id) + { + try + { + if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); + return Ok(_repository.GetListByadjust_postponement_id(adjust_postponement_id)); + } + catch (Exception ex) + { + _logger.LogCritical($"Exception in IActionResult GetList.", ex); + return StatusCode(500, $"{ex.Message}"); + } + } + + /// + /// Get list items by search + /// + /// + /// + /// Return list of items by specifced keyword + /// Returns the item + /// Error Occurred + [HttpGet("GetListBySearch")] + [ProducesResponseType(typeof(List), 200)] + [ProducesResponseType(400)] + [ProducesResponseType(500)] + //[ValidateAntiForgeryToken] + public IActionResult GetListBySearch(eva_self_reviewSearchModel model) + { + try + { + if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); + + model.employee_id = Convert.ToInt32(Request.Cookies["emp_id"]); + + return Ok(_repository.GetListBySearch(model)); + } + catch (Exception ex) + { + _logger.LogCritical($"Exception in IActionResult GetListBySearch.", ex); + return StatusCode(500, $"{ex.Message}"); + } + } + + /// + /// Download Report + /// + /// + /// + /// Return list of items by specifced keyword + /// Returns the item + /// Error Occurred + [HttpGet("eva_self_review_report")] + [ProducesResponseType(typeof(FileStreamResult), 200)] + [ProducesResponseType(400)] + [ProducesResponseType(500)] + //[ValidateAntiForgeryToken] + public IActionResult eva_self_review_report(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"); + + 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}"); + } + } + + + + + + } +} diff --git a/EXCEL/eva_adjust_postponement_detail@eva_self_review.xlsx b/EXCEL/eva_adjust_postponement_detail@eva_self_review.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9f5e6396fe3eb906a0782241ab8d09194a0ed9b5 GIT binary patch literal 10476 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 W$-;nj5CA{|pOj!VuB73;wTcQ4`q literal 0 HcmV?d00001 diff --git a/Models/eva_self_review/Ieva_self_reviewService.cs b/Models/eva_self_review/Ieva_self_reviewService.cs new file mode 100644 index 0000000..d463137 --- /dev/null +++ b/Models/eva_self_review/Ieva_self_reviewService.cs @@ -0,0 +1,32 @@ +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 Ieva_self_reviewService : IBaseService + { + new eva_self_reviewViewModel Insert(eva_self_reviewInputModel model); + new eva_self_reviewViewModel Update(int id, eva_self_reviewInputModel model); + List GetListByadjust_postponement_id(int? adjust_postponement_id); + List GetListBySearch(eva_self_reviewSearchModel model); + + string UpdateMultiple(List model); + eva_self_reviewWithSelectionViewModel GetWithSelection(int id); + eva_self_reviewWithSelectionViewModel GetBlankItem(); + + void RefreshAutoFieldOfAllData(); + eva_adjust_postponement_detailEntity GetEntity(int id); + DataContext GetContext(); + + + + } +} + diff --git a/Models/eva_self_review/eva_self_reviewInputModel.cs b/Models/eva_self_review/eva_self_reviewInputModel.cs new file mode 100644 index 0000000..233895b --- /dev/null +++ b/Models/eva_self_review/eva_self_reviewInputModel.cs @@ -0,0 +1,32 @@ +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 eva_self_reviewInputModel + { + + public int? id { get; set; } + + public int? adjust_postponement_id { get; set; } + + public int? adjust_postponement_quota_id { get; set; } + + public int? employee_id { get; set; } + + public int? eva_year { get; set; } + + public int? eva_no { get; set; } + + public string active_mode { get; set; } + } +} + diff --git a/Models/eva_self_review/eva_self_reviewReportRequestModel.cs b/Models/eva_self_review/eva_self_reviewReportRequestModel.cs new file mode 100644 index 0000000..1d2ee46 --- /dev/null +++ b/Models/eva_self_review/eva_self_reviewReportRequestModel.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 eva_self_reviewReportRequestModel : eva_self_reviewSearchModel + { + public string filetype { get; set; } + + public string contentType { get { return MyHelper.GetContentType(filetype); } } + } +} + diff --git a/Models/eva_self_review/eva_self_reviewSearchModel.cs b/Models/eva_self_review/eva_self_reviewSearchModel.cs new file mode 100644 index 0000000..e448fdf --- /dev/null +++ b/Models/eva_self_review/eva_self_reviewSearchModel.cs @@ -0,0 +1,31 @@ +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 eva_self_reviewSearchModel + { + + public int id { get; set; } + + public int? adjust_postponement_id { get; set; } + + public int? adjust_postponement_quota_id { get; set; } + + public int? employee_id { get; set; } + + public int? eva_year { get; set; } + + public int? eva_no { get; set; } + + } +} + diff --git a/Models/eva_self_review/eva_self_reviewService.cs b/Models/eva_self_review/eva_self_reviewService.cs new file mode 100644 index 0000000..5c91dbd --- /dev/null +++ b/Models/eva_self_review/eva_self_reviewService.cs @@ -0,0 +1,353 @@ +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 eva_self_reviewService : Ieva_self_reviewService + { + private IBaseRepository2 _repository; + private IMyDatabase db; + private Iexternal_linkageService ext; + + public eva_self_reviewService(IBaseRepository2 repository, IMyDatabase mydb, Iexternal_linkageService inext) + { + _repository = repository; + db = mydb; + ext = inext; + } + + #region Private Functions + private eva_adjust_postponement_detailEntity GetEntity(eva_self_reviewInputModel model) + { + return Mapper.Map(model); + } + private List GetEntityList(List models) + { + return Mapper.Map>(models); + } + private eva_self_reviewViewModel GetDto(eva_adjust_postponement_detailEntity entity) + { + return Mapper.Map(entity); + } + private List GetDtoList(List entities) + { + return Mapper.Map>(entities); + } + + #endregion + + #region Public Functions + #region Query Functions + + public eva_self_reviewViewModel Get(int id) + { + var entity = _repository.Get(id); + + return GetDto(entity); + } + + public eva_adjust_postponement_detailEntity GetEntity(int id) + { + var entity = _repository.Get(id); + + return entity; + } + + public DataContext GetContext() + { + return _repository.Context; + } + + private List fill_list_number(List input) + { + var result = new List(); + foreach(var i in input) + { + var n = new external_linkageViewModel(); + n.external_id = i.Value; + n.external_name = i.ToString(); + result.Add(n); + } + return result; + } + + public eva_self_reviewWithSelectionViewModel GetWithSelection(int id) + { + var entity = _repository.Get(id); + var i = Mapper.Map(entity); + + var temp = (from x in _repository.Context.eva_adjust_postponement + select x.fiscal_year).Distinct().OrderBy(x => x.Value).ToList(); + + i.item_eva_year = fill_list_number((from x in _repository.Context.eva_adjust_postponement + select x.fiscal_year).Distinct().OrderBy(x => x.Value).ToList()); + i.item_eva_no = fill_list_number((from x in _repository.Context.eva_adjust_postponement + select x.theRound).Distinct().OrderBy(x => x.Value).ToList()); + + return i; + } + public eva_self_reviewWithSelectionViewModel GetBlankItem() + { + var i = new eva_self_reviewWithSelectionViewModel(); + i.item_eva_year = fill_list_number((from x in _repository.Context.eva_adjust_postponement + select x.fiscal_year).Distinct().OrderBy(x => x.Value).ToList()); + i.item_eva_no = fill_list_number((from x in _repository.Context.eva_adjust_postponement + select x.theRound).Distinct().OrderBy(x => x.Value).ToList()); + + + return i; + } + + public List GetListByadjust_postponement_id(int? adjust_postponement_id) + { + var model = new eva_self_reviewSearchModel(); + model.adjust_postponement_id = adjust_postponement_id; + return GetListBySearch(model); + } + + public List GetListBySearch(eva_self_reviewSearchModel model) + { + var data = ( + from m_eva_self_review in _repository.Context.eva_adjust_postponement_detail + + join fk_eva_adjust_postponement1 in _repository.Context.eva_adjust_postponement on m_eva_self_review.adjust_postponement_id equals fk_eva_adjust_postponement1.id + into eva_adjust_postponementResult1 + from fk_eva_adjust_postponementResult1 in eva_adjust_postponementResult1.DefaultIfEmpty() + + join fk_eva_adjust_postponement2 in _repository.Context.eva_adjust_postponement on m_eva_self_review.adjust_postponement_quota_id equals fk_eva_adjust_postponement2.id + into eva_adjust_postponementResult2 + from fk_eva_adjust_postponementResult2 in eva_adjust_postponementResult2.DefaultIfEmpty() + + //join fk_external_linkage4 in ext.GetDemoItem() on m_eva_self_review.eva_year equals fk_external_linkage4.id + //into external_linkageResult4 + //from fk_external_linkageResult4 in external_linkageResult4.DefaultIfEmpty() + + //join fk_external_linkage5 in ext.GetDemoItem() on m_eva_self_review.eva_no equals fk_external_linkage5.id + //into external_linkageResult5 + //from fk_external_linkageResult5 in external_linkageResult5.DefaultIfEmpty() + + + where + (model.employee_id.HasValue && m_eva_self_review.employee_id == model.employee_id) + && (!model.eva_year.HasValue || fk_eva_adjust_postponementResult1.fiscal_year == model.eva_year) + && (!model.eva_no.HasValue || fk_eva_adjust_postponementResult1.theRound == model.eva_no) + + + orderby m_eva_self_review.created descending + select new eva_self_reviewViewModel() + { + id = m_eva_self_review.id, + adjust_postponement_id = m_eva_self_review.adjust_postponement_id, + adjust_postponement_quota_id = m_eva_self_review.adjust_postponement_quota_id, + employee_id = m_eva_self_review.employee_id, + eva_year = fk_eva_adjust_postponementResult1.fiscal_year, + eva_no = fk_eva_adjust_postponementResult1.theRound, + + adjust_postponement_id_eva_adjust_postponement_fiscal_year = fk_eva_adjust_postponementResult1.fiscal_year, + adjust_postponement_quota_id_eva_adjust_postponement_fiscal_year = fk_eva_adjust_postponementResult2.fiscal_year, + eva_year_external_linkage_external_name = fk_eva_adjust_postponementResult1.fiscal_year.ToString(), + eva_no_external_linkage_external_name = fk_eva_adjust_postponementResult1.theRound.ToString(), + + isActive = m_eva_self_review.isActive, + Created = m_eva_self_review.created, + Updated = m_eva_self_review.updated + } + ).OrderBy(x => x.eva_year * 10 + x.eva_no).ToList(); + + return data; + } + + #endregion + + #region Manipulation Functions + + + public int GetNewPrimaryKey() + { + int? newkey = 0; + + var x = (from i in _repository.Context.eva_adjust_postponement_detail + orderby i.id descending + select i).Take(1).ToList(); + + if(x.Count > 0) + { + newkey = x[0].id + 1; + } + + return newkey.Value; + } + + + public eva_self_reviewViewModel Insert(eva_self_reviewInputModel model) + { + // var entity = GetEntity(model); + // entity.id = GetNewPrimaryKey(); + + + //entity.SetAutoField(_repository.Context); + + // if (is_force_save) + // { + // var inserted = _repository.Insert(entity); + // entity.DoAfterInsertUpdate(_repository.Context); + // return Get(inserted.id); + // } + // else + // { + // _repository.InsertWithoutCommit(entity); + // entity.DoAfterInsertUpdate(_repository.Context); + // return Mapper.Map(entity); + // } + + return null; + } + + public eva_self_reviewViewModel Update(int id, eva_self_reviewInputModel model) + { + // var existingEntity = _repository.Get(id); + // if (existingEntity != null) + // { + // existingEntity.adjust_postponement_id = model.adjust_postponement_id; + // existingEntity.adjust_postponement_quota_id = model.adjust_postponement_quota_id; + // existingEntity.employee_id = model.employee_id; + // existingEntity.eva_year = model.eva_year; + // existingEntity.eva_no = model.eva_no; + + //existingEntity.SetAutoField(_repository.Context); + + // if (is_force_save) + // { + // var updated = _repository.Update(id, existingEntity); + // existingEntity.DoAfterInsertUpdate(_repository.Context); + // return Get(updated.id); + // } + // else + // { + // _repository.UpdateWithoutCommit(id, existingEntity); + // existingEntity.DoAfterInsertUpdate(_repository.Context); + // return Mapper.Map(existingEntity); + // } + // } + // else + // throw new NotificationException("No data to update"); + + return null; + } + + public string UpdateMultiple(List model) + { + // foreach(var i in model) + // { + // if (i.active_mode == "1" && i.id.HasValue) // update + // { + // var existingEntity = _repository.Get(i.id.Value); + // if (existingEntity != null) + // { + // existingEntity.adjust_postponement_id = i.adjust_postponement_id; + // existingEntity.adjust_postponement_quota_id = i.adjust_postponement_quota_id; + // existingEntity.employee_id = i.employee_id; + // existingEntity.eva_year = i.eva_year; + // existingEntity.eva_no = i.eva_no; + + // existingEntity.SetAutoField(_repository.Context); + // _repository.UpdateWithoutCommit(i.id.Value, existingEntity); + // } + // } + // else if (i.active_mode == "1" && !i.id.HasValue) // add + // { + // var entity = GetEntity(i); + // entity.id = GetNewPrimaryKey(); + //entity.SetAutoField(_repository.Context); + // _repository.InsertWithoutCommit(entity); + // } + // else if (i.active_mode == "0" && i.id.HasValue) // remove + // { + // _repository.DeleteWithoutCommit(i.id.Value); + // } + // else if (i.active_mode == "0" && !i.id.HasValue) + // { + // // nothing to do + // } + // } + // if (is_force_save) + // { + // _repository.Context.SaveChanges(); + // } + + // return model.Count().ToString(); + + return null; + } + + public eva_self_reviewViewModel SetAsActive(int id) + { + var updated = _repository.SetAsActive(id); + + return Get(updated.id); + } + public eva_self_reviewViewModel SetAsInactive(int id) + { + var updated = _repository.SetAsInActive(id); + + return Get(updated.id); + } + public void Delete(int id) + { + _repository.Delete(id); + + return; + } + + public void RefreshAutoFieldOfAllData() + { + //var all_items = from i in _repository.Context.eva_adjust_postponement_detail + // select i; + //foreach (var item in all_items) + //{ + // item.SetAutoField(_repository.Context); + //} + //_repository.Context.SaveChanges(); + } + + private Dictionary GetLookupForLog() + { + var i = new Dictionary(); + + + i.Add("adjust_postponement_id", "รหัสอ้างอิงตาราง eva_adjust_postponement"); + i.Add("adjust_postponement_id_eva_adjust_postponement_fiscal_year", "รหัสอ้างอิงตาราง eva_adjust_postponement"); + i.Add("adjust_postponement_quota_id", "รหัสอ้างอิงตาราง eva_adjust_postponement"); + i.Add("adjust_postponement_quota_id_eva_adjust_postponement_fiscal_year", "รหัสอ้างอิงตาราง eva_adjust_postponement"); + i.Add("employee_id", "ผู้รับการประเมิน"); + i.Add("eva_year", "ปีงบประมาณ"); + i.Add("eva_year_external_linkage_external_name", "ปีงบประมาณ"); + i.Add("eva_no", "รอบการประเมิน"); + i.Add("eva_no_external_linkage_external_name", "รอบการประเมิน"); + + return i; + } + + #endregion + + #region Match Item + + #endregion + + #endregion + } +} \ No newline at end of file diff --git a/Models/eva_self_review/eva_self_reviewViewModel.cs b/Models/eva_self_review/eva_self_reviewViewModel.cs new file mode 100644 index 0000000..cbfe5fb --- /dev/null +++ b/Models/eva_self_review/eva_self_reviewViewModel.cs @@ -0,0 +1,33 @@ +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 eva_self_reviewViewModel : BaseViewModel2 + { + + public int? adjust_postponement_id { get; set; } + + public int? adjust_postponement_quota_id { get; set; } + + public int? employee_id { get; set; } + + public int? eva_year { get; set; } + + public int? eva_no { get; set; } + + public int? adjust_postponement_id_eva_adjust_postponement_fiscal_year { get; set; } + public int? adjust_postponement_quota_id_eva_adjust_postponement_fiscal_year { get; set; } + public string eva_year_external_linkage_external_name { get; set; } + public string eva_no_external_linkage_external_name { get; set; } + + } +} \ No newline at end of file diff --git a/Models/eva_self_review/eva_self_reviewWithSelectionViewModel.cs b/Models/eva_self_review/eva_self_reviewWithSelectionViewModel.cs new file mode 100644 index 0000000..f09887c --- /dev/null +++ b/Models/eva_self_review/eva_self_reviewWithSelectionViewModel.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace TodoAPI2.Models +{ + public class eva_self_reviewWithSelectionViewModel: eva_self_reviewViewModel + { + public List item_eva_year { get; set; } + public List item_eva_no { get; set; } + + } +} \ No newline at end of file diff --git a/Startup.cs b/Startup.cs index c40b150..1f18d9b 100644 --- a/Startup.cs +++ b/Startup.cs @@ -299,6 +299,8 @@ namespace Test01 services.AddScoped(); + services.AddScoped(); + #endregion services.TryAddSingleton(); @@ -534,6 +536,10 @@ namespace Test01 cfg.CreateMap(); cfg.CreateMap(); + cfg.CreateMap(); + cfg.CreateMap(); + cfg.CreateMap(); + }); #endregion diff --git a/ViewControllers/eva_self_reviewViewControllers.cs b/ViewControllers/eva_self_reviewViewControllers.cs new file mode 100644 index 0000000..a3b8155 --- /dev/null +++ b/ViewControllers/eva_self_reviewViewControllers.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 eva_self_reviewViewController : Controller + { + private ILogger _logger; + private Ieva_self_reviewService _repository; + private IConfiguration Configuration { get; set; } + + /// + /// Default constructure for dependency injection + /// + /// + /// + /// + public eva_self_reviewViewController(ILogger logger, Ieva_self_reviewService repository, IConfiguration configuration) + { + _logger = logger; + _repository = repository; + Configuration = configuration; + } + + public IActionResult eva_self_review() + { + if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); // Or UnauthorizedView + return View(); + } + + public IActionResult eva_self_review_d() + { + if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); // Or UnauthorizedView + return View(); + } + + //public IActionResult eva_self_review_report() + //{ + // if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); // Or UnauthorizedView + // return View(); + //} + + //public IActionResult eva_self_review_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/eva_self_reviewView/eva_self_review.cshtml b/Views/eva_self_reviewView/eva_self_review.cshtml new file mode 100644 index 0000000..bec2a5b --- /dev/null +++ b/Views/eva_self_reviewView/eva_self_review.cshtml @@ -0,0 +1,72 @@ +@using Microsoft.Extensions.Configuration +@inject IConfiguration Configuration +@{ + ViewData["Title"] = "eva_self_review"; +} + + +
+
+
+ @Configuration["SiteInformation:modulename"] +
+
+
+ +
+
+ +
+
แบบแจ้งเตือนผลการเลื่อนเงินเดือน
+
+
+ + + + + +
+ + +
+ +
+ + +
+ +
+ +
+ +
+
+ + + + + + + + + + + +
เครื่องมือ
+
+ +@section FooterPlaceHolder{ + + +} + diff --git a/tb320eva.csproj b/tb320eva.csproj index 8a727a6..5d602e9 100644 --- a/tb320eva.csproj +++ b/tb320eva.csproj @@ -71,9 +71,11 @@ + + Always diff --git a/tb320eva.xml b/tb320eva.xml index 210beaa..22de658 100644 --- a/tb320eva.xml +++ b/tb320eva.xml @@ -3446,6 +3446,64 @@ If the model is invalid Error Occurred + + + Default constructure for dependency injection + + + + + + + + Get specific item by id + + + + Return Get specific item by id + Returns the item + Error Occurred + + + + Get Blank Item + + + + Return a blank item + Returns the item + Error Occurred + + + + Get list items by adjust_postponement_id + + + + Return list of items by specifced keyword + Returns the item + Error Occurred + + + + Get list items by search + + + + Return list of items by specifced keyword + Returns the item + Error Occurred + + + + Download Report + + + + Return list of items by specifced keyword + Returns the item + Error Occurred + Default constructure for dependency injection @@ -4151,6 +4209,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 new file mode 100644 index 0000000..c70de4d --- /dev/null +++ b/wwwroot/js/eva_self_review/eva_self_review.js @@ -0,0 +1,235 @@ +var eva_self_review_editMode = "CREATE"; +var eva_self_review_API = "/api/eva_self_review/"; + +//================= Search Customizaiton ========================================= + +function eva_self_review_GetSearchParameter() { + var eva_self_reviewSearchObject = new Object(); + eva_self_reviewSearchObject.adjust_postponement_id = $("#s_eva_self_review_adjust_postponement_id").val(); + eva_self_reviewSearchObject.adjust_postponement_quota_id = $("#s_eva_self_review_adjust_postponement_quota_id").val(); + eva_self_reviewSearchObject.employee_id = $("#s_eva_self_review_employee_id").val(); + eva_self_reviewSearchObject.eva_year = $("#s_eva_self_review_eva_year").val(); + eva_self_reviewSearchObject.eva_no = $("#s_eva_self_review_eva_no").val(); + + return eva_self_reviewSearchObject; +} + +function eva_self_review_FeedDataToSearchForm(data) { + $("#s_eva_self_review_adjust_postponement_id").val(data.adjust_postponement_id); + $("#s_eva_self_review_adjust_postponement_quota_id").val(data.adjust_postponement_quota_id); + $("#s_eva_self_review_employee_id").val(data.employee_id); + DropDownClearFormAndFeedWithData($("#s_eva_self_review_eva_year"), data, "id", "external_name", "item_eva_year", data.eva_year); + DropDownClearFormAndFeedWithData($("#s_eva_self_review_eva_no"), data, "id", "external_name", "item_eva_no", data.eva_no); + console.log(data); +} + +//================= Form Data Customizaiton ========================================= + +function eva_self_review_FeedDataToForm(data) { + $("#eva_self_review_id").val(data.id); + $("#eva_self_review_adjust_postponement_id").val(data.adjust_postponement_id); + $("#eva_self_review_adjust_postponement_quota_id").val(data.adjust_postponement_quota_id); + $("#eva_self_review_employee_id").val(data.employee_id); + DropDownClearFormAndFeedWithData($("#eva_self_review_eva_year"), data, "id", "external_name", "item_eva_year", data.eva_year); + DropDownClearFormAndFeedWithData($("#eva_self_review_eva_no"), data, "id", "external_name", "item_eva_no", data.eva_no); + +} + +function eva_self_review_GetFromForm() { + var eva_self_reviewObject = new Object(); + eva_self_reviewObject.id = $("#eva_self_review_id").val(); + eva_self_reviewObject.adjust_postponement_id = $("#eva_self_review_adjust_postponement_id").val(); + eva_self_reviewObject.adjust_postponement_quota_id = $("#eva_self_review_adjust_postponement_quota_id").val(); + eva_self_reviewObject.employee_id = $("#eva_self_review_employee_id").val(); + eva_self_reviewObject.eva_year = $("#eva_self_review_eva_year").val(); + eva_self_reviewObject.eva_no = $("#eva_self_review_eva_no").val(); + + + return eva_self_reviewObject; +} + +function eva_self_review_InitialForm(s) { + var successFunc = function (result) { + eva_self_review_FeedDataToForm(result); + eva_self_review_FeedDataToSearchForm(result); + if (s) { + // Incase model popup + $("#eva_self_reviewModel").modal("show"); + } + endLoad(); + }; + startLoad(); + AjaxGetRequest(apisite + eva_self_review_API + "GetBlankItem", successFunc, AlertDanger); +} + +//================= Form Mode Setup and Flow ========================================= + +function eva_self_review_GoCreate() { + // Incase model popup + eva_self_review_SetCreateForm(true); + + // Incase open new page + //window_open(appsite + "/eva_self_reviewView/eva_self_review_d"); +} + +function eva_self_review_GoEdit(a) { + // Incase model popup + //eva_self_review_SetEditForm(a); + + // Incase open new page + //window_open(appsite + "/eva_self_reviewView/eva_self_review_d?id=" + a); + + alert(a); +} + +function eva_self_review_SetEditForm(a) { + var successFunc = function (result) { + eva_self_review_editMode = "UPDATE"; + eva_self_review_FeedDataToForm(result); + $("#eva_self_reviewModel").modal("show"); + endLoad(); + }; + startLoad(); + AjaxGetRequest(apisite + eva_self_review_API + a, successFunc, AlertDanger); +} + +function eva_self_review_SetCreateForm(s) { + eva_self_review_editMode = "CREATE"; + eva_self_review_InitialForm(s); +} + +function eva_self_review_RefreshTable() { + // Incase model popup + eva_self_review_DoSearch(); + + // Incase open new page + //window.parent.eva_self_review_DoSearch(); +} + +//================= Update and Delete ========================================= + +var eva_self_review_customValidation = function (group) { + return ""; +}; + +function eva_self_review_PutUpdate() { + if (!ValidateForm('eva_self_review', eva_self_review_customValidation)) { + return; + } + + var data = eva_self_review_GetFromForm(); + + //Update Mode + if (eva_self_review_editMode === "UPDATE") { + var successFunc1 = function (result) { + $("#eva_self_reviewModel").modal("hide"); + AlertSuccess(result.code + " " + result.message); + eva_self_review_RefreshTable(); + endLoad(); + }; + startLoad(); + AjaxPutRequest(apisite + eva_self_review_API + data.id, data, successFunc1, AlertDanger); + } + // Create mode + else { + var successFunc2 = function (result) { + $("#eva_self_reviewModel").modal("hide"); + AlertSuccess(result.code + " " + result.message); + eva_self_review_RefreshTable(); + endLoad(); + }; + startLoad(); + AjaxPostRequest(apisite + eva_self_review_API, data, successFunc2, AlertDanger); + } +} + +function eva_self_review_GoDelete(a) { + if (confirm('คุณต้องการลบข้อมูล ใช่หรือไม่?')) { + var successFunc = function (result) { + $("#eva_self_reviewModel").modal("hide"); + AlertSuccess(result.code + " " + result.message); + eva_self_review_RefreshTable(); + endLoad(); + }; + startLoad(); + AjaxDeleteRequest(apisite + eva_self_review_API + a, null, successFunc, AlertDanger); + } +} + +//================= Data Table ========================================= + +var eva_self_reviewTableV; + +var eva_self_review_setupTable = function (result) { + tmp = '"'; + eva_self_reviewTableV = $('#eva_self_reviewTable').DataTable({ + "processing": true, + "serverSide": false, + "data": result, + //"select": { + // "style": 'multi' + //}, + "columns": [ + //{ "data": "" }, + { "data": "id" }, + { "data": "eva_year_external_linkage_external_name" }, + { "data": "eva_no_external_linkage_external_name" }, + ], + "columnDefs": [ + { + "targets": 0, //1, + "data": "id", + "render": function (data, type, row, meta) { + return " "; + } + }, + //{ + // targets: 0, + // data: "", + // defaultContent: '', + // orderable: false, + // className: 'select-checkbox' + //} + ], + "language": { + "url": appsite + "/DataTables-1.10.16/thai.json" + }, + "paging": true, + "searching": false + }); + endLoad(); +}; + +function eva_self_review_InitiateDataTable() { + startLoad(); + var p = $.param(eva_self_review_GetSearchParameter()); + AjaxGetRequest(apisite + "/api/eva_self_review/GetListBySearch?" + p, eva_self_review_setupTable, AlertDanger); +} + +function eva_self_review_DoSearch() { + var p = $.param(eva_self_review_GetSearchParameter()); + var eva_self_review_reload = function (result) { + eva_self_reviewTableV.destroy(); + eva_self_review_setupTable(result); + endLoad(); + }; + startLoad(); + AjaxGetRequest(apisite + "/api/eva_self_review/GetListBySearch?" + p, eva_self_review_reload, AlertDanger); +} + +function eva_self_review_GetSelect(f) { + var eva_self_review_selectitem = []; + $.each(eva_self_reviewTableV.rows('.selected').data(), function (key, value) { + eva_self_review_selectitem.push(value[f]); + }); + alert(eva_self_review_selectitem); +} + +//================= File Upload ========================================= + + + +//================= Multi-Selection Function ========================================= + + +