From 708c5173bb55b1a311b507a861beb98392acd658 Mon Sep 17 00:00:00 2001 From: "LAPTOP-KB8JC2K2\\acer" Date: Sun, 11 Apr 2021 20:58:48 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B8=9B=E0=B8=A3=E0=B8=B1=E0=B8=9A=E0=B9=84?= =?UTF-8?q?=E0=B8=9B=E0=B8=AB=E0=B8=A5=E0=B8=B2=E0=B8=A2=E0=B8=82=E0=B9=89?= =?UTF-8?q?=E0=B8=AD=20=E0=B8=88=E0=B8=99=E0=B8=88=E0=B8=B3=E0=B9=84?= =?UTF-8?q?=E0=B8=A1=E0=B9=88=E0=B9=84=E0=B8=94=E0=B9=89=E0=B9=81=E0=B8=A5?= =?UTF-8?q?=E0=B9=89=E0=B8=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eva_idp_plan_reviewerControllers.cs | 403 ++++++++++++++++++ EXCEL/eva_idp_plan@eva_idp_plan_reviewer.xlsx | Bin 0 -> 10631 bytes ..._create_evaluation_detail_statusService.cs | 24 ++ .../Ieva_idp_plan_reviewerService.cs | 32 ++ .../eva_idp_plan_reviewerInputModel.cs | 32 ++ ...eva_idp_plan_reviewerReportRequestModel.cs | 21 + .../eva_idp_plan_reviewerSearchModel.cs | 23 + .../eva_idp_plan_reviewerService.cs | 300 +++++++++++++ .../eva_idp_plan_reviewerViewModel.cs | 33 ++ ...idp_plan_reviewerWithSelectionViewModel.cs | 12 + Startup.cs | 6 + ...reate_evaluation_detail_agreement_d.cshtml | 2 +- ..._create_evaluation_detail_process_d.cshtml | 86 ++++ .../eva_idp_plan_reviewer.cshtml | 121 ++++++ tb320eva.csproj | 2 + tb320eva.xml | 118 +++++ .../eva_idp_plan_reviewer.js | 229 ++++++++++ 17 files changed, 1443 insertions(+), 1 deletion(-) create mode 100644 ApiControllers/eva_idp_plan_reviewerControllers.cs create mode 100644 EXCEL/eva_idp_plan@eva_idp_plan_reviewer.xlsx create mode 100644 Models/eva_idp_plan_reviewer/Ieva_idp_plan_reviewerService.cs create mode 100644 Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerInputModel.cs create mode 100644 Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerReportRequestModel.cs create mode 100644 Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerSearchModel.cs create mode 100644 Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerService.cs create mode 100644 Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerViewModel.cs create mode 100644 Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerWithSelectionViewModel.cs create mode 100644 Views/eva_idp_plan_reviewerView/eva_idp_plan_reviewer.cshtml create mode 100644 wwwroot/js/eva_idp_plan_reviewer/eva_idp_plan_reviewer.js diff --git a/ApiControllers/eva_idp_plan_reviewerControllers.cs b/ApiControllers/eva_idp_plan_reviewerControllers.cs new file mode 100644 index 0000000..36c462e --- /dev/null +++ b/ApiControllers/eva_idp_plan_reviewerControllers.cs @@ -0,0 +1,403 @@ +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_idp_plan_reviewer")] + public class eva_idp_plan_reviewerController : BaseController + { + #region Private Variables + private ILogger _logger; + private Ieva_idp_plan_reviewerService _repository; + private IConfiguration Configuration { get; set; } + #endregion + + #region Properties + + #endregion + + /// + /// Default constructure for dependency injection + /// + /// + /// + /// + public eva_idp_plan_reviewerController(ILogger logger, Ieva_idp_plan_reviewerService 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_idp_plan_reviewerWithSelectionViewModel), 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_idp_plan_reviewerWithSelectionViewModel), 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 create_evaluation_detail_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? create_evaluation_detail_id) + { + try + { + if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); + return Ok(_repository.GetListBycreate_evaluation_detail_id(create_evaluation_detail_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_idp_plan_reviewerSearchModel 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}"); + } + } + + /// + /// Download Report + /// + /// + /// + /// Return list of items by specifced keyword + /// Returns the item + /// Error Occurred + [HttpGet("eva_idp_plan_reviewer_report")] + [ProducesResponseType(typeof(FileStreamResult), 200)] + [ProducesResponseType(400)] + [ProducesResponseType(500)] + //[ValidateAntiForgeryToken] + public IActionResult eva_idp_plan_reviewer_report(eva_idp_plan_reviewerReportRequestModel 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}"); + } + } + + /// + /// Create new item + /// + /// + /// + /// + /// Response Result Message + /// Response Result Message + /// If the model is invalid + /// Error Occurred + [HttpPost("")] + [ProducesResponseType(typeof(CommonResponseMessage), 200)] + [ProducesResponseType(400)] + [ProducesResponseType(500)] + //[ValidateAntiForgeryToken] + public IActionResult Insert([FromBody] eva_idp_plan_reviewerInputModel 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); + } + + /// + /// Update item + /// + /// + /// + /// + /// + /// Response Result Message + /// Response Result Message + /// If the model is invalid + /// Error Occurred + [HttpPut("{id}")] + [ProducesResponseType(typeof(CommonResponseMessage), 200)] + [ProducesResponseType(400)] + [ProducesResponseType(500)] + //[ValidateAntiForgeryToken] + public IActionResult Update(int id, [FromBody] eva_idp_plan_reviewerInputModel 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); + } + + /// + /// Delete item + /// + /// + /// + /// + /// Response Result Message + /// Response Result Message + /// If the model is invalid + /// Error Occurred + [HttpDelete("{id}")] + [ProducesResponseType(typeof(CommonResponseMessage), 200)] + [ProducesResponseType(400)] + [ProducesResponseType(500)] + //[ValidateAntiForgeryToken] + public IActionResult Delete(int 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); + } + + /// + /// Update multiple item + /// + /// + /// + /// + /// Response Result Message + /// Response Result Message + /// If the model is invalid + /// Error Occurred + [HttpPut("UpdateMultiple")] + [ProducesResponseType(typeof(CommonResponseMessage), 200)] + [ProducesResponseType(400)] + [ProducesResponseType(500)] + //[ValidateAntiForgeryToken] + public IActionResult UpdateMultiple([FromBody] List 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); + } + + /// + /// Refresh AutoField of all items + /// + /// + /// + /// Response Result Message + /// Response Result Message + /// If the model is invalid + /// Error Occurred + [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); + } + + + + } +} diff --git a/EXCEL/eva_idp_plan@eva_idp_plan_reviewer.xlsx b/EXCEL/eva_idp_plan@eva_idp_plan_reviewer.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1d0fdddf1627005dc57456806ca89af38c342e0a GIT binary patch literal 10631 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 b^-ceX+iHr4FdqZ}Fkm}9%#9W4e_j0_FxzCG literal 0 HcmV?d00001 diff --git a/Models/eva_create_evaluation_detail_status/eva_create_evaluation_detail_statusService.cs b/Models/eva_create_evaluation_detail_status/eva_create_evaluation_detail_statusService.cs index 492954d..70ddb8f 100644 --- a/Models/eva_create_evaluation_detail_status/eva_create_evaluation_detail_statusService.cs +++ b/Models/eva_create_evaluation_detail_status/eva_create_evaluation_detail_statusService.cs @@ -192,6 +192,10 @@ namespace TodoAPI2.Models string noti_url = "/eva/eva_create_evaluation_detail_processView/eva_create_evaluation_detail_process_d2?id=" + existingEntity.id.ToString(); bool need_noti = true; + string noti_message2 = ""; + string noti_url2 = ""; + int? noti_to_employee_id2 = null; + if (model.status_mode == "nextA") { existingEntity.status_self_a_click_date = MyHelper.RemoveTimeFromDate(DateTime.Now); @@ -227,6 +231,10 @@ namespace TodoAPI2.Models noti_to_employee_id = existingEntity.chief; noti_message = "กรุณาตรวจสอบแบบประเมินของ {0}"; noti_url = "/eva/eva_create_evaluation_detail_processView/eva_create_evaluation_detail_process_d?id=" + existingEntity.id.ToString(); + + noti_to_employee_id2 = owner_eva_employee_id; + noti_message2 = "แบบประเมินของ {0} ได้ถูกส่งต่อไปยังขั้นตอนถัดไปแล้ว"; + noti_url2 = "/eva/eva_create_evaluation_detail_processView/eva_create_evaluation_detail_process_d?id=" + existingEntity.id.ToString(); } else if (model.status_mode == "next1") { @@ -252,6 +260,10 @@ namespace TodoAPI2.Models { existingEntity.status_supervisor_click_date = MyHelper.RemoveTimeFromDate(DateTime.Now); noti_to_employee_id = current_eva.supervisor1_id; + + noti_to_employee_id2 = owner_eva_employee_id; + noti_message2 = "แบบประเมินของ {0} ได้ถูกส่งต่อไปยังขั้นตอนถัดไปแล้ว"; + noti_url2 = "/eva/eva_create_evaluation_detail_processView/eva_create_evaluation_detail_process_d?id=" + existingEntity.id.ToString(); } else if (model.status_mode == "back2") { @@ -265,6 +277,10 @@ namespace TodoAPI2.Models { existingEntity.status_supervisor1A_click_date = MyHelper.RemoveTimeFromDate(DateTime.Now); noti_to_employee_id = current_eva.supervisor2_id; + + noti_to_employee_id2 = owner_eva_employee_id; + noti_message2 = "แบบประเมินของ {0} ได้ถูกส่งต่อไปยังขั้นตอนถัดไปแล้ว"; + noti_url2 = "/eva/eva_create_evaluation_detail_processView/eva_create_evaluation_detail_process_d?id=" + existingEntity.id.ToString(); } else if (model.status_mode == "back3") { @@ -277,6 +293,10 @@ namespace TodoAPI2.Models else if (model.status_mode == "next4") { existingEntity.status_supervisor2A_click_date = MyHelper.RemoveTimeFromDate(DateTime.Now); + + noti_to_employee_id2 = owner_eva_employee_id; + noti_message2 = "แบบประเมินของ {0} ได้รับการประเมินเรียบร้อยแล้ว"; + noti_url2 = "/eva/eva_create_evaluation_detail_processView/eva_create_evaluation_detail_process_d?id=" + existingEntity.id.ToString(); } else if (model.status_mode == "back4") { @@ -291,6 +311,10 @@ namespace TodoAPI2.Models { SendNotification(noti_to_employee_id, owner_eva_employee_id, existingEntity.id, noti_message, noti_url); } + if (noti_to_employee_id2.HasValue) + { + SendNotification(noti_to_employee_id2, owner_eva_employee_id, existingEntity.id, noti_message2, noti_url2); + } var updated = _repository.Update(id, existingEntity); return Get(updated.id); diff --git a/Models/eva_idp_plan_reviewer/Ieva_idp_plan_reviewerService.cs b/Models/eva_idp_plan_reviewer/Ieva_idp_plan_reviewerService.cs new file mode 100644 index 0000000..837a973 --- /dev/null +++ b/Models/eva_idp_plan_reviewer/Ieva_idp_plan_reviewerService.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_idp_plan_reviewerService : IBaseService2 + { + new eva_idp_plan_reviewerViewModel Insert(eva_idp_plan_reviewerInputModel model, bool is_force_save); + new eva_idp_plan_reviewerViewModel Update(int id, eva_idp_plan_reviewerInputModel model, bool is_force_save); + List GetListBycreate_evaluation_detail_id(int? create_evaluation_detail_id); + List GetListBySearch(eva_idp_plan_reviewerSearchModel model); + + string UpdateMultiple(List model, bool is_force_save); + eva_idp_plan_reviewerWithSelectionViewModel GetWithSelection(int id); + eva_idp_plan_reviewerWithSelectionViewModel GetBlankItem(); + + void RefreshAutoFieldOfAllData(); + eva_idp_planEntity GetEntity(int id); + DataContext GetContext(); + + + + } +} + diff --git a/Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerInputModel.cs b/Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerInputModel.cs new file mode 100644 index 0000000..e1dacd2 --- /dev/null +++ b/Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerInputModel.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_idp_plan_reviewerInputModel + { + + public int? id { get; set; } + + public int? create_evaluation_detail_id { get; set; } + + public string develop { get; set; } + + public string development_method { get; set; } + + public DateTime? start_date { get; set; } + + public DateTime? end_date { get; set; } + + public string active_mode { get; set; } + } +} + diff --git a/Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerReportRequestModel.cs b/Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerReportRequestModel.cs new file mode 100644 index 0000000..6f169ff --- /dev/null +++ b/Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerReportRequestModel.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_idp_plan_reviewerReportRequestModel : eva_idp_plan_reviewerSearchModel + { + public string filetype { get; set; } + + public string contentType { get { return MyHelper.GetContentType(filetype); } } + } +} + diff --git a/Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerSearchModel.cs b/Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerSearchModel.cs new file mode 100644 index 0000000..cde384d --- /dev/null +++ b/Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerSearchModel.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 eva_idp_plan_reviewerSearchModel + { + + public int id { get; set; } + + public int? create_evaluation_detail_id { get; set; } + + } +} + diff --git a/Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerService.cs b/Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerService.cs new file mode 100644 index 0000000..3d1bd01 --- /dev/null +++ b/Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerService.cs @@ -0,0 +1,300 @@ +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_idp_plan_reviewerService : Ieva_idp_plan_reviewerService + { + private IBaseRepository2 _repository; + private IMyDatabase db; + private Iexternal_linkageService ext; + + public eva_idp_plan_reviewerService(IBaseRepository2 repository, IMyDatabase mydb, Iexternal_linkageService inext) + { + _repository = repository; + db = mydb; + ext = inext; + } + + #region Private Functions + private eva_idp_planEntity GetEntity(eva_idp_plan_reviewerInputModel model) + { + return Mapper.Map(model); + } + private List GetEntityList(List models) + { + return Mapper.Map>(models); + } + private eva_idp_plan_reviewerViewModel GetDto(eva_idp_planEntity entity) + { + return Mapper.Map(entity); + } + private List GetDtoList(List entities) + { + return Mapper.Map>(entities); + } + + #endregion + + #region Public Functions + #region Query Functions + + public eva_idp_plan_reviewerViewModel Get(int id) + { + var entity = _repository.Get(id); + + return GetDto(entity); + } + + public eva_idp_planEntity GetEntity(int id) + { + var entity = _repository.Get(id); + + return entity; + } + + public DataContext GetContext() + { + return _repository.Context; + } + + public eva_idp_plan_reviewerWithSelectionViewModel GetWithSelection(int id) + { + var entity = _repository.Get(id); + var i = Mapper.Map(entity); + + + return i; + } + public eva_idp_plan_reviewerWithSelectionViewModel GetBlankItem() + { + var i = new eva_idp_plan_reviewerWithSelectionViewModel(); + + + return i; + } + + public List GetListBycreate_evaluation_detail_id(int? create_evaluation_detail_id) + { + var model = new eva_idp_plan_reviewerSearchModel(); + model.create_evaluation_detail_id = create_evaluation_detail_id; + return GetListBySearch(model); + } + + public List GetListBySearch(eva_idp_plan_reviewerSearchModel model) + { + var data = ( + from m_eva_idp_plan_reviewer in _repository.Context.eva_idp_plan + + + where + 1 == 1 + && (!model.create_evaluation_detail_id.HasValue || m_eva_idp_plan_reviewer.create_evaluation_detail_id == model.create_evaluation_detail_id) + + + orderby m_eva_idp_plan_reviewer.created descending + select new eva_idp_plan_reviewerViewModel() + { + id = m_eva_idp_plan_reviewer.id, + create_evaluation_detail_id = m_eva_idp_plan_reviewer.create_evaluation_detail_id, + develop = m_eva_idp_plan_reviewer.develop, + development_method = m_eva_idp_plan_reviewer.development_method, + start_date = m_eva_idp_plan_reviewer.start_date, + end_date = m_eva_idp_plan_reviewer.end_date, + + + isActive = m_eva_idp_plan_reviewer.isActive, + Created = m_eva_idp_plan_reviewer.created, + Updated = m_eva_idp_plan_reviewer.updated + } + ).Take(1000).ToList(); + + return data; + } + + #endregion + + #region Manipulation Functions + + + public int GetNewPrimaryKey() + { + int? newkey = 0; + + var x = (from i in _repository.Context.eva_idp_plan + orderby i.id descending + select i).Take(1).ToList(); + + if(x.Count > 0) + { + newkey = x[0].id + 1; + } + + return newkey.Value; + } + + + public eva_idp_plan_reviewerViewModel Insert(eva_idp_plan_reviewerInputModel model, bool is_force_save) + { + 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); + } + } + + public eva_idp_plan_reviewerViewModel Update(int id, eva_idp_plan_reviewerInputModel model, bool is_force_save) + { + var existingEntity = _repository.Get(id); + if (existingEntity != null) + { + existingEntity.create_evaluation_detail_id = model.create_evaluation_detail_id; + existingEntity.develop = model.develop; + existingEntity.development_method = model.development_method; + existingEntity.start_date = model.start_date; + existingEntity.end_date = model.end_date; + + 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"); + } + + public string UpdateMultiple(List model, bool is_force_save) + { + 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.create_evaluation_detail_id = i.create_evaluation_detail_id; + existingEntity.develop = i.develop; + existingEntity.development_method = i.development_method; + existingEntity.start_date = i.start_date; + existingEntity.end_date = i.end_date; + + 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(); + } + + public eva_idp_plan_reviewerViewModel SetAsActive(int id) + { + var updated = _repository.SetAsActive(id); + + return Get(updated.id); + } + public eva_idp_plan_reviewerViewModel 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_idp_plan + select i; + foreach (var item in all_items) + { + item.SetAutoField(_repository.Context); + } + _repository.Context.SaveChanges(); + } + + private Dictionary GetLookupForLog() + { + var i = new Dictionary(); + + + i.Add("create_evaluation_detail_id", "create_evaluation_detail_id"); + i.Add("develop", "ความรู้/ทักษะ/สมรรถนะที่ต้องได้รับการพัฒนา"); + i.Add("development_method", "วิธีการพัฒนา"); + i.Add("start_date", "ช่วงเวลาเริ่มต้นพัฒนา"); + i.Add("txt_start_date", "ช่วงเวลาเริ่มต้นพัฒนา"); + i.Add("end_date", "ช่วงเวลาสิ้นสุดพัฒนา"); + i.Add("txt_end_date", "ช่วงเวลาสิ้นสุดพัฒนา"); + + return i; + } + + #endregion + + #region Match Item + + #endregion + + #endregion + } +} \ No newline at end of file diff --git a/Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerViewModel.cs b/Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerViewModel.cs new file mode 100644 index 0000000..61d66cb --- /dev/null +++ b/Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerViewModel.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_idp_plan_reviewerViewModel : BaseViewModel2 + { + + public int? create_evaluation_detail_id { get; set; } + + public string develop { get; set; } + + public string development_method { get; set; } + + public DateTime? start_date { get; set; } + + public string txt_start_date { get { return MyHelper.GetDateStringForReport(this.start_date); } } + + public DateTime? end_date { get; set; } + + public string txt_end_date { get { return MyHelper.GetDateStringForReport(this.end_date); } } + + + } +} \ No newline at end of file diff --git a/Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerWithSelectionViewModel.cs b/Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerWithSelectionViewModel.cs new file mode 100644 index 0000000..7958c97 --- /dev/null +++ b/Models/eva_idp_plan_reviewer/eva_idp_plan_reviewerWithSelectionViewModel.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace TodoAPI2.Models +{ + public class eva_idp_plan_reviewerWithSelectionViewModel: eva_idp_plan_reviewerViewModel + { + + } +} \ No newline at end of file diff --git a/Startup.cs b/Startup.cs index 98a9daa..d4ee490 100644 --- a/Startup.cs +++ b/Startup.cs @@ -330,6 +330,8 @@ namespace Test01 services.AddScoped, BaseRepository2>(); services.AddScoped(); + services.AddScoped(); + #endregion services.TryAddSingleton(); @@ -617,6 +619,10 @@ namespace Test01 cfg.CreateMap(); cfg.CreateMap(); + cfg.CreateMap(); + cfg.CreateMap(); + cfg.CreateMap(); + }); #endregion diff --git a/Views/eva_create_evaluation_detail_agreementView/eva_create_evaluation_detail_agreement_d.cshtml b/Views/eva_create_evaluation_detail_agreementView/eva_create_evaluation_detail_agreement_d.cshtml index 8f02eea..25e48c7 100644 --- a/Views/eva_create_evaluation_detail_agreementView/eva_create_evaluation_detail_agreement_d.cshtml +++ b/Views/eva_create_evaluation_detail_agreementView/eva_create_evaluation_detail_agreement_d.cshtml @@ -278,7 +278,7 @@
- +
diff --git a/Views/eva_create_evaluation_detail_processView/eva_create_evaluation_detail_process_d.cshtml b/Views/eva_create_evaluation_detail_processView/eva_create_evaluation_detail_process_d.cshtml index 2b13d02..b07a43f 100644 --- a/Views/eva_create_evaluation_detail_processView/eva_create_evaluation_detail_process_d.cshtml +++ b/Views/eva_create_evaluation_detail_processView/eva_create_evaluation_detail_process_d.cshtml @@ -5,6 +5,56 @@ Layout = "_LayoutDirect"; } + +