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 0000000..1d0fddd Binary files /dev/null and b/EXCEL/eva_idp_plan@eva_idp_plan_reviewer.xlsx differ 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"; } + +