From 8ac63e8ec6762c310e15a7c04bb22810b891de4a Mon Sep 17 00:00:00 2001 From: Nakorn Rientrakrunchai Date: Mon, 7 Dec 2020 15:52:20 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B8=97=E0=B8=B3=E0=B8=AB=E0=B8=99=E0=B9=89?= =?UTF-8?q?=E0=B8=B2=E0=B8=88=E0=B8=AD=E0=B8=9E=E0=B8=B4=E0=B9=80=E0=B8=A8?= =?UTF-8?q?=E0=B8=A9=20=E0=B8=99=E0=B8=B3=E0=B9=80=E0=B8=82=E0=B9=89?= =?UTF-8?q?=E0=B8=B2=E0=B8=82=E0=B9=89=E0=B8=AD=E0=B8=A1=E0=B8=B9=E0=B8=A5?= =?UTF-8?q?=E0=B9=80=E0=B8=87=E0=B8=B4=E0=B8=99=E0=B9=80=E0=B8=94=E0=B8=B7?= =?UTF-8?q?=E0=B8=AD=E0=B8=99=E0=B8=A2=E0=B9=89=E0=B8=AD=E0=B8=99=E0=B8=AB?= =?UTF-8?q?=E0=B8=A5=E0=B8=B1=E0=B8=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ostponement_detail_migrationControllers.cs | 403 ++++++++++ ...djust_postponement_migrationControllers.cs | 403 ++++++++++ EXCEL/eva_adjust_postponement.xlsx | Bin 11028 -> 11145 bytes ...ent@eva_adjust_postponement_migration.xlsx | Bin 0 -> 11145 bytes EXCEL/eva_adjust_postponement_detail.xlsx | Bin 11156 -> 11302 bytes ..._adjust_postponement_detail_migration.xlsx | Bin 0 -> 11326 bytes ...135022_AddSalaryMigrationField.Designer.cs | 699 +++++++++++++++++ .../25631206135022_AddSalaryMigrationField.cs | 43 ++ ...25631207070013_AddMigratedDate.Designer.cs | 701 ++++++++++++++++++ Migrations/25631207070013_AddMigratedDate.cs | 23 + Migrations/DataContextModelSnapshot.cs | 11 + .../eva_adjust_postponementEntity.cs | 13 + .../eva_adjust_postponementService.cs | 65 +- .../Ieva_adjust_postponement_detailService.cs | 2 +- .../eva_adjust_postponement_detailEntity.cs | 4 + ...st_postponement_detail_migrationService.cs | 32 + ...postponement_detail_migrationInputModel.cs | 52 ++ ...ment_detail_migrationReportRequestModel.cs | 21 + ...ostponement_detail_migrationSearchModel.cs | 25 + ...st_postponement_detail_migrationService.cs | 337 +++++++++ ..._postponement_detail_migrationViewModel.cs | 52 ++ ..._detail_migrationWithSelectionViewModel.cs | 13 + ...djust_postponement_detail_normalService.cs | 7 + ...va_adjust_postponement_migrationService.cs | 32 + ...adjust_postponement_migrationInputModel.cs | 46 ++ ...ostponement_migrationReportRequestModel.cs | 21 + ...djust_postponement_migrationSearchModel.cs | 25 + ...va_adjust_postponement_migrationService.cs | 487 ++++++++++++ ..._adjust_postponement_migrationViewModel.cs | 57 ++ ...onement_migrationWithSelectionViewModel.cs | 14 + Properties/launchSettings.json | 4 +- Startup.cs | 12 + ...t_postponement_migrationViewControllers.cs | 56 ++ ...djust_postponement_detail_migration.cshtml | 187 +++++ .../eva_adjust_postponement_migration.cshtml | 171 +++++ ...eva_adjust_postponement_migration_d.cshtml | 290 ++++++++ appsettings.Development.json | 4 +- appsettings.Production.json | 4 +- appsettings.Staging.json | 4 +- tb320eva.csproj | 6 + tb320eva.xml | 244 ++++++ ...va_adjust_postponement_detail_migration.js | 256 +++++++ .../eva_adjust_postponement_migration.js | 255 +++++++ .../eva_adjust_postponement_migration_d.js | 126 ++++ 44 files changed, 5165 insertions(+), 42 deletions(-) create mode 100644 ApiControllers/eva_adjust_postponement_detail_migrationControllers.cs create mode 100644 ApiControllers/eva_adjust_postponement_migrationControllers.cs create mode 100644 EXCEL/eva_adjust_postponement@eva_adjust_postponement_migration.xlsx create mode 100644 EXCEL/eva_adjust_postponement_detail@eva_adjust_postponement_detail_migration.xlsx create mode 100644 Migrations/25631206135022_AddSalaryMigrationField.Designer.cs create mode 100644 Migrations/25631206135022_AddSalaryMigrationField.cs create mode 100644 Migrations/25631207070013_AddMigratedDate.Designer.cs create mode 100644 Migrations/25631207070013_AddMigratedDate.cs create mode 100644 Models/eva_adjust_postponement_detail_migration/Ieva_adjust_postponement_detail_migrationService.cs create mode 100644 Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationInputModel.cs create mode 100644 Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationReportRequestModel.cs create mode 100644 Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationSearchModel.cs create mode 100644 Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationService.cs create mode 100644 Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationViewModel.cs create mode 100644 Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationWithSelectionViewModel.cs create mode 100644 Models/eva_adjust_postponement_migration/Ieva_adjust_postponement_migrationService.cs create mode 100644 Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationInputModel.cs create mode 100644 Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationReportRequestModel.cs create mode 100644 Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationSearchModel.cs create mode 100644 Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationService.cs create mode 100644 Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationViewModel.cs create mode 100644 Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationWithSelectionViewModel.cs create mode 100644 ViewControllers/eva_adjust_postponement_migrationViewControllers.cs create mode 100644 Views/eva_adjust_postponement_detail_migrationView/eva_adjust_postponement_detail_migration.cshtml create mode 100644 Views/eva_adjust_postponement_migrationView/eva_adjust_postponement_migration.cshtml create mode 100644 Views/eva_adjust_postponement_migrationView/eva_adjust_postponement_migration_d.cshtml create mode 100644 wwwroot/js/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migration.js create mode 100644 wwwroot/js/eva_adjust_postponement_migration/eva_adjust_postponement_migration.js create mode 100644 wwwroot/js/eva_adjust_postponement_migration/eva_adjust_postponement_migration_d.js diff --git a/ApiControllers/eva_adjust_postponement_detail_migrationControllers.cs b/ApiControllers/eva_adjust_postponement_detail_migrationControllers.cs new file mode 100644 index 0000000..15c817a --- /dev/null +++ b/ApiControllers/eva_adjust_postponement_detail_migrationControllers.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_adjust_postponement_detail_migration")] + public class eva_adjust_postponement_detail_migrationController : BaseController + { + #region Private Variables + private ILogger _logger; + private Ieva_adjust_postponement_detail_migrationService _repository; + private IConfiguration Configuration { get; set; } + #endregion + + #region Properties + + #endregion + + /// + /// Default constructure for dependency injection + /// + /// + /// + /// + public eva_adjust_postponement_detail_migrationController(ILogger logger, Ieva_adjust_postponement_detail_migrationService 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_adjust_postponement_detail_migrationWithSelectionViewModel), 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_adjust_postponement_detail_migrationWithSelectionViewModel), 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_adjust_postponement_detail_migrationSearchModel 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_adjust_postponement_detail_migration_report")] + [ProducesResponseType(typeof(FileStreamResult), 200)] + [ProducesResponseType(400)] + [ProducesResponseType(500)] + //[ValidateAntiForgeryToken] + public IActionResult eva_adjust_postponement_detail_migration_report(eva_adjust_postponement_detail_migrationReportRequestModel 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_adjust_postponement_detail_migrationInputModel model) + { + if (ModelState.IsValid) + { + try + { + if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); + var result = _repository.Insert(model); + 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_adjust_postponement_detail_migrationInputModel model) + { + if (ModelState.IsValid) + { + try + { + if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); + var result = _repository.Update(id, model); + 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); + 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/ApiControllers/eva_adjust_postponement_migrationControllers.cs b/ApiControllers/eva_adjust_postponement_migrationControllers.cs new file mode 100644 index 0000000..be6ca8d --- /dev/null +++ b/ApiControllers/eva_adjust_postponement_migrationControllers.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_adjust_postponement_migration")] + public class eva_adjust_postponement_migrationController : BaseController + { + #region Private Variables + private ILogger _logger; + private Ieva_adjust_postponement_migrationService _repository; + private IConfiguration Configuration { get; set; } + #endregion + + #region Properties + + #endregion + + /// + /// Default constructure for dependency injection + /// + /// + /// + /// + public eva_adjust_postponement_migrationController(ILogger logger, Ieva_adjust_postponement_migrationService 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_adjust_postponement_migrationWithSelectionViewModel), 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_adjust_postponement_migrationWithSelectionViewModel), 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 fiscal_year + /// + /// + /// + /// 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? fiscal_year) + { + try + { + if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); + return Ok(_repository.GetListByfiscal_year(fiscal_year)); + } + 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_adjust_postponement_migrationSearchModel 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_adjust_postponement_migration_report")] + [ProducesResponseType(typeof(FileStreamResult), 200)] + [ProducesResponseType(400)] + [ProducesResponseType(500)] + //[ValidateAntiForgeryToken] + public IActionResult eva_adjust_postponement_migration_report(eva_adjust_postponement_migrationReportRequestModel 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_adjust_postponement_migrationInputModel model) + { + if (ModelState.IsValid) + { + try + { + if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); + var result = _repository.Insert(model); + 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_adjust_postponement_migrationInputModel model) + { + if (ModelState.IsValid) + { + try + { + if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); + var result = _repository.Update(id, model); + 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); + 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_adjust_postponement.xlsx b/EXCEL/eva_adjust_postponement.xlsx index 730a2fddd87f51f47ef0343512697f153ba92374..0af7c6425a9a432d9ec937fe90701cd24785b05e 100644 GIT binary patch delta 4545 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 LKdBD*UxNPvaFl?^ delta 4452 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 F{txR8NwEL` diff --git a/EXCEL/eva_adjust_postponement@eva_adjust_postponement_migration.xlsx b/EXCEL/eva_adjust_postponement@eva_adjust_postponement_migration.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..0af7c6425a9a432d9ec937fe90701cd24785b05e GIT binary patch literal 11145 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 F{{gs6$O8ZX literal 0 HcmV?d00001 diff --git a/Migrations/25631206135022_AddSalaryMigrationField.Designer.cs b/Migrations/25631206135022_AddSalaryMigrationField.Designer.cs new file mode 100644 index 0000000..828e127 --- /dev/null +++ b/Migrations/25631206135022_AddSalaryMigrationField.Designer.cs @@ -0,0 +1,699 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using TTSW.EF; + +namespace tb320eva.Migrations +{ + [DbContext(typeof(DataContext))] + [Migration("25631206135022_AddSalaryMigrationField")] + partial class AddSalaryMigrationField + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn) + .HasAnnotation("ProductVersion", "2.2.4-servicing-10062") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + modelBuilder.Entity("TodoAPI2.Models.eva_adjust_postponementEntity", b => + { + b.Property("id"); + + b.Property("command_no") + .HasMaxLength(100); + + b.Property("create_evaluation_id"); + + b.Property("created"); + + b.Property("fiscal_year"); + + b.Property("imported_file") + .HasMaxLength(1000); + + b.Property("isActive"); + + b.Property("limit"); + + b.Property("limit_frame"); + + b.Property("limit_frame_quota"); + + b.Property("limit_quota"); + + b.Property("managed_by"); + + b.Property("percentage"); + + b.Property("theDate"); + + b.Property("theRound"); + + b.Property("updated"); + + b.HasKey("id"); + + b.HasIndex("create_evaluation_id"); + + b.ToTable("eva_adjust_postponement"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_adjust_postponement_detailEntity", b => + { + b.Property("id"); + + b.Property("adjust_postponement_id"); + + b.Property("adjust_postponement_quota_id"); + + b.Property("cost_living"); + + b.Property("created"); + + b.Property("employee_id"); + + b.Property("isActive"); + + b.Property("level_this_time") + .HasMaxLength(1000); + + b.Property("middle"); + + b.Property("new_cost_living"); + + b.Property("new_sarary"); + + b.Property("new_sarary_with_quota"); + + b.Property("position_this_time") + .HasMaxLength(1000); + + b.Property("promoted_percentage"); + + b.Property("receive_quota"); + + b.Property("remark") + .HasMaxLength(1000); + + b.Property("sarary"); + + b.Property("total_promote"); + + b.Property("updated"); + + b.HasKey("id"); + + b.HasIndex("adjust_postponement_id"); + + b.HasIndex("adjust_postponement_quota_id"); + + b.ToTable("eva_adjust_postponement_detail"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_create_evaluationEntity", b => + { + b.Property("id"); + + b.Property("created"); + + b.Property("employee_id"); + + b.Property("evaluation_group_id"); + + b.Property("isActive"); + + b.Property("performance_plan_id"); + + b.Property("score1"); + + b.Property("score2"); + + b.Property("supervisor1_id"); + + b.Property("supervisor2_id"); + + b.Property("updated"); + + b.HasKey("id"); + + b.HasIndex("evaluation_group_id"); + + b.HasIndex("performance_plan_id"); + + b.ToTable("eva_create_evaluation"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_create_evaluation_detailEntity", b => + { + b.Property("id"); + + b.Property("Final_summary_chief"); + + b.Property("Final_summary_competency_chief"); + + b.Property("Final_summary_competency_supervisor"); + + b.Property("Final_summary_competency_supervisor1A"); + + b.Property("Final_summary_competency_supervisor2A"); + + b.Property("Final_summary_supervisor"); + + b.Property("Final_summary_supervisor1A"); + + b.Property("Final_summary_supervisor2A"); + + b.Property("achievement_chief"); + + b.Property("achievement_supervisor"); + + b.Property("achievement_supervisor1A"); + + b.Property("achievement_supervisor2A"); + + b.Property("chief"); + + b.Property("competency_chief"); + + b.Property("competency_supervisor"); + + b.Property("competency_supervisor1A"); + + b.Property("competency_supervisor2A"); + + b.Property("create_evaluation_id"); + + b.Property("created"); + + b.Property("employee_id"); + + b.Property("isActive"); + + b.Property("level_score_chief") + .HasMaxLength(255); + + b.Property("level_score_supervisor") + .HasMaxLength(255); + + b.Property("level_score_supervisor1A") + .HasMaxLength(255); + + b.Property("level_score_supervisor2A") + .HasMaxLength(255); + + b.Property("score_chief"); + + b.Property("score_supervisor"); + + b.Property("score_supervisor1A"); + + b.Property("score_supervisor2A"); + + b.Property("status_chief") + .HasMaxLength(1); + + b.Property("status_chief_click_date"); + + b.Property("status_self") + .HasMaxLength(1); + + b.Property("status_self_click_date"); + + b.Property("status_supervisor") + .HasMaxLength(1); + + b.Property("status_supervisor1A") + .HasMaxLength(1); + + b.Property("status_supervisor1A_click_date"); + + b.Property("status_supervisor2A") + .HasMaxLength(1); + + b.Property("status_supervisor2A_click_date"); + + b.Property("status_supervisor_click_date"); + + b.Property("supervisor1"); + + b.Property("supervisor1A"); + + b.Property("supervisor1A_date"); + + b.Property("supervisor1A_remark") + .HasMaxLength(1000); + + b.Property("supervisor1A_result") + .HasMaxLength(1); + + b.Property("supervisor1_date"); + + b.Property("supervisor1_remark") + .HasMaxLength(1000); + + b.Property("supervisor1_result") + .HasMaxLength(1); + + b.Property("supervisor2"); + + b.Property("supervisor2A"); + + b.Property("supervisor2A_date"); + + b.Property("supervisor2A_remark") + .HasMaxLength(1000); + + b.Property("supervisor2A_result") + .HasMaxLength(1); + + b.Property("supervisor2_date"); + + b.Property("supervisor2_remark") + .HasMaxLength(1000); + + b.Property("supervisor2_result") + .HasMaxLength(1); + + b.Property("total_summary_chief"); + + b.Property("total_summary_competency_chief"); + + b.Property("total_summary_competency_supervisor"); + + b.Property("total_summary_competency_supervisor1A"); + + b.Property("total_summary_competency_supervisor2A"); + + b.Property("total_summary_supervisor"); + + b.Property("total_summary_supervisor1A"); + + b.Property("total_summary_supervisor2A"); + + b.Property("updated"); + + b.HasKey("id"); + + b.ToTable("eva_create_evaluation_detail"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_evaluation_achievementEntity", b => + { + b.Property("id"); + + b.Property("achievement") + .HasMaxLength(1000); + + b.Property("create_evaluation_detail_id"); + + b.Property("created"); + + b.Property("isActive"); + + b.Property("score"); + + b.Property("score2"); + + b.Property("score3"); + + b.Property("score4"); + + b.Property("sumary"); + + b.Property("sumary2"); + + b.Property("sumary3"); + + b.Property("sumary4"); + + b.Property("target_score1") + .HasMaxLength(255); + + b.Property("target_score2") + .HasMaxLength(255); + + b.Property("target_score3") + .HasMaxLength(255); + + b.Property("target_score4") + .HasMaxLength(255); + + b.Property("target_score5") + .HasMaxLength(255); + + b.Property("thefile") + .HasMaxLength(1000); + + b.Property("updated"); + + b.Property("weight"); + + b.HasKey("id"); + + b.HasIndex("create_evaluation_detail_id"); + + b.ToTable("eva_evaluation_achievement"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_evaluation_behaviorEntity", b => + { + b.Property("id"); + + b.Property("behavior") + .HasMaxLength(1000); + + b.Property("create_evaluation_detail_id"); + + b.Property("created"); + + b.Property("isActive"); + + b.Property("score"); + + b.Property("score2"); + + b.Property("score3"); + + b.Property("score4"); + + b.Property("sumary"); + + b.Property("sumary2"); + + b.Property("sumary3"); + + b.Property("sumary4"); + + b.Property("target_score1") + .HasMaxLength(255); + + b.Property("target_score2") + .HasMaxLength(255); + + b.Property("target_score3") + .HasMaxLength(255); + + b.Property("target_score4") + .HasMaxLength(255); + + b.Property("target_score5") + .HasMaxLength(255); + + b.Property("updated"); + + b.Property("weight"); + + b.HasKey("id"); + + b.HasIndex("create_evaluation_detail_id"); + + b.ToTable("eva_evaluation_behavior"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_evaluation_groupEntity", b => + { + b.Property("id") + .ValueGeneratedOnAdd(); + + b.Property("code") + .HasMaxLength(255); + + b.Property("created"); + + b.Property("isActive"); + + b.Property("thegroup") + .HasMaxLength(255); + + b.Property("updated"); + + b.HasKey("id"); + + b.ToTable("eva_evaluation_group"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_evaluation_group_detailEntity", b => + { + b.Property("id") + .ValueGeneratedOnAdd(); + + b.Property("created"); + + b.Property("employee_id"); + + b.Property("evaluation_group_id"); + + b.Property("isActive"); + + b.Property("updated"); + + b.HasKey("id"); + + b.HasIndex("evaluation_group_id"); + + b.ToTable("eva_evaluation_group_detail"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_idp_planEntity", b => + { + b.Property("id"); + + b.Property("create_evaluation_detail_id"); + + b.Property("created"); + + b.Property("develop") + .HasMaxLength(1000); + + b.Property("development_method") + .HasMaxLength(1000); + + b.Property("end_date"); + + b.Property("isActive"); + + b.Property("period_text") + .HasMaxLength(1000); + + b.Property("start_date"); + + b.Property("updated"); + + b.HasKey("id"); + + b.ToTable("eva_idp_plan"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_level_scoreEntity", b => + { + b.Property("id") + .ValueGeneratedOnAdd(); + + b.Property("code") + .HasMaxLength(255); + + b.Property("created"); + + b.Property("detail") + .HasMaxLength(1000); + + b.Property("isActive"); + + b.Property("max_score"); + + b.Property("min_score"); + + b.Property("updated"); + + b.HasKey("id"); + + b.ToTable("eva_level_score"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_performance_planEntity", b => + { + b.Property("id") + .ValueGeneratedOnAdd(); + + b.Property("created"); + + b.Property("fiscal_year"); + + b.Property("isActive"); + + b.Property("theTime"); + + b.Property("updated"); + + b.HasKey("id"); + + b.ToTable("eva_performance_plan"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_performance_plan_detailEntity", b => + { + b.Property("id") + .ValueGeneratedOnAdd(); + + b.Property("created"); + + b.Property("end_date"); + + b.Property("isActive"); + + b.Property("list_no"); + + b.Property("performance_plan_id"); + + b.Property("remark") + .HasMaxLength(1000); + + b.Property("start_date"); + + b.Property("step") + .HasMaxLength(1000); + + b.Property("updated"); + + b.HasKey("id"); + + b.HasIndex("performance_plan_id"); + + b.ToTable("eva_performance_plan_detail"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_promoted_percentageEntity", b => + { + b.Property("id") + .ValueGeneratedOnAdd(); + + b.Property("code") + .HasMaxLength(255); + + b.Property("created"); + + b.Property("detail") + .HasMaxLength(1000); + + b.Property("isActive"); + + b.Property("level_score_id"); + + b.Property("max_score"); + + b.Property("min_score"); + + b.Property("promoted_percentage"); + + b.Property("updated"); + + b.HasKey("id"); + + b.HasIndex("level_score_id"); + + b.ToTable("eva_promoted_percentage"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_salary_cylinderEntity", b => + { + b.Property("id"); + + b.Property("cost_living"); + + b.Property("created"); + + b.Property("isActive"); + + b.Property("middle"); + + b.Property("position_level"); + + b.Property("position_type"); + + b.Property("temporary_min"); + + b.Property("themax"); + + b.Property("themin"); + + b.Property("updated"); + + b.HasKey("id"); + + b.ToTable("eva_salary_cylinder"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_adjust_postponementEntity", b => + { + b.HasOne("TodoAPI2.Models.eva_create_evaluationEntity", "eva_create_evaluation") + .WithMany() + .HasForeignKey("create_evaluation_id"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_adjust_postponement_detailEntity", b => + { + b.HasOne("TodoAPI2.Models.eva_adjust_postponementEntity", "eva_adjust_postponement") + .WithMany() + .HasForeignKey("adjust_postponement_id"); + + b.HasOne("TodoAPI2.Models.eva_adjust_postponementEntity", "eva_adjust_postponement_quota") + .WithMany() + .HasForeignKey("adjust_postponement_quota_id") + .HasConstraintName("FK_eva_adjust_postponement_detail_eva_adjust_postponement_adj~1"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_create_evaluationEntity", b => + { + b.HasOne("TodoAPI2.Models.eva_evaluation_groupEntity", "eva_evaluation_group") + .WithMany() + .HasForeignKey("evaluation_group_id"); + + b.HasOne("TodoAPI2.Models.eva_performance_planEntity", "eva_performance_plan") + .WithMany() + .HasForeignKey("performance_plan_id"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_evaluation_achievementEntity", b => + { + b.HasOne("TodoAPI2.Models.eva_create_evaluation_detailEntity", "eva_create_evaluation_detail") + .WithMany() + .HasForeignKey("create_evaluation_detail_id"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_evaluation_behaviorEntity", b => + { + b.HasOne("TodoAPI2.Models.eva_create_evaluation_detailEntity", "eva_create_evaluation_detail") + .WithMany() + .HasForeignKey("create_evaluation_detail_id"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_evaluation_group_detailEntity", b => + { + b.HasOne("TodoAPI2.Models.eva_evaluation_groupEntity", "eva_evaluation_group") + .WithMany() + .HasForeignKey("evaluation_group_id"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_performance_plan_detailEntity", b => + { + b.HasOne("TodoAPI2.Models.eva_performance_planEntity", "eva_performance_plan") + .WithMany() + .HasForeignKey("performance_plan_id"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_promoted_percentageEntity", b => + { + b.HasOne("TodoAPI2.Models.eva_level_scoreEntity", "eva_level_score") + .WithMany() + .HasForeignKey("level_score_id"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Migrations/25631206135022_AddSalaryMigrationField.cs b/Migrations/25631206135022_AddSalaryMigrationField.cs new file mode 100644 index 0000000..e6a3c58 --- /dev/null +++ b/Migrations/25631206135022_AddSalaryMigrationField.cs @@ -0,0 +1,43 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace tb320eva.Migrations +{ + public partial class AddSalaryMigrationField : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "level_this_time", + table: "eva_adjust_postponement_detail", + maxLength: 1000, + nullable: true); + + migrationBuilder.AddColumn( + name: "position_this_time", + table: "eva_adjust_postponement_detail", + maxLength: 1000, + nullable: true); + + migrationBuilder.AddColumn( + name: "imported_file", + table: "eva_adjust_postponement", + maxLength: 1000, + nullable: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "level_this_time", + table: "eva_adjust_postponement_detail"); + + migrationBuilder.DropColumn( + name: "position_this_time", + table: "eva_adjust_postponement_detail"); + + migrationBuilder.DropColumn( + name: "imported_file", + table: "eva_adjust_postponement"); + } + } +} diff --git a/Migrations/25631207070013_AddMigratedDate.Designer.cs b/Migrations/25631207070013_AddMigratedDate.Designer.cs new file mode 100644 index 0000000..dcf3924 --- /dev/null +++ b/Migrations/25631207070013_AddMigratedDate.Designer.cs @@ -0,0 +1,701 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using TTSW.EF; + +namespace tb320eva.Migrations +{ + [DbContext(typeof(DataContext))] + [Migration("25631207070013_AddMigratedDate")] + partial class AddMigratedDate + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn) + .HasAnnotation("ProductVersion", "2.2.4-servicing-10062") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + modelBuilder.Entity("TodoAPI2.Models.eva_adjust_postponementEntity", b => + { + b.Property("id"); + + b.Property("command_no") + .HasMaxLength(100); + + b.Property("create_evaluation_id"); + + b.Property("created"); + + b.Property("fiscal_year"); + + b.Property("imported_date"); + + b.Property("imported_file") + .HasMaxLength(1000); + + b.Property("isActive"); + + b.Property("limit"); + + b.Property("limit_frame"); + + b.Property("limit_frame_quota"); + + b.Property("limit_quota"); + + b.Property("managed_by"); + + b.Property("percentage"); + + b.Property("theDate"); + + b.Property("theRound"); + + b.Property("updated"); + + b.HasKey("id"); + + b.HasIndex("create_evaluation_id"); + + b.ToTable("eva_adjust_postponement"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_adjust_postponement_detailEntity", b => + { + b.Property("id"); + + b.Property("adjust_postponement_id"); + + b.Property("adjust_postponement_quota_id"); + + b.Property("cost_living"); + + b.Property("created"); + + b.Property("employee_id"); + + b.Property("isActive"); + + b.Property("level_this_time") + .HasMaxLength(1000); + + b.Property("middle"); + + b.Property("new_cost_living"); + + b.Property("new_sarary"); + + b.Property("new_sarary_with_quota"); + + b.Property("position_this_time") + .HasMaxLength(1000); + + b.Property("promoted_percentage"); + + b.Property("receive_quota"); + + b.Property("remark") + .HasMaxLength(1000); + + b.Property("sarary"); + + b.Property("total_promote"); + + b.Property("updated"); + + b.HasKey("id"); + + b.HasIndex("adjust_postponement_id"); + + b.HasIndex("adjust_postponement_quota_id"); + + b.ToTable("eva_adjust_postponement_detail"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_create_evaluationEntity", b => + { + b.Property("id"); + + b.Property("created"); + + b.Property("employee_id"); + + b.Property("evaluation_group_id"); + + b.Property("isActive"); + + b.Property("performance_plan_id"); + + b.Property("score1"); + + b.Property("score2"); + + b.Property("supervisor1_id"); + + b.Property("supervisor2_id"); + + b.Property("updated"); + + b.HasKey("id"); + + b.HasIndex("evaluation_group_id"); + + b.HasIndex("performance_plan_id"); + + b.ToTable("eva_create_evaluation"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_create_evaluation_detailEntity", b => + { + b.Property("id"); + + b.Property("Final_summary_chief"); + + b.Property("Final_summary_competency_chief"); + + b.Property("Final_summary_competency_supervisor"); + + b.Property("Final_summary_competency_supervisor1A"); + + b.Property("Final_summary_competency_supervisor2A"); + + b.Property("Final_summary_supervisor"); + + b.Property("Final_summary_supervisor1A"); + + b.Property("Final_summary_supervisor2A"); + + b.Property("achievement_chief"); + + b.Property("achievement_supervisor"); + + b.Property("achievement_supervisor1A"); + + b.Property("achievement_supervisor2A"); + + b.Property("chief"); + + b.Property("competency_chief"); + + b.Property("competency_supervisor"); + + b.Property("competency_supervisor1A"); + + b.Property("competency_supervisor2A"); + + b.Property("create_evaluation_id"); + + b.Property("created"); + + b.Property("employee_id"); + + b.Property("isActive"); + + b.Property("level_score_chief") + .HasMaxLength(255); + + b.Property("level_score_supervisor") + .HasMaxLength(255); + + b.Property("level_score_supervisor1A") + .HasMaxLength(255); + + b.Property("level_score_supervisor2A") + .HasMaxLength(255); + + b.Property("score_chief"); + + b.Property("score_supervisor"); + + b.Property("score_supervisor1A"); + + b.Property("score_supervisor2A"); + + b.Property("status_chief") + .HasMaxLength(1); + + b.Property("status_chief_click_date"); + + b.Property("status_self") + .HasMaxLength(1); + + b.Property("status_self_click_date"); + + b.Property("status_supervisor") + .HasMaxLength(1); + + b.Property("status_supervisor1A") + .HasMaxLength(1); + + b.Property("status_supervisor1A_click_date"); + + b.Property("status_supervisor2A") + .HasMaxLength(1); + + b.Property("status_supervisor2A_click_date"); + + b.Property("status_supervisor_click_date"); + + b.Property("supervisor1"); + + b.Property("supervisor1A"); + + b.Property("supervisor1A_date"); + + b.Property("supervisor1A_remark") + .HasMaxLength(1000); + + b.Property("supervisor1A_result") + .HasMaxLength(1); + + b.Property("supervisor1_date"); + + b.Property("supervisor1_remark") + .HasMaxLength(1000); + + b.Property("supervisor1_result") + .HasMaxLength(1); + + b.Property("supervisor2"); + + b.Property("supervisor2A"); + + b.Property("supervisor2A_date"); + + b.Property("supervisor2A_remark") + .HasMaxLength(1000); + + b.Property("supervisor2A_result") + .HasMaxLength(1); + + b.Property("supervisor2_date"); + + b.Property("supervisor2_remark") + .HasMaxLength(1000); + + b.Property("supervisor2_result") + .HasMaxLength(1); + + b.Property("total_summary_chief"); + + b.Property("total_summary_competency_chief"); + + b.Property("total_summary_competency_supervisor"); + + b.Property("total_summary_competency_supervisor1A"); + + b.Property("total_summary_competency_supervisor2A"); + + b.Property("total_summary_supervisor"); + + b.Property("total_summary_supervisor1A"); + + b.Property("total_summary_supervisor2A"); + + b.Property("updated"); + + b.HasKey("id"); + + b.ToTable("eva_create_evaluation_detail"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_evaluation_achievementEntity", b => + { + b.Property("id"); + + b.Property("achievement") + .HasMaxLength(1000); + + b.Property("create_evaluation_detail_id"); + + b.Property("created"); + + b.Property("isActive"); + + b.Property("score"); + + b.Property("score2"); + + b.Property("score3"); + + b.Property("score4"); + + b.Property("sumary"); + + b.Property("sumary2"); + + b.Property("sumary3"); + + b.Property("sumary4"); + + b.Property("target_score1") + .HasMaxLength(255); + + b.Property("target_score2") + .HasMaxLength(255); + + b.Property("target_score3") + .HasMaxLength(255); + + b.Property("target_score4") + .HasMaxLength(255); + + b.Property("target_score5") + .HasMaxLength(255); + + b.Property("thefile") + .HasMaxLength(1000); + + b.Property("updated"); + + b.Property("weight"); + + b.HasKey("id"); + + b.HasIndex("create_evaluation_detail_id"); + + b.ToTable("eva_evaluation_achievement"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_evaluation_behaviorEntity", b => + { + b.Property("id"); + + b.Property("behavior") + .HasMaxLength(1000); + + b.Property("create_evaluation_detail_id"); + + b.Property("created"); + + b.Property("isActive"); + + b.Property("score"); + + b.Property("score2"); + + b.Property("score3"); + + b.Property("score4"); + + b.Property("sumary"); + + b.Property("sumary2"); + + b.Property("sumary3"); + + b.Property("sumary4"); + + b.Property("target_score1") + .HasMaxLength(255); + + b.Property("target_score2") + .HasMaxLength(255); + + b.Property("target_score3") + .HasMaxLength(255); + + b.Property("target_score4") + .HasMaxLength(255); + + b.Property("target_score5") + .HasMaxLength(255); + + b.Property("updated"); + + b.Property("weight"); + + b.HasKey("id"); + + b.HasIndex("create_evaluation_detail_id"); + + b.ToTable("eva_evaluation_behavior"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_evaluation_groupEntity", b => + { + b.Property("id") + .ValueGeneratedOnAdd(); + + b.Property("code") + .HasMaxLength(255); + + b.Property("created"); + + b.Property("isActive"); + + b.Property("thegroup") + .HasMaxLength(255); + + b.Property("updated"); + + b.HasKey("id"); + + b.ToTable("eva_evaluation_group"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_evaluation_group_detailEntity", b => + { + b.Property("id") + .ValueGeneratedOnAdd(); + + b.Property("created"); + + b.Property("employee_id"); + + b.Property("evaluation_group_id"); + + b.Property("isActive"); + + b.Property("updated"); + + b.HasKey("id"); + + b.HasIndex("evaluation_group_id"); + + b.ToTable("eva_evaluation_group_detail"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_idp_planEntity", b => + { + b.Property("id"); + + b.Property("create_evaluation_detail_id"); + + b.Property("created"); + + b.Property("develop") + .HasMaxLength(1000); + + b.Property("development_method") + .HasMaxLength(1000); + + b.Property("end_date"); + + b.Property("isActive"); + + b.Property("period_text") + .HasMaxLength(1000); + + b.Property("start_date"); + + b.Property("updated"); + + b.HasKey("id"); + + b.ToTable("eva_idp_plan"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_level_scoreEntity", b => + { + b.Property("id") + .ValueGeneratedOnAdd(); + + b.Property("code") + .HasMaxLength(255); + + b.Property("created"); + + b.Property("detail") + .HasMaxLength(1000); + + b.Property("isActive"); + + b.Property("max_score"); + + b.Property("min_score"); + + b.Property("updated"); + + b.HasKey("id"); + + b.ToTable("eva_level_score"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_performance_planEntity", b => + { + b.Property("id") + .ValueGeneratedOnAdd(); + + b.Property("created"); + + b.Property("fiscal_year"); + + b.Property("isActive"); + + b.Property("theTime"); + + b.Property("updated"); + + b.HasKey("id"); + + b.ToTable("eva_performance_plan"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_performance_plan_detailEntity", b => + { + b.Property("id") + .ValueGeneratedOnAdd(); + + b.Property("created"); + + b.Property("end_date"); + + b.Property("isActive"); + + b.Property("list_no"); + + b.Property("performance_plan_id"); + + b.Property("remark") + .HasMaxLength(1000); + + b.Property("start_date"); + + b.Property("step") + .HasMaxLength(1000); + + b.Property("updated"); + + b.HasKey("id"); + + b.HasIndex("performance_plan_id"); + + b.ToTable("eva_performance_plan_detail"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_promoted_percentageEntity", b => + { + b.Property("id") + .ValueGeneratedOnAdd(); + + b.Property("code") + .HasMaxLength(255); + + b.Property("created"); + + b.Property("detail") + .HasMaxLength(1000); + + b.Property("isActive"); + + b.Property("level_score_id"); + + b.Property("max_score"); + + b.Property("min_score"); + + b.Property("promoted_percentage"); + + b.Property("updated"); + + b.HasKey("id"); + + b.HasIndex("level_score_id"); + + b.ToTable("eva_promoted_percentage"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_salary_cylinderEntity", b => + { + b.Property("id"); + + b.Property("cost_living"); + + b.Property("created"); + + b.Property("isActive"); + + b.Property("middle"); + + b.Property("position_level"); + + b.Property("position_type"); + + b.Property("temporary_min"); + + b.Property("themax"); + + b.Property("themin"); + + b.Property("updated"); + + b.HasKey("id"); + + b.ToTable("eva_salary_cylinder"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_adjust_postponementEntity", b => + { + b.HasOne("TodoAPI2.Models.eva_create_evaluationEntity", "eva_create_evaluation") + .WithMany() + .HasForeignKey("create_evaluation_id"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_adjust_postponement_detailEntity", b => + { + b.HasOne("TodoAPI2.Models.eva_adjust_postponementEntity", "eva_adjust_postponement") + .WithMany() + .HasForeignKey("adjust_postponement_id"); + + b.HasOne("TodoAPI2.Models.eva_adjust_postponementEntity", "eva_adjust_postponement_quota") + .WithMany() + .HasForeignKey("adjust_postponement_quota_id") + .HasConstraintName("FK_eva_adjust_postponement_detail_eva_adjust_postponement_adj~1"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_create_evaluationEntity", b => + { + b.HasOne("TodoAPI2.Models.eva_evaluation_groupEntity", "eva_evaluation_group") + .WithMany() + .HasForeignKey("evaluation_group_id"); + + b.HasOne("TodoAPI2.Models.eva_performance_planEntity", "eva_performance_plan") + .WithMany() + .HasForeignKey("performance_plan_id"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_evaluation_achievementEntity", b => + { + b.HasOne("TodoAPI2.Models.eva_create_evaluation_detailEntity", "eva_create_evaluation_detail") + .WithMany() + .HasForeignKey("create_evaluation_detail_id"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_evaluation_behaviorEntity", b => + { + b.HasOne("TodoAPI2.Models.eva_create_evaluation_detailEntity", "eva_create_evaluation_detail") + .WithMany() + .HasForeignKey("create_evaluation_detail_id"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_evaluation_group_detailEntity", b => + { + b.HasOne("TodoAPI2.Models.eva_evaluation_groupEntity", "eva_evaluation_group") + .WithMany() + .HasForeignKey("evaluation_group_id"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_performance_plan_detailEntity", b => + { + b.HasOne("TodoAPI2.Models.eva_performance_planEntity", "eva_performance_plan") + .WithMany() + .HasForeignKey("performance_plan_id"); + }); + + modelBuilder.Entity("TodoAPI2.Models.eva_promoted_percentageEntity", b => + { + b.HasOne("TodoAPI2.Models.eva_level_scoreEntity", "eva_level_score") + .WithMany() + .HasForeignKey("level_score_id"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Migrations/25631207070013_AddMigratedDate.cs b/Migrations/25631207070013_AddMigratedDate.cs new file mode 100644 index 0000000..3aa6f8e --- /dev/null +++ b/Migrations/25631207070013_AddMigratedDate.cs @@ -0,0 +1,23 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace tb320eva.Migrations +{ + public partial class AddMigratedDate : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "imported_date", + table: "eva_adjust_postponement", + nullable: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "imported_date", + table: "eva_adjust_postponement"); + } + } +} diff --git a/Migrations/DataContextModelSnapshot.cs b/Migrations/DataContextModelSnapshot.cs index 184ccd1..eb9873b 100644 --- a/Migrations/DataContextModelSnapshot.cs +++ b/Migrations/DataContextModelSnapshot.cs @@ -32,6 +32,11 @@ namespace tb320eva.Migrations b.Property("fiscal_year"); + b.Property("imported_date"); + + b.Property("imported_file") + .HasMaxLength(1000); + b.Property("isActive"); b.Property("limit"); @@ -75,6 +80,9 @@ namespace tb320eva.Migrations b.Property("isActive"); + b.Property("level_this_time") + .HasMaxLength(1000); + b.Property("middle"); b.Property("new_cost_living"); @@ -83,6 +91,9 @@ namespace tb320eva.Migrations b.Property("new_sarary_with_quota"); + b.Property("position_this_time") + .HasMaxLength(1000); + b.Property("promoted_percentage"); b.Property("receive_quota"); diff --git a/Models/eva_adjust_postponement/eva_adjust_postponementEntity.cs b/Models/eva_adjust_postponement/eva_adjust_postponementEntity.cs index da7459b..0ffbd81 100644 --- a/Models/eva_adjust_postponement/eva_adjust_postponementEntity.cs +++ b/Models/eva_adjust_postponement/eva_adjust_postponementEntity.cs @@ -41,6 +41,19 @@ namespace TodoAPI2.Models public int? managed_by { get; set; } + [MaxLength(1000)] + public string imported_file { get; set; } + [NotMapped] + public string imported_fileDisplay + { + get + { + return (string.IsNullOrEmpty(imported_file) ? "" : + FileUtil.GetFileInfo(TTSW.Constant.FilePathConstant.DirType.FilesTestUpload, id, imported_file).RelativePath).Replace(@"\", "/"); + } + } + + public DateTime? imported_date { get; set; } } } diff --git a/Models/eva_adjust_postponement/eva_adjust_postponementService.cs b/Models/eva_adjust_postponement/eva_adjust_postponementService.cs index 9bc0b88..6192fa9 100644 --- a/Models/eva_adjust_postponement/eva_adjust_postponementService.cs +++ b/Models/eva_adjust_postponement/eva_adjust_postponementService.cs @@ -20,19 +20,19 @@ namespace TodoAPI2.Models public class eva_adjust_postponementService : Ieva_adjust_postponementService { private IBaseRepository2 _repository; - private IMyDatabase db; - private Iexternal_linkageService ext; + private IMyDatabase db; + private Iexternal_linkageService ext; private Iexternal_employeeService emp; private Ieva_adjust_postponement_detail_normalService detail; - public eva_adjust_postponementService(IBaseRepository2 repository, + public eva_adjust_postponementService(IBaseRepository2 repository, IMyDatabase mydb, Iexternal_linkageService inext, Iexternal_employeeService inemp, Ieva_adjust_postponement_detail_normalService indetail) { _repository = repository; - db = mydb; - ext = inext; + db = mydb; + ext = inext; emp = inemp; detail = indetail; } @@ -54,7 +54,7 @@ namespace TodoAPI2.Models { return Mapper.Map>(entities); } - + #endregion #region Public Functions @@ -89,12 +89,12 @@ namespace TodoAPI2.Models public List GetListByfiscal_year(int? fiscal_year) { - var model = new eva_adjust_postponementSearchModel(); + var model = new eva_adjust_postponementSearchModel(); model.fiscal_year = fiscal_year; return GetListBySearch(model); } - public List GetListBySearch(eva_adjust_postponementSearchModel model) + public List GetListBySearch(eva_adjust_postponementSearchModel model) { var all_emp = emp.GetListByemployee_type(null, null); @@ -110,7 +110,7 @@ namespace TodoAPI2.Models from fk_external_linkageResult11 in external_linkageResult11.DefaultIfEmpty() - where 1==1 + where 1 == 1 //&& (m_eva_adjust_postponement.id == model.id || !model.id.HasValue) && (m_eva_adjust_postponement.fiscal_year == model.fiscal_year || !model.fiscal_year.HasValue) && (m_eva_adjust_postponement.theRound == model.theRound || !model.theRound.HasValue) @@ -153,10 +153,10 @@ namespace TodoAPI2.Models int? newkey = 0; var x = (from i in _repository.Context.eva_adjust_postponement - orderby i.id descending - select i).Take(1).ToList(); + orderby i.id descending + select i).Take(1).ToList(); - if(x.Count > 0) + if (x.Count > 0) { newkey = x[0].id + 1; } @@ -172,7 +172,7 @@ namespace TodoAPI2.Models var inserted = _repository.Insert(entity); detail.ReCreatePostponementDetailNormal(entity); - + return Get(inserted.id); } @@ -198,29 +198,29 @@ namespace TodoAPI2.Models return Get(updated.id); } else - throw new NotificationException("No data to update"); + throw new NotificationException("No data to update"); } - public string UpdateMultiple(List model) + public string UpdateMultiple(List model) { - foreach(var i in 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.fiscal_year = i.fiscal_year; - existingEntity.theDate = i.theDate; - existingEntity.theRound = i.theRound; - existingEntity.create_evaluation_id = i.create_evaluation_id; - existingEntity.limit = i.limit; - existingEntity.limit_frame = i.limit_frame; - existingEntity.limit_quota = i.limit_quota; - existingEntity.limit_frame_quota = i.limit_frame_quota; - existingEntity.percentage = i.percentage; - existingEntity.command_no = i.command_no; - existingEntity.managed_by = i.managed_by; + existingEntity.fiscal_year = i.fiscal_year; + existingEntity.theDate = i.theDate; + existingEntity.theRound = i.theRound; + existingEntity.create_evaluation_id = i.create_evaluation_id; + existingEntity.limit = i.limit; + existingEntity.limit_frame = i.limit_frame; + existingEntity.limit_quota = i.limit_quota; + existingEntity.limit_frame_quota = i.limit_frame_quota; + existingEntity.percentage = i.percentage; + existingEntity.command_no = i.command_no; + existingEntity.managed_by = i.managed_by; _repository.UpdateWithoutCommit(i.id.Value, existingEntity); @@ -233,15 +233,15 @@ namespace TodoAPI2.Models _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 - } + } } - _repository.Context.SaveChanges(); + _repository.Context.SaveChanges(); return model.Count().ToString(); } @@ -259,8 +259,7 @@ namespace TodoAPI2.Models return Get(updated.id); } public void Delete(int id) - { - + { _repository.Delete(id); diff --git a/Models/eva_adjust_postponement_detail/Ieva_adjust_postponement_detailService.cs b/Models/eva_adjust_postponement_detail/Ieva_adjust_postponement_detailService.cs index d633e6e..2870784 100644 --- a/Models/eva_adjust_postponement_detail/Ieva_adjust_postponement_detailService.cs +++ b/Models/eva_adjust_postponement_detail/Ieva_adjust_postponement_detailService.cs @@ -21,7 +21,7 @@ namespace TodoAPI2.Models eva_adjust_postponement_detailWithSelectionViewModel GetWithSelection(int id); eva_adjust_postponement_detailWithSelectionViewModel GetBlankItem(); - + int GetNewPrimaryKey(); } } diff --git a/Models/eva_adjust_postponement_detail/eva_adjust_postponement_detailEntity.cs b/Models/eva_adjust_postponement_detail/eva_adjust_postponement_detailEntity.cs index c8d6999..dff09ef 100644 --- a/Models/eva_adjust_postponement_detail/eva_adjust_postponement_detailEntity.cs +++ b/Models/eva_adjust_postponement_detail/eva_adjust_postponement_detailEntity.cs @@ -47,6 +47,10 @@ namespace TodoAPI2.Models public decimal? new_sarary_with_quota { get; set; } + [MaxLength(1000)] + public string position_this_time { get; set; } + [MaxLength(1000)] + public string level_this_time { get; set; } } } diff --git a/Models/eva_adjust_postponement_detail_migration/Ieva_adjust_postponement_detail_migrationService.cs b/Models/eva_adjust_postponement_detail_migration/Ieva_adjust_postponement_detail_migrationService.cs new file mode 100644 index 0000000..cca0c9a --- /dev/null +++ b/Models/eva_adjust_postponement_detail_migration/Ieva_adjust_postponement_detail_migrationService.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_adjust_postponement_detail_migrationService : IBaseService + { + new eva_adjust_postponement_detail_migrationViewModel Insert(eva_adjust_postponement_detail_migrationInputModel model); + new eva_adjust_postponement_detail_migrationViewModel Update(int id, eva_adjust_postponement_detail_migrationInputModel model); + List GetListByadjust_postponement_id(int? adjust_postponement_id); + List GetListBySearch(eva_adjust_postponement_detail_migrationSearchModel model); + + string UpdateMultiple(List model); + eva_adjust_postponement_detail_migrationWithSelectionViewModel GetWithSelection(int id); + eva_adjust_postponement_detail_migrationWithSelectionViewModel GetBlankItem(); + + void RefreshAutoFieldOfAllData(); + eva_adjust_postponement_detailEntity GetEntity(int id); + DataContext GetContext(); + + + + } +} + diff --git a/Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationInputModel.cs b/Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationInputModel.cs new file mode 100644 index 0000000..055d74c --- /dev/null +++ b/Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationInputModel.cs @@ -0,0 +1,52 @@ +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_adjust_postponement_detail_migrationInputModel + { + + 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 decimal? sarary { get; set; } + + public decimal? cost_living { get; set; } + + public decimal? middle { get; set; } + + public decimal? promoted_percentage { get; set; } + + public decimal? total_promote { get; set; } + + public decimal? new_sarary { get; set; } + + public decimal? new_cost_living { get; set; } + + public string remark { get; set; } + + public decimal? receive_quota { get; set; } + + public decimal? new_sarary_with_quota { get; set; } + + public string position_this_time { get; set; } + + public string level_this_time { get; set; } + + public string active_mode { get; set; } + } +} + diff --git a/Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationReportRequestModel.cs b/Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationReportRequestModel.cs new file mode 100644 index 0000000..aa5eaf6 --- /dev/null +++ b/Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationReportRequestModel.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_adjust_postponement_detail_migrationReportRequestModel : eva_adjust_postponement_detail_migrationSearchModel + { + public string filetype { get; set; } + + public string contentType { get { return MyHelper.GetContentType(filetype); } } + } +} + diff --git a/Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationSearchModel.cs b/Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationSearchModel.cs new file mode 100644 index 0000000..37cf2e3 --- /dev/null +++ b/Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationSearchModel.cs @@ -0,0 +1,25 @@ +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_adjust_postponement_detail_migrationSearchModel + { + + public int id { get; set; } + + public int? adjust_postponement_id { get; set; } + + public int? adjust_postponement_quota_id { get; set; } + + } +} + diff --git a/Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationService.cs b/Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationService.cs new file mode 100644 index 0000000..1364a90 --- /dev/null +++ b/Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationService.cs @@ -0,0 +1,337 @@ +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_adjust_postponement_detail_migrationService : Ieva_adjust_postponement_detail_migrationService + { + private IBaseRepository2 _repository; + private IMyDatabase db; + private Iexternal_linkageService ext; + private Iexternal_employeeService emp; + + public eva_adjust_postponement_detail_migrationService(IBaseRepository2 repository, + IMyDatabase mydb, Iexternal_linkageService inext, Iexternal_employeeService inemp) + { + _repository = repository; + db = mydb; + ext = inext; + emp = inemp; + } + + #region Private Functions + private eva_adjust_postponement_detailEntity GetEntity(eva_adjust_postponement_detail_migrationInputModel model) + { + return Mapper.Map(model); + } + private List GetEntityList(List models) + { + return Mapper.Map>(models); + } + private eva_adjust_postponement_detail_migrationViewModel 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_adjust_postponement_detail_migrationViewModel 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; + } + + public eva_adjust_postponement_detail_migrationWithSelectionViewModel GetWithSelection(int id) + { + var entity = _repository.Get(id); + var i = Mapper.Map(entity); + var all_emp = emp.GetListByemployee_type(null, null); + i.item_employee_id = all_emp.ToList(); + + + return i; + } + public eva_adjust_postponement_detail_migrationWithSelectionViewModel GetBlankItem() + { + var i = new eva_adjust_postponement_detail_migrationWithSelectionViewModel(); + var all_emp = emp.GetListByemployee_type(null, null); + i.item_employee_id = all_emp.ToList(); + + + return i; + } + + public List GetListByadjust_postponement_id(int? adjust_postponement_id) + { + var model = new eva_adjust_postponement_detail_migrationSearchModel(); + model.adjust_postponement_id = adjust_postponement_id; + return GetListBySearch(model); + } + + public List GetListBySearch(eva_adjust_postponement_detail_migrationSearchModel model) + { + var data = ( + from m_eva_adjust_postponement_detail_migration in _repository.Context.eva_adjust_postponement_detail + + join fk_eva_adjust_postponement1 in _repository.Context.eva_adjust_postponement on m_eva_adjust_postponement_detail_migration.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_adjust_postponement_detail_migration.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_linkage3 in emp.GetListByemployee_type(null, null) on m_eva_adjust_postponement_detail_migration.employee_id equals fk_external_linkage3.id + into external_linkageResult3 + from fk_external_linkageResult3 in external_linkageResult3.DefaultIfEmpty() + + + where + (m_eva_adjust_postponement_detail_migration.id == model.id) + || (model.adjust_postponement_id.HasValue && m_eva_adjust_postponement_detail_migration.adjust_postponement_id == model.adjust_postponement_id) + || (model.adjust_postponement_quota_id.HasValue && m_eva_adjust_postponement_detail_migration.adjust_postponement_quota_id == model.adjust_postponement_quota_id) + + + orderby m_eva_adjust_postponement_detail_migration.created descending + select new eva_adjust_postponement_detail_migrationViewModel() + { + id = m_eva_adjust_postponement_detail_migration.id, + adjust_postponement_id = m_eva_adjust_postponement_detail_migration.adjust_postponement_id, + adjust_postponement_quota_id = m_eva_adjust_postponement_detail_migration.adjust_postponement_quota_id, + employee_id = m_eva_adjust_postponement_detail_migration.employee_id, + sarary = m_eva_adjust_postponement_detail_migration.sarary, + cost_living = m_eva_adjust_postponement_detail_migration.cost_living, + middle = m_eva_adjust_postponement_detail_migration.middle, + promoted_percentage = m_eva_adjust_postponement_detail_migration.promoted_percentage, + total_promote = m_eva_adjust_postponement_detail_migration.total_promote, + new_sarary = m_eva_adjust_postponement_detail_migration.new_sarary, + new_cost_living = m_eva_adjust_postponement_detail_migration.new_cost_living, + remark = m_eva_adjust_postponement_detail_migration.remark, + receive_quota = m_eva_adjust_postponement_detail_migration.receive_quota, + new_sarary_with_quota = m_eva_adjust_postponement_detail_migration.new_sarary_with_quota, + position_this_time = m_eva_adjust_postponement_detail_migration.position_this_time, + level_this_time = m_eva_adjust_postponement_detail_migration.level_this_time, + + 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, + employee_id_external_linkage_external_name = fk_external_linkageResult3.fullname, + + isActive = m_eva_adjust_postponement_detail_migration.isActive, + Created = m_eva_adjust_postponement_detail_migration.created, + Updated = m_eva_adjust_postponement_detail_migration.updated + } + ).Take(1000).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_adjust_postponement_detail_migrationViewModel Insert(eva_adjust_postponement_detail_migrationInputModel model) + { + var entity = GetEntity(model); + entity.id = GetNewPrimaryKey(); + + + var inserted = _repository.Insert(entity); + return Get(inserted.id); + } + + public eva_adjust_postponement_detail_migrationViewModel Update(int id, eva_adjust_postponement_detail_migrationInputModel 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.sarary = model.sarary; + existingEntity.cost_living = model.cost_living; + existingEntity.middle = model.middle; + existingEntity.promoted_percentage = model.promoted_percentage; + existingEntity.total_promote = model.total_promote; + existingEntity.new_sarary = model.new_sarary; + existingEntity.new_cost_living = model.new_cost_living; + existingEntity.remark = model.remark; + existingEntity.receive_quota = model.receive_quota; + existingEntity.new_sarary_with_quota = model.new_sarary_with_quota; + existingEntity.position_this_time = model.position_this_time; + existingEntity.level_this_time = model.level_this_time; + + var updated = _repository.Update(id, existingEntity); + return Get(updated.id); + } + else + throw new NotificationException("No data to update"); + } + + 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.sarary = i.sarary; + existingEntity.cost_living = i.cost_living; + existingEntity.middle = i.middle; + existingEntity.promoted_percentage = i.promoted_percentage; + existingEntity.total_promote = i.total_promote; + existingEntity.new_sarary = i.new_sarary; + existingEntity.new_cost_living = i.new_cost_living; + existingEntity.remark = i.remark; + existingEntity.receive_quota = i.receive_quota; + existingEntity.new_sarary_with_quota = i.new_sarary_with_quota; + existingEntity.position_this_time = i.position_this_time; + existingEntity.level_this_time = i.level_this_time; + + //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 + } + } + _repository.Context.SaveChanges(); + + return model.Count().ToString(); + } + + public eva_adjust_postponement_detail_migrationViewModel SetAsActive(int id) + { + var updated = _repository.SetAsActive(id); + + return Get(updated.id); + } + public eva_adjust_postponement_detail_migrationViewModel 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("employee_id_external_linkage_external_name", "ผู้รับการประเมิน"); + i.Add("sarary", "เงินเดือน ก่อนปรับเลื่อน"); + i.Add("cost_living", "ค่าครองชีพ ก่อนปรับเลื่อน"); + i.Add("middle", "ค่ากลางฐานในการคำนวณ"); + i.Add("promoted_percentage", "ร้อยละที่ได้เลื่อน"); + i.Add("total_promote", "จำนวนเงินที่ได้เลื่อน"); + i.Add("new_sarary", "เงินเดือนใหม่"); + i.Add("new_cost_living", "ค่าครองชีพใหม่"); + i.Add("remark", "หมายเหตุ"); + i.Add("receive_quota", "ได้รับเงินโควต้าพิเศษ"); + i.Add("new_sarary_with_quota", "เงินเดือนใหม่ (รวมโควต้า)"); + i.Add("position_this_time", "ตำแหน่ง (ณ วันปรับเลื่อน)"); + i.Add("level_this_time", "ระดับ (ณ วันปรับเลื่อน)"); + + return i; + } + + #endregion + + #region Match Item + + #endregion + + #endregion + } +} \ No newline at end of file diff --git a/Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationViewModel.cs b/Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationViewModel.cs new file mode 100644 index 0000000..61fab77 --- /dev/null +++ b/Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationViewModel.cs @@ -0,0 +1,52 @@ +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_adjust_postponement_detail_migrationViewModel : BaseViewModel2 + { + + public int? adjust_postponement_id { get; set; } + + public int? adjust_postponement_quota_id { get; set; } + + public int? employee_id { get; set; } + + public decimal? sarary { get; set; } + + public decimal? cost_living { get; set; } + + public decimal? middle { get; set; } + + public decimal? promoted_percentage { get; set; } + + public decimal? total_promote { get; set; } + + public decimal? new_sarary { get; set; } + + public decimal? new_cost_living { get; set; } + + public string remark { get; set; } + + public decimal? receive_quota { get; set; } + + public decimal? new_sarary_with_quota { get; set; } + + public string position_this_time { get; set; } + + public string level_this_time { 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 employee_id_external_linkage_external_name { get; set; } + + } +} \ No newline at end of file diff --git a/Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationWithSelectionViewModel.cs b/Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationWithSelectionViewModel.cs new file mode 100644 index 0000000..e55d6f9 --- /dev/null +++ b/Models/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migrationWithSelectionViewModel.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace TodoAPI2.Models +{ + public class eva_adjust_postponement_detail_migrationWithSelectionViewModel: eva_adjust_postponement_detail_migrationViewModel + { + public List item_employee_id { get; set; } + + } +} \ No newline at end of file diff --git a/Models/eva_adjust_postponement_detail_normal/eva_adjust_postponement_detail_normalService.cs b/Models/eva_adjust_postponement_detail_normal/eva_adjust_postponement_detail_normalService.cs index 184e4bd..3b74a93 100644 --- a/Models/eva_adjust_postponement_detail_normal/eva_adjust_postponement_detail_normalService.cs +++ b/Models/eva_adjust_postponement_detail_normal/eva_adjust_postponement_detail_normalService.cs @@ -244,6 +244,13 @@ namespace TodoAPI2.Models { var theemp = (from i in all_emp where i.id == m.employee_id select i).FirstOrDefault(); + if (theemp == null) continue; + + if (theemp.fullname.Contains("ธัญนันท์")) + { + string zz = "1"; + } + var n = new eva_adjust_postponement_detailEntity(); n.id = newkey; newkey++; diff --git a/Models/eva_adjust_postponement_migration/Ieva_adjust_postponement_migrationService.cs b/Models/eva_adjust_postponement_migration/Ieva_adjust_postponement_migrationService.cs new file mode 100644 index 0000000..625649c --- /dev/null +++ b/Models/eva_adjust_postponement_migration/Ieva_adjust_postponement_migrationService.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_adjust_postponement_migrationService : IBaseService + { + new eva_adjust_postponement_migrationViewModel Insert(eva_adjust_postponement_migrationInputModel model); + new eva_adjust_postponement_migrationViewModel Update(int id, eva_adjust_postponement_migrationInputModel model); + List GetListByfiscal_year(int? fiscal_year); + List GetListBySearch(eva_adjust_postponement_migrationSearchModel model); + + string UpdateMultiple(List model); + eva_adjust_postponement_migrationWithSelectionViewModel GetWithSelection(int id); + eva_adjust_postponement_migrationWithSelectionViewModel GetBlankItem(); + + void RefreshAutoFieldOfAllData(); + eva_adjust_postponementEntity GetEntity(int id); + DataContext GetContext(); + + + + } +} + diff --git a/Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationInputModel.cs b/Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationInputModel.cs new file mode 100644 index 0000000..dd5f6dd --- /dev/null +++ b/Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationInputModel.cs @@ -0,0 +1,46 @@ +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_adjust_postponement_migrationInputModel + { + + public int? id { get; set; } + + public int? fiscal_year { get; set; } + + public DateTime? theDate { get; set; } + + public int? theRound { get; set; } + + public int? create_evaluation_id { get; set; } + + public decimal? limit { get; set; } + + public decimal? limit_frame { get; set; } + + public decimal? limit_quota { get; set; } + + public decimal? limit_frame_quota { get; set; } + + public decimal? percentage { get; set; } + + public string command_no { get; set; } + + public int? managed_by { get; set; } + + public string imported_file { get; set; } + + public string active_mode { get; set; } + } +} + diff --git a/Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationReportRequestModel.cs b/Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationReportRequestModel.cs new file mode 100644 index 0000000..2aa8cbf --- /dev/null +++ b/Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationReportRequestModel.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_adjust_postponement_migrationReportRequestModel : eva_adjust_postponement_migrationSearchModel + { + public string filetype { get; set; } + + public string contentType { get { return MyHelper.GetContentType(filetype); } } + } +} + diff --git a/Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationSearchModel.cs b/Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationSearchModel.cs new file mode 100644 index 0000000..bada374 --- /dev/null +++ b/Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationSearchModel.cs @@ -0,0 +1,25 @@ +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_adjust_postponement_migrationSearchModel + { + + public int id { get; set; } + + public int? fiscal_year { get; set; } + + public int? theRound { get; set; } + + } +} + diff --git a/Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationService.cs b/Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationService.cs new file mode 100644 index 0000000..a48a044 --- /dev/null +++ b/Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationService.cs @@ -0,0 +1,487 @@ +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; +using System.IO; + +namespace TodoAPI2.Models +{ + public class eva_adjust_postponement_migrationService : Ieva_adjust_postponement_migrationService + { + private IBaseRepository2 _repository; + private IMyDatabase db; + private Iexternal_linkageService ext; + private Iexternal_employeeService emp; + private Ieva_adjust_postponement_detailService postpone_detail; + + public eva_adjust_postponement_migrationService(IBaseRepository2 repository, + IMyDatabase mydb, Iexternal_linkageService inext, Iexternal_employeeService inemp, Ieva_adjust_postponement_detailService in_postpone_detail) + { + _repository = repository; + db = mydb; + ext = inext; + emp = inemp; + postpone_detail = in_postpone_detail; + } + + #region Private Functions + private eva_adjust_postponementEntity GetEntity(eva_adjust_postponement_migrationInputModel model) + { + return Mapper.Map(model); + } + private List GetEntityList(List models) + { + return Mapper.Map>(models); + } + private eva_adjust_postponement_migrationViewModel GetDto(eva_adjust_postponementEntity entity) + { + return Mapper.Map(entity); + } + private List GetDtoList(List entities) + { + return Mapper.Map>(entities); + } + + #endregion + + #region Public Functions + #region Query Functions + + public eva_adjust_postponement_migrationViewModel Get(int id) + { + var entity = _repository.Get(id); + + return GetDto(entity); + } + + public eva_adjust_postponementEntity GetEntity(int id) + { + var entity = _repository.Get(id); + + return entity; + } + + public DataContext GetContext() + { + return _repository.Context; + } + + public eva_adjust_postponement_migrationWithSelectionViewModel GetWithSelection(int id) + { + var entity = _repository.Get(id); + var i = Mapper.Map(entity); + i.item_create_evaluation_id = (from x in _repository.Context.eva_create_evaluation select x).ToList(); + var all_emp = emp.GetListByemployee_type(null, null); + i.item_managed_by = all_emp.ToList(); + + + return i; + } + public eva_adjust_postponement_migrationWithSelectionViewModel GetBlankItem() + { + var i = new eva_adjust_postponement_migrationWithSelectionViewModel(); + i.item_create_evaluation_id = (from x in _repository.Context.eva_create_evaluation select x).ToList(); + var all_emp = emp.GetListByemployee_type(null, null); + i.item_managed_by = all_emp.ToList(); + + + return i; + } + + public List GetListByfiscal_year(int? fiscal_year) + { + var model = new eva_adjust_postponement_migrationSearchModel(); + model.fiscal_year = fiscal_year; + return GetListBySearch(model); + } + + public List GetListBySearch(eva_adjust_postponement_migrationSearchModel model) + { + var data = ( + from m_eva_adjust_postponement_migration in _repository.Context.eva_adjust_postponement + + join fk_eva_create_evaluation4 in _repository.Context.eva_create_evaluation on m_eva_adjust_postponement_migration.create_evaluation_id equals fk_eva_create_evaluation4.id + into eva_create_evaluationResult4 + from fk_eva_create_evaluationResult4 in eva_create_evaluationResult4.DefaultIfEmpty() + + join fk_external_linkage11 in emp.GetListByemployee_type(null, null) on m_eva_adjust_postponement_migration.managed_by equals fk_external_linkage11.id + into external_linkageResult11 + from fk_external_linkageResult11 in external_linkageResult11.DefaultIfEmpty() + + + where + 1 == 1 + && (!model.fiscal_year.HasValue || m_eva_adjust_postponement_migration.fiscal_year == model.fiscal_year) + && (!model.theRound.HasValue || m_eva_adjust_postponement_migration.theRound == model.theRound) + + + orderby m_eva_adjust_postponement_migration.created descending + select new eva_adjust_postponement_migrationViewModel() + { + id = m_eva_adjust_postponement_migration.id, + fiscal_year = m_eva_adjust_postponement_migration.fiscal_year, + theDate = m_eva_adjust_postponement_migration.theDate, + theRound = m_eva_adjust_postponement_migration.theRound, + create_evaluation_id = m_eva_adjust_postponement_migration.create_evaluation_id, + limit = m_eva_adjust_postponement_migration.limit, + limit_frame = m_eva_adjust_postponement_migration.limit_frame, + limit_quota = m_eva_adjust_postponement_migration.limit_quota, + limit_frame_quota = m_eva_adjust_postponement_migration.limit_frame_quota, + percentage = m_eva_adjust_postponement_migration.percentage, + command_no = m_eva_adjust_postponement_migration.command_no, + managed_by = m_eva_adjust_postponement_migration.managed_by, + imported_file = m_eva_adjust_postponement_migration.imported_file, + imported_fileDisplay = m_eva_adjust_postponement_migration.imported_fileDisplay, + + create_evaluation_id_eva_create_evaluation_performance_plan_id = fk_eva_create_evaluationResult4.performance_plan_id, + managed_by_external_linkage_external_name = fk_external_linkageResult11.fullname, + + isActive = m_eva_adjust_postponement_migration.isActive, + Created = m_eva_adjust_postponement_migration.created, + Updated = m_eva_adjust_postponement_migration.updated + } + ).Take(1000).ToList(); + + return data; + } + + #endregion + + #region Manipulation Functions + + + public int GetNewPrimaryKey() + { + int? newkey = 0; + + var x = (from i in _repository.Context.eva_adjust_postponement + orderby i.id descending + select i).Take(1).ToList(); + + if (x.Count > 0) + { + newkey = x[0].id + 1; + } + + return newkey.Value; + } + + + public eva_adjust_postponement_migrationViewModel Insert(eva_adjust_postponement_migrationInputModel model) + { + var entity = GetEntity(model); + entity.id = GetNewPrimaryKey(); + + if (!string.IsNullOrEmpty(model.imported_file)) + { + //Move file from temp to physical + string imported_fileFileName = FileUtil.MoveTempUploadFileToActualPath( + model.imported_file, FilePathConstant.DirType.FilesTestUpload, entity.id); + entity.imported_file = imported_fileFileName; + + var filepath = FileUtil.GetFileInfo(TTSW.Constant.FilePathConstant.DirType.FilesTestUpload, entity.id, entity.imported_file).PhysicalPath; + entity.command_no = AddItems(filepath, entity.id); + } + else + { + throw new Exception("ไม่ได้แนบไฟล์เข้ามา ไม่สามารถเพิ่มรายการประวัติเงินเดือนย้อนหลัง ได้"); + } + + entity.imported_date = DateTime.Now; + + var inserted = _repository.Insert(entity); + return Get(inserted.id); + } + + private string AddItems(string filepath, int id) + { + string return_text = ""; + + var excel = GetDataTableFromExcel(filepath); + + var all_emp = (from q in emp.GetAllEmployee() + select q).ToList(); + + var newkey = postpone_detail.GetNewPrimaryKey(); + + for (int j = 0; j < excel.Rows.Count; j++) + { + string employee_no = "N/A"; + + try + { + string position = excel.Rows[j]["position"].ToString(); + string level = excel.Rows[j]["level"].ToString(); + employee_no = excel.Rows[j]["employee_no"].ToString(); + decimal? old_salary = Convert.ToDecimal(excel.Rows[j]["old_salary"]); + decimal? old_cost_living = Convert.ToDecimal(excel.Rows[j]["old_cost_living"]); + decimal? middle = Convert.ToDecimal(excel.Rows[j]["middle"]); + decimal? promoted_percentage = Convert.ToDecimal(excel.Rows[j]["promoted_percentage"]); + decimal? total_promote = Convert.ToDecimal(excel.Rows[j]["total_promote"]); + decimal? receive_quota = Convert.ToDecimal(excel.Rows[j]["receive_quota"]); + decimal? new_sarary_with_quota = Convert.ToDecimal(excel.Rows[j]["new_sarary_with_quota"]); + decimal? new_cost_living = Convert.ToDecimal(excel.Rows[j]["new_cost_living"]); + string remark = excel.Rows[j]["remark"].ToString(); + + var item = new eva_adjust_postponement_detailEntity(); + item.id = newkey; + newkey += 1; + + item.adjust_postponement_id = id; + item.adjust_postponement_quota_id = id; + + var employee = (from qq in all_emp where qq.employee_no == employee_no select qq).FirstOrDefault(); + if (employee == null) + { + return_text += " ไม่พบ " + employee_no; + } + else + { + item.employee_id = employee.id; + item.sarary = old_salary; + item.cost_living = old_cost_living; + item.middle = middle; + item.promoted_percentage = promoted_percentage; + item.total_promote = total_promote; + item.new_sarary = old_salary + total_promote; + item.new_cost_living = new_cost_living; + item.remark = remark; + item.receive_quota = receive_quota; + item.new_sarary_with_quota = new_sarary_with_quota; + item.position_this_time = position; + item.level_this_time = level; + + _repository.Context.Add(item); + } + } + catch(Exception ex) + { + throw new Exception("มีความผิดพลาดในการแปลงข้อมูลของ "+ employee_no + " = "+ ex.Message); + } + } + + return return_text; + } + + private DataTable GetDataTableFromExcel(string path, bool hasHeader = true) + { + using (var pck = new OfficeOpenXml.ExcelPackage()) + { + using (var stream = File.OpenRead(path)) + { + pck.Load(stream); + } + var ws = pck.Workbook.Worksheets.First(); + DataTable tbl = new DataTable(); + foreach (var firstRowCell in ws.Cells[1, 1, 1, ws.Dimension.End.Column]) + { + tbl.Columns.Add(hasHeader ? firstRowCell.Text : string.Format("Column {0}", firstRowCell.Start.Column)); + } + var startRow = hasHeader ? 2 : 1; + for (int rowNum = startRow; rowNum <= ws.Dimension.End.Row; rowNum++) + { + var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column]; + DataRow row = tbl.Rows.Add(); + foreach (var cell in wsRow) + { + row[cell.Start.Column - 1] = cell.Text; + } + } + return tbl; + } + } + + public eva_adjust_postponement_migrationViewModel Update(int id, eva_adjust_postponement_migrationInputModel model) + { + var existingEntity = _repository.Get(id); + if (existingEntity != null) + { + existingEntity.fiscal_year = model.fiscal_year; + existingEntity.theDate = model.theDate; + existingEntity.theRound = model.theRound; + existingEntity.create_evaluation_id = model.create_evaluation_id; + existingEntity.limit = model.limit; + existingEntity.limit_frame = model.limit_frame; + existingEntity.limit_quota = model.limit_quota; + existingEntity.limit_frame_quota = model.limit_frame_quota; + existingEntity.percentage = model.percentage; + existingEntity.command_no = model.command_no; + existingEntity.managed_by = model.managed_by; + if (!string.IsNullOrEmpty(model.imported_file)) + { + if (model.imported_file.StartsWith("Uploads")) + { + var imported_fileFileName = FileUtil.MoveTempUploadFileToActualPath( + model.imported_file, FilePathConstant.DirType.FilesTestUpload, existingEntity.id, existingEntity.imported_file); + existingEntity.imported_file = imported_fileFileName; + } + else + { + existingEntity.imported_file = model.imported_file; + } + } + else + { + existingEntity.imported_file = null; + } + + + var updated = _repository.Update(id, existingEntity); + return Get(updated.id); + } + else + throw new NotificationException("No data to update"); + } + + 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.fiscal_year = i.fiscal_year; + existingEntity.theDate = i.theDate; + existingEntity.theRound = i.theRound; + existingEntity.create_evaluation_id = i.create_evaluation_id; + existingEntity.limit = i.limit; + existingEntity.limit_frame = i.limit_frame; + existingEntity.limit_quota = i.limit_quota; + existingEntity.limit_frame_quota = i.limit_frame_quota; + existingEntity.percentage = i.percentage; + existingEntity.command_no = i.command_no; + existingEntity.managed_by = i.managed_by; + if (!string.IsNullOrEmpty(i.imported_file)) + { + if (i.imported_file.StartsWith("Uploads")) + { + var imported_fileFileName = FileUtil.MoveTempUploadFileToActualPath( + i.imported_file, FilePathConstant.DirType.FilesTestUpload, existingEntity.id, existingEntity.imported_file); + existingEntity.imported_file = imported_fileFileName; + } + else + { + existingEntity.imported_file = i.imported_file; + } + } + else + { + existingEntity.imported_file = null; + } + + + //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 + } + } + _repository.Context.SaveChanges(); + + return model.Count().ToString(); + } + + public eva_adjust_postponement_migrationViewModel SetAsActive(int id) + { + var updated = _repository.SetAsActive(id); + + return Get(updated.id); + } + public eva_adjust_postponement_migrationViewModel SetAsInactive(int id) + { + var updated = _repository.SetAsInActive(id); + + return Get(updated.id); + } + public void Delete(int id) + { + var postponement = (from i in _repository.Context.eva_adjust_postponement + where i.id == id + select i).FirstOrDefault(); + if (postponement == null || !postponement.imported_date.HasValue) + { + throw new Exception("ไม่สามารถลบรายการได้ เพราะ ไม่ใช่รายการที่นำเข้าย้อนหลัง"); + } + + var items = (from i in _repository.Context.eva_adjust_postponement_detail + where i.adjust_postponement_id == id + || i.adjust_postponement_quota_id == id + select i).ToList(); + _repository.Context.RemoveRange(items); + + _repository.Delete(id); + + return; + } + + public void RefreshAutoFieldOfAllData() + { + var all_items = from i in _repository.Context.eva_adjust_postponement + select i; + foreach (var item in all_items) + { + //item.SetAutoField(_repository.Context); + } + _repository.Context.SaveChanges(); + } + + private Dictionary GetLookupForLog() + { + var i = new Dictionary(); + + + i.Add("fiscal_year", "ปีงบประมาณ "); + i.Add("theDate", "วันที่เลื่อน"); + i.Add("txt_theDate", "วันที่เลื่อน"); + i.Add("theRound", "ครั้งที่เลื่อน"); + i.Add("create_evaluation_id", "กลุ่มการประเมิน"); + i.Add("create_evaluation_id_eva_create_evaluation_performance_plan_id", "กลุ่มการประเมิน"); + i.Add("limit", "บริหารวงเงิน"); + i.Add("limit_frame", "กรอบวงเงินร้อยละ"); + i.Add("limit_quota", "จำนวนเงินที่สามารถบริหารวงเงินหรือวงเงินโควต้าพิเศษ"); + i.Add("limit_frame_quota", "กรอบโควต้าพิเศษร้อยละ"); + i.Add("percentage", "ร้อยละที่ได้เลื่อน"); + i.Add("command_no", "เลขที่คำสั่ง"); + i.Add("managed_by", "ผู้จัดทำข้อมูล"); + i.Add("managed_by_external_linkage_external_name", "ผู้จัดทำข้อมูล"); + + return i; + } + + #endregion + + #region Match Item + + #endregion + + #endregion + } +} \ No newline at end of file diff --git a/Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationViewModel.cs b/Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationViewModel.cs new file mode 100644 index 0000000..7f173fd --- /dev/null +++ b/Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationViewModel.cs @@ -0,0 +1,57 @@ +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_adjust_postponement_migrationViewModel : BaseViewModel2 + { + + public int? fiscal_year { get; set; } + + public DateTime? theDate { get; set; } + + public string txt_theDate { get { return MyHelper.GetDateStringForReport(this.theDate); } } + + public int? theRound { get; set; } + + public int? create_evaluation_id { get; set; } + + public decimal? limit { get; set; } + + public decimal? limit_frame { get; set; } + + public decimal? limit_quota { get; set; } + + public decimal? limit_frame_quota { get; set; } + + public decimal? percentage { get; set; } + + public string command_no { get; set; } + + public int? managed_by { get; set; } + + public string imported_file { get; set; } + public string imported_fileDisplay { get; set; } + + public string txt_imported_file + { + get + { + return (string.IsNullOrEmpty(imported_file) ? "" : + $"{imported_file}"); + } + } + + public Guid? create_evaluation_id_eva_create_evaluation_performance_plan_id { get; set; } + public string managed_by_external_linkage_external_name { get; set; } + + } +} \ No newline at end of file diff --git a/Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationWithSelectionViewModel.cs b/Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationWithSelectionViewModel.cs new file mode 100644 index 0000000..a0c15d7 --- /dev/null +++ b/Models/eva_adjust_postponement_migration/eva_adjust_postponement_migrationWithSelectionViewModel.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace TodoAPI2.Models +{ + public class eva_adjust_postponement_migrationWithSelectionViewModel: eva_adjust_postponement_migrationViewModel + { + public List item_create_evaluation_id { get; set; } + public List item_managed_by { get; set; } + + } +} \ No newline at end of file diff --git a/Properties/launchSettings.json b/Properties/launchSettings.json index 1bd65ac..2596353 100644 --- a/Properties/launchSettings.json +++ b/Properties/launchSettings.json @@ -28,8 +28,8 @@ "SiteInformation_chatsite": "http://chat.rmutto.ac.th", "ASPNETCORE_ENVIRONMENT": "Development", "MIGRATION": "true", - "JasperReportServer_MainURL": "http://tb320.zd.co.th/jasperserver/rest_v2/reports", - "JasperReportServer_LoginURL": "http://tb320.zd.co.th/jasperserver/rest_v2/reports", + "JasperReportServer_MainURL": "http://tb-320.zd.co.th/jasperserver/rest_v2/reports", + "JasperReportServer_LoginURL": "http://tb-320.zd.co.th/jasperserver/rest_v2/reports", "SiteInformation_appsite": "/eva", "SiteInformation_sitename": "เนติบัณฑิตยสภา ในพระบรมราชูปถัมภ์" } diff --git a/Startup.cs b/Startup.cs index e39bc17..c40b150 100644 --- a/Startup.cs +++ b/Startup.cs @@ -295,6 +295,10 @@ namespace Test01 services.AddScoped(); + services.AddScoped(); + + services.AddScoped(); + #endregion services.TryAddSingleton(); @@ -522,6 +526,14 @@ namespace Test01 cfg.CreateMap(); cfg.CreateMap(); + cfg.CreateMap(); + cfg.CreateMap(); + cfg.CreateMap(); + + cfg.CreateMap(); + cfg.CreateMap(); + cfg.CreateMap(); + }); #endregion diff --git a/ViewControllers/eva_adjust_postponement_migrationViewControllers.cs b/ViewControllers/eva_adjust_postponement_migrationViewControllers.cs new file mode 100644 index 0000000..e2a50f1 --- /dev/null +++ b/ViewControllers/eva_adjust_postponement_migrationViewControllers.cs @@ -0,0 +1,56 @@ +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_adjust_postponement_migrationViewController : Controller + { + private ILogger _logger; + private Ieva_adjust_postponement_migrationService _repository; + private IConfiguration Configuration { get; set; } + + /// + /// Default constructure for dependency injection + /// + /// + /// + /// + public eva_adjust_postponement_migrationViewController(ILogger logger, Ieva_adjust_postponement_migrationService repository, IConfiguration configuration) + { + _logger = logger; + _repository = repository; + Configuration = configuration; + } + + public IActionResult eva_adjust_postponement_migration() + { + if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); // Or UnauthorizedView + return View(); + } + + public IActionResult eva_adjust_postponement_migration_d() + { + 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_adjust_postponement_detail_migrationView/eva_adjust_postponement_detail_migration.cshtml b/Views/eva_adjust_postponement_detail_migrationView/eva_adjust_postponement_detail_migration.cshtml new file mode 100644 index 0000000..85b4182 --- /dev/null +++ b/Views/eva_adjust_postponement_detail_migrationView/eva_adjust_postponement_detail_migration.cshtml @@ -0,0 +1,187 @@ +@using Microsoft.Extensions.Configuration +@inject IConfiguration Configuration +@{ + ViewData["Title"] = "eva_adjust_postponement_detail_migration"; +} + + + +
+
+
+ @Configuration["SiteInformation:modulename"] +
+
+
+ +
+
+ +
+
ค้นหา eva_adjust_postponement_detail_migration
+
+
+ +
+ + +
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
เครื่องมือ
+
+ +@section FooterPlaceHolder{ + + +} + diff --git a/Views/eva_adjust_postponement_migrationView/eva_adjust_postponement_migration.cshtml b/Views/eva_adjust_postponement_migrationView/eva_adjust_postponement_migration.cshtml new file mode 100644 index 0000000..484a8cf --- /dev/null +++ b/Views/eva_adjust_postponement_migrationView/eva_adjust_postponement_migration.cshtml @@ -0,0 +1,171 @@ +@using Microsoft.Extensions.Configuration +@inject IConfiguration Configuration +@{ + ViewData["Title"] = "eva_adjust_postponement_migration"; +} + + + +
+
+
+ @Configuration["SiteInformation:modulename"] +
+
+
+ +
+
+ +
+
หน้าจอนำเข้าข้อมูล ประวัติการปรับเงินเดือนย้อนหลัง (ใช้สำหรับ ZD เท่านั้น)
+
+
+ +
+ + +
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + +
เครื่องมือ
+
+ +@section FooterPlaceHolder{ + + +} + diff --git a/Views/eva_adjust_postponement_migrationView/eva_adjust_postponement_migration_d.cshtml b/Views/eva_adjust_postponement_migrationView/eva_adjust_postponement_migration_d.cshtml new file mode 100644 index 0000000..1c5572c --- /dev/null +++ b/Views/eva_adjust_postponement_migrationView/eva_adjust_postponement_migration_d.cshtml @@ -0,0 +1,290 @@ +@using Microsoft.Extensions.Configuration +@inject IConfiguration Configuration +@{ + ViewData["Title"] = "eva_adjust_postponement_migration"; + Layout = "_LayoutDirect"; +} + + + +
+
+
+ @Configuration["SiteInformation:modulename"] +
+
+
+ +
+
+ +
+
บันทึกข้อมูล รอบการปรับเงินเดือน
+ +
+
+ +
+
+ + + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+ + +
+

ในการแก้ไข จะไม่อนุญาตให้นำเข้าไฟล์ใหม่ หากต้องการนำเข้าใหม่ ให้ลบรอบการปรับเงินเดือนออก และสร้างรอบการปรับเงินเดือน ใหม่อีกครั้ง

+
+
+ + +
+
+
+
+ +
+
+ + +
+
+ +
+ +
+ +
+
รายชื่อผู้ได้ปรับเลื่อนเงินเดือน ในครั้งนี้
+
+
+ + + +
+ + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
เครื่องมือ
+
+ +@section FooterPlaceHolder{ + + + +} + diff --git a/appsettings.Development.json b/appsettings.Development.json index fc51dce..6c69a43 100644 --- a/appsettings.Development.json +++ b/appsettings.Development.json @@ -29,8 +29,8 @@ "From": "" }, "JasperReportServer": { - "MainURL": "http://tb320.zd.co.th/jasperserver/rest_v2/reports", - "LoginURL": "http://tb320.zd.co.th/jasperserver/rest_v2/login", + "MainURL": "http://tb-320.zd.co.th/jasperserver/rest_v2/reports", + "LoginURL": "http://tb-320.zd.co.th/jasperserver/rest_v2/login", "username": "tb@zd.co.th", "password": "Be$m@rt", "reportsite": "/tb320hr_site2" diff --git a/appsettings.Production.json b/appsettings.Production.json index 446cd87..e4a8472 100644 --- a/appsettings.Production.json +++ b/appsettings.Production.json @@ -27,8 +27,8 @@ "From": "" }, "JasperReportServer": { - "MainURL": "http://tb320.zd.co.th/jasperserver/rest_v2/reports", - "LoginURL": "http://tb320.zd.co.th/jasperserver/rest_v2/login", + "MainURL": "http://tb-320.zd.co.th/jasperserver/rest_v2/reports", + "LoginURL": "http://tb-320.zd.co.th/jasperserver/rest_v2/login", "username": "tb@zd.co.th", "password": "Be$m@rt", "reportsite": "/tb320hr_site2" diff --git a/appsettings.Staging.json b/appsettings.Staging.json index 1d6eb6d..2a73785 100644 --- a/appsettings.Staging.json +++ b/appsettings.Staging.json @@ -27,8 +27,8 @@ "From": "" }, "JasperReportServer": { - "MainURL": "http://tb320.zd.co.th/jasperserver/rest_v2/reports", - "LoginURL": "http://tb320.zd.co.th/jasperserver/rest_v2/login", + "MainURL": "http://tb-320.zd.co.th/jasperserver/rest_v2/reports", + "LoginURL": "http://tb-320.zd.co.th/jasperserver/rest_v2/login", "username": "tb@zd.co.th", "password": "Be$m@rt", "reportsite": "/tb320hr" diff --git a/tb320eva.csproj b/tb320eva.csproj index e96b314..8a727a6 100644 --- a/tb320eva.csproj +++ b/tb320eva.csproj @@ -68,6 +68,12 @@ + + + + + + Always diff --git a/tb320eva.xml b/tb320eva.xml index 6b682af..210beaa 100644 --- a/tb320eva.xml +++ b/tb320eva.xml @@ -52,6 +52,124 @@ Returns the item 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 + + + + Create new item + + + + + Response Result Message + Response Result Message + If the model is invalid + Error Occurred + + + + Update item + + + + + + Response Result Message + Response Result Message + If the model is invalid + Error Occurred + + + + Delete item + + + + + Response Result Message + Response Result Message + If the model is invalid + Error Occurred + + + + Update multiple item + + + + + Response Result Message + Response Result Message + If the model is invalid + Error Occurred + + + + Refresh AutoField of all items + + + + Response Result Message + Response Result Message + If the model is invalid + Error Occurred + Default constructure for dependency injection @@ -455,6 +573,124 @@ 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 fiscal_year + + + + 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 + + + + Create new item + + + + + Response Result Message + Response Result Message + If the model is invalid + Error Occurred + + + + Update item + + + + + + Response Result Message + Response Result Message + If the model is invalid + Error Occurred + + + + Delete item + + + + + Response Result Message + Response Result Message + If the model is invalid + Error Occurred + + + + Update multiple item + + + + + Response Result Message + Response Result Message + If the model is invalid + Error Occurred + + + + Refresh AutoField of all items + + + + Response Result Message + Response Result Message + If the model is invalid + Error Occurred + Default constructure for dependency injection @@ -3763,6 +3999,14 @@ + + + Default constructure for dependency injection + + + + + Default constructure for dependency injection diff --git a/wwwroot/js/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migration.js b/wwwroot/js/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migration.js new file mode 100644 index 0000000..9888515 --- /dev/null +++ b/wwwroot/js/eva_adjust_postponement_detail_migration/eva_adjust_postponement_detail_migration.js @@ -0,0 +1,256 @@ +var eva_adjust_postponement_detail_migration_editMode = "CREATE"; +var eva_adjust_postponement_detail_migration_API = "/api/eva_adjust_postponement_detail_migration/"; + +//================= Search Customizaiton ========================================= + +function eva_adjust_postponement_detail_migration_GetSearchParameter() { + var eva_adjust_postponement_detail_migrationSearchObject = new Object(); + eva_adjust_postponement_detail_migrationSearchObject.adjust_postponement_id = getUrlParameter("id"); + eva_adjust_postponement_detail_migrationSearchObject.adjust_postponement_quota_id = getUrlParameter("id"); + + return eva_adjust_postponement_detail_migrationSearchObject; +} + +function eva_adjust_postponement_detail_migration_FeedDataToSearchForm(data) { + $("#s_eva_adjust_postponement_detail_migration_adjust_postponement_id").val(data.adjust_postponement_id); + $("#s_eva_adjust_postponement_detail_migration_adjust_postponement_quota_id").val(data.adjust_postponement_quota_id); + +} + +//================= Form Data Customizaiton ========================================= + +function eva_adjust_postponement_detail_migration_FeedDataToForm(data) { + $("#eva_adjust_postponement_detail_migration_id").val(data.id); + $("#eva_adjust_postponement_detail_migration_adjust_postponement_id").val(data.adjust_postponement_id); + $("#eva_adjust_postponement_detail_migration_adjust_postponement_quota_id").val(data.adjust_postponement_quota_id); + DropDownClearFormAndFeedWithData($("#eva_adjust_postponement_detail_migration_employee_id"), data, "id", "fullname", "item_employee_id", data.employee_id); + $("#eva_adjust_postponement_detail_migration_sarary").val(data.sarary); + $("#eva_adjust_postponement_detail_migration_cost_living").val(data.cost_living); + $("#eva_adjust_postponement_detail_migration_middle").val(data.middle); + $("#eva_adjust_postponement_detail_migration_promoted_percentage").val(data.promoted_percentage); + $("#eva_adjust_postponement_detail_migration_total_promote").val(data.total_promote); + $("#eva_adjust_postponement_detail_migration_new_sarary").val(data.new_sarary); + $("#eva_adjust_postponement_detail_migration_new_cost_living").val(data.new_cost_living); + $("#eva_adjust_postponement_detail_migration_remark").val(data.remark); + $("#eva_adjust_postponement_detail_migration_receive_quota").val(data.receive_quota); + $("#eva_adjust_postponement_detail_migration_new_sarary_with_quota").val(data.new_sarary_with_quota); + $("#eva_adjust_postponement_detail_migration_position_this_time").val(data.position_this_time); + $("#eva_adjust_postponement_detail_migration_level_this_time").val(data.level_this_time); + +} + +function eva_adjust_postponement_detail_migration_GetFromForm() { + var eva_adjust_postponement_detail_migrationObject = new Object(); + eva_adjust_postponement_detail_migrationObject.id = $("#eva_adjust_postponement_detail_migration_id").val(); + eva_adjust_postponement_detail_migrationObject.adjust_postponement_id = $("#eva_adjust_postponement_detail_migration_adjust_postponement_id").val(); + eva_adjust_postponement_detail_migrationObject.adjust_postponement_quota_id = $("#eva_adjust_postponement_detail_migration_adjust_postponement_quota_id").val(); + eva_adjust_postponement_detail_migrationObject.employee_id = $("#eva_adjust_postponement_detail_migration_employee_id").val(); + eva_adjust_postponement_detail_migrationObject.sarary = $("#eva_adjust_postponement_detail_migration_sarary").val(); + eva_adjust_postponement_detail_migrationObject.cost_living = $("#eva_adjust_postponement_detail_migration_cost_living").val(); + eva_adjust_postponement_detail_migrationObject.middle = $("#eva_adjust_postponement_detail_migration_middle").val(); + eva_adjust_postponement_detail_migrationObject.promoted_percentage = $("#eva_adjust_postponement_detail_migration_promoted_percentage").val(); + eva_adjust_postponement_detail_migrationObject.total_promote = $("#eva_adjust_postponement_detail_migration_total_promote").val(); + eva_adjust_postponement_detail_migrationObject.new_sarary = $("#eva_adjust_postponement_detail_migration_new_sarary").val(); + eva_adjust_postponement_detail_migrationObject.new_cost_living = $("#eva_adjust_postponement_detail_migration_new_cost_living").val(); + eva_adjust_postponement_detail_migrationObject.remark = $("#eva_adjust_postponement_detail_migration_remark").val(); + eva_adjust_postponement_detail_migrationObject.receive_quota = $("#eva_adjust_postponement_detail_migration_receive_quota").val(); + eva_adjust_postponement_detail_migrationObject.new_sarary_with_quota = $("#eva_adjust_postponement_detail_migration_new_sarary_with_quota").val(); + eva_adjust_postponement_detail_migrationObject.position_this_time = $("#eva_adjust_postponement_detail_migration_position_this_time").val(); + eva_adjust_postponement_detail_migrationObject.level_this_time = $("#eva_adjust_postponement_detail_migration_level_this_time").val(); + + + return eva_adjust_postponement_detail_migrationObject; +} + +function eva_adjust_postponement_detail_migration_InitialForm(s) { + var successFunc = function (result) { + eva_adjust_postponement_detail_migration_FeedDataToForm(result); + eva_adjust_postponement_detail_migration_FeedDataToSearchForm(result); + if (s) { + // Incase model popup + $("#eva_adjust_postponement_detail_migrationModel").modal("show"); + } + endLoad(); + }; + startLoad(); + AjaxGetRequest(apisite + eva_adjust_postponement_detail_migration_API + "GetBlankItem", successFunc, AlertDanger); +} + +//================= Form Mode Setup and Flow ========================================= + +function eva_adjust_postponement_detail_migration_GoCreate() { + // Incase model popup + eva_adjust_postponement_detail_migration_SetCreateForm(true); + + // Incase open new page + //window_open(appsite + "/eva_adjust_postponement_detail_migrationView/eva_adjust_postponement_detail_migration_d"); +} + +function eva_adjust_postponement_detail_migration_GoEdit(a) { + // Incase model popup + eva_adjust_postponement_detail_migration_SetEditForm(a); + + // Incase open new page + //window_open(appsite + "/eva_adjust_postponement_detail_migrationView/eva_adjust_postponement_detail_migration_d?id=" + a); +} + +function eva_adjust_postponement_detail_migration_SetEditForm(a) { + var successFunc = function (result) { + eva_adjust_postponement_detail_migration_editMode = "UPDATE"; + eva_adjust_postponement_detail_migration_FeedDataToForm(result); + $("#eva_adjust_postponement_detail_migrationModel").modal("show"); + endLoad(); + }; + startLoad(); + AjaxGetRequest(apisite + eva_adjust_postponement_detail_migration_API + a, successFunc, AlertDanger); +} + +function eva_adjust_postponement_detail_migration_SetCreateForm(s) { + eva_adjust_postponement_detail_migration_editMode = "CREATE"; + eva_adjust_postponement_detail_migration_InitialForm(s); +} + +function eva_adjust_postponement_detail_migration_RefreshTable() { + // Incase model popup + eva_adjust_postponement_detail_migration_DoSearch(); + + // Incase open new page + //window.parent.eva_adjust_postponement_detail_migration_DoSearch(); +} + +//================= Update and Delete ========================================= + +var eva_adjust_postponement_detail_migration_customValidation = function (group) { + return ""; +}; + +function eva_adjust_postponement_detail_migration_PutUpdate() { + if (!ValidateForm('eva_adjust_postponement_detail_migration', eva_adjust_postponement_detail_migration_customValidation)) { + return; + } + + var data = eva_adjust_postponement_detail_migration_GetFromForm(); + + //Update Mode + if (eva_adjust_postponement_detail_migration_editMode === "UPDATE") { + var successFunc1 = function (result) { + $("#eva_adjust_postponement_detail_migrationModel").modal("hide"); + AlertSuccess(result.code + " " + result.message); + eva_adjust_postponement_detail_migration_RefreshTable(); + endLoad(); + }; + startLoad(); + AjaxPutRequest(apisite + eva_adjust_postponement_detail_migration_API + data.id, data, successFunc1, AlertDanger); + } + // Create mode + else { + var successFunc2 = function (result) { + $("#eva_adjust_postponement_detail_migrationModel").modal("hide"); + AlertSuccess(result.code + " " + result.message); + eva_adjust_postponement_detail_migration_RefreshTable(); + endLoad(); + }; + startLoad(); + AjaxPostRequest(apisite + eva_adjust_postponement_detail_migration_API, data, successFunc2, AlertDanger); + } +} + +function eva_adjust_postponement_detail_migration_GoDelete(a) { + if (confirm('คุณต้องการลบข้อมูล ใช่หรือไม่?')) { + var successFunc = function (result) { + $("#eva_adjust_postponement_detail_migrationModel").modal("hide"); + AlertSuccess(result.code + " " + result.message); + eva_adjust_postponement_detail_migration_RefreshTable(); + endLoad(); + }; + startLoad(); + AjaxDeleteRequest(apisite + eva_adjust_postponement_detail_migration_API + a, null, successFunc, AlertDanger); + } +} + +//================= Data Table ========================================= + +var eva_adjust_postponement_detail_migrationTableV; + +var eva_adjust_postponement_detail_migration_setupTable = function (result) { + tmp = '"'; + eva_adjust_postponement_detail_migrationTableV = $('#eva_adjust_postponement_detail_migrationTable').DataTable({ + "processing": true, + "serverSide": false, + "data": result, + //"select": { + // "style": 'multi' + //}, + "columns": [ + //{ "data": "" }, + { "data": "id" }, + { "data": "employee_id_external_linkage_external_name" }, + { "data": "sarary" }, + { "data": "cost_living" }, + { "data": "middle" }, + { "data": "promoted_percentage" }, + { "data": "total_promote" }, + { "data": "new_sarary" }, + { "data": "new_cost_living" }, + { "data": "receive_quota" }, + { "data": "new_sarary_with_quota" }, + { "data": "remark" }, + ], + "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_adjust_postponement_detail_migration_InitiateDataTable() { + startLoad(); + var p = $.param(eva_adjust_postponement_detail_migration_GetSearchParameter()); + AjaxGetRequest(apisite + "/api/eva_adjust_postponement_detail_migration/GetListBySearch?" + p, eva_adjust_postponement_detail_migration_setupTable, AlertDanger); +} + +function eva_adjust_postponement_detail_migration_DoSearch() { + var p = $.param(eva_adjust_postponement_detail_migration_GetSearchParameter()); + var eva_adjust_postponement_detail_migration_reload = function (result) { + eva_adjust_postponement_detail_migrationTableV.destroy(); + eva_adjust_postponement_detail_migration_setupTable(result); + endLoad(); + }; + startLoad(); + AjaxGetRequest(apisite + "/api/eva_adjust_postponement_detail_migration/GetListBySearch?" + p, eva_adjust_postponement_detail_migration_reload, AlertDanger); +} + +function eva_adjust_postponement_detail_migration_GetSelect(f) { + var eva_adjust_postponement_detail_migration_selectitem = []; + $.each(eva_adjust_postponement_detail_migrationTableV.rows('.selected').data(), function (key, value) { + eva_adjust_postponement_detail_migration_selectitem.push(value[f]); + }); + alert(eva_adjust_postponement_detail_migration_selectitem); +} + +//================= File Upload ========================================= + + + +//================= Multi-Selection Function ========================================= + + + diff --git a/wwwroot/js/eva_adjust_postponement_migration/eva_adjust_postponement_migration.js b/wwwroot/js/eva_adjust_postponement_migration/eva_adjust_postponement_migration.js new file mode 100644 index 0000000..48ca13a --- /dev/null +++ b/wwwroot/js/eva_adjust_postponement_migration/eva_adjust_postponement_migration.js @@ -0,0 +1,255 @@ +var eva_adjust_postponement_migration_editMode = "CREATE"; +var eva_adjust_postponement_migration_API = "/api/eva_adjust_postponement_migration/"; + +//================= Search Customizaiton ========================================= + +function eva_adjust_postponement_migration_GetSearchParameter() { + var eva_adjust_postponement_migrationSearchObject = new Object(); + eva_adjust_postponement_migrationSearchObject.fiscal_year = $("#s_eva_adjust_postponement_migration_fiscal_year").val(); + eva_adjust_postponement_migrationSearchObject.theRound = $("#s_eva_adjust_postponement_migration_theRound").val(); + + return eva_adjust_postponement_migrationSearchObject; +} + +function eva_adjust_postponement_migration_FeedDataToSearchForm(data) { + $("#s_eva_adjust_postponement_migration_fiscal_year").val(data.fiscal_year); + $("#s_eva_adjust_postponement_migration_theRound").val(data.theRound); + +} + +//================= Form Data Customizaiton ========================================= + +function eva_adjust_postponement_migration_FeedDataToForm(data) { + $("#eva_adjust_postponement_migration_id").val(data.id); + $("#eva_adjust_postponement_migration_fiscal_year").val(data.fiscal_year); + $("#eva_adjust_postponement_migration_theDate").val(formatDate(data.theDate)); + $("#eva_adjust_postponement_migration_theRound").val(data.theRound); + DropDownClearFormAndFeedWithData($("#eva_adjust_postponement_migration_create_evaluation_id"), data, "id", "performance_plan_id", "item_create_evaluation_id", data.create_evaluation_id); + $("#eva_adjust_postponement_migration_limit").val(data.limit); + $("#eva_adjust_postponement_migration_limit_frame").val(data.limit_frame); + $("#eva_adjust_postponement_migration_limit_quota").val(data.limit_quota); + $("#eva_adjust_postponement_migration_limit_frame_quota").val(data.limit_frame_quota); + $("#eva_adjust_postponement_migration_percentage").val(data.percentage); + $("#eva_adjust_postponement_migration_command_no").val(data.command_no); + DropDownClearFormAndFeedWithData($("#eva_adjust_postponement_migration_managed_by"), data, "id", "external_name", "item_managed_by", data.managed_by); + feedFileToControl(data.imported_file, data.imported_fileDisplay, "eva_adjust_postponement_migration_imported_file", "file"); + +} + +function eva_adjust_postponement_migration_GetFromForm() { + var eva_adjust_postponement_migrationObject = new Object(); + eva_adjust_postponement_migrationObject.id = $("#eva_adjust_postponement_migration_id").val(); + eva_adjust_postponement_migrationObject.fiscal_year = $("#eva_adjust_postponement_migration_fiscal_year").val(); + eva_adjust_postponement_migrationObject.theDate = getDate($("#eva_adjust_postponement_migration_theDate").val()); + eva_adjust_postponement_migrationObject.theRound = $("#eva_adjust_postponement_migration_theRound").val(); + eva_adjust_postponement_migrationObject.create_evaluation_id = $("#eva_adjust_postponement_migration_create_evaluation_id").val(); + eva_adjust_postponement_migrationObject.limit = $("#eva_adjust_postponement_migration_limit").val(); + eva_adjust_postponement_migrationObject.limit_frame = $("#eva_adjust_postponement_migration_limit_frame").val(); + eva_adjust_postponement_migrationObject.limit_quota = $("#eva_adjust_postponement_migration_limit_quota").val(); + eva_adjust_postponement_migrationObject.limit_frame_quota = $("#eva_adjust_postponement_migration_limit_frame_quota").val(); + eva_adjust_postponement_migrationObject.percentage = $("#eva_adjust_postponement_migration_percentage").val(); + eva_adjust_postponement_migrationObject.command_no = $("#eva_adjust_postponement_migration_command_no").val(); + eva_adjust_postponement_migrationObject.managed_by = $("#eva_adjust_postponement_migration_managed_by").val(); + if ($("#eva_adjust_postponement_migration_imported_file_hidURL").val() !== null) { + eva_adjust_postponement_migrationObject.imported_file = $("#eva_adjust_postponement_migration_imported_file_hidURL").val(); + } else { + eva_adjust_postponement_migrationObject.imported_file = ""; + } + + + return eva_adjust_postponement_migrationObject; +} + +function eva_adjust_postponement_migration_InitialForm(s) { + var successFunc = function (result) { + eva_adjust_postponement_migration_FeedDataToForm(result); + eva_adjust_postponement_migration_FeedDataToSearchForm(result); + if (s) { + // Incase model popup + $("#eva_adjust_postponement_migrationModel").modal("show"); + } + endLoad(); + }; + startLoad(); + AjaxGetRequest(apisite + eva_adjust_postponement_migration_API + "GetBlankItem", successFunc, AlertDanger); +} + +//================= Form Mode Setup and Flow ========================================= + +function eva_adjust_postponement_migration_GoCreate() { + // Incase model popup + eva_adjust_postponement_migration_SetCreateForm(true); + + // Incase open new page + //window_open(appsite + "/eva_adjust_postponement_migrationView/eva_adjust_postponement_migration_d"); +} + +function eva_adjust_postponement_migration_GoEdit(a) { + // Incase model popup + //eva_adjust_postponement_migration_SetEditForm(a); + + // Incase open new page + window_open(appsite + "/eva_adjust_postponement_migrationView/eva_adjust_postponement_migration_d?id=" + a); +} + +function eva_adjust_postponement_migration_SetEditForm(a) { + var successFunc = function (result) { + eva_adjust_postponement_migration_editMode = "UPDATE"; + eva_adjust_postponement_migration_FeedDataToForm(result); + $("#eva_adjust_postponement_migrationModel").modal("show"); + endLoad(); + }; + startLoad(); + AjaxGetRequest(apisite + eva_adjust_postponement_migration_API + a, successFunc, AlertDanger); +} + +function eva_adjust_postponement_migration_SetCreateForm(s) { + eva_adjust_postponement_migration_editMode = "CREATE"; + eva_adjust_postponement_migration_InitialForm(s); +} + +function eva_adjust_postponement_migration_RefreshTable() { + // Incase model popup + eva_adjust_postponement_migration_DoSearch(); + + // Incase open new page + //window.parent.eva_adjust_postponement_migration_DoSearch(); +} + +//================= Update and Delete ========================================= + +var eva_adjust_postponement_migration_customValidation = function (group) { + return ""; +}; + +function eva_adjust_postponement_migration_PutUpdate() { + if (!ValidateForm('eva_adjust_postponement_migration', eva_adjust_postponement_migration_customValidation)) { + return; + } + + var data = eva_adjust_postponement_migration_GetFromForm(); + + //Update Mode + if (eva_adjust_postponement_migration_editMode === "UPDATE") { + var successFunc1 = function (result) { + $("#eva_adjust_postponement_migrationModel").modal("hide"); + AlertSuccess(result.code + " " + result.message); + eva_adjust_postponement_migration_RefreshTable(); + endLoad(); + }; + startLoad(); + AjaxPutRequest(apisite + eva_adjust_postponement_migration_API + data.id, data, successFunc1, AlertDanger); + } + // Create mode + else { + var successFunc2 = function (result) { + $("#eva_adjust_postponement_migrationModel").modal("hide"); + AlertSuccess(result.code + " " + result.message); + eva_adjust_postponement_migration_RefreshTable(); + endLoad(); + }; + startLoad(); + AjaxPostRequest(apisite + eva_adjust_postponement_migration_API, data, successFunc2, AlertDanger); + } +} + +function eva_adjust_postponement_migration_GoDelete(a) { + if (confirm('คุณต้องการลบข้อมูล ใช่หรือไม่?')) { + var successFunc = function (result) { + $("#eva_adjust_postponement_migrationModel").modal("hide"); + AlertSuccess(result.code + " " + result.message); + eva_adjust_postponement_migration_RefreshTable(); + endLoad(); + }; + startLoad(); + AjaxDeleteRequest(apisite + eva_adjust_postponement_migration_API + a, null, successFunc, AlertDanger); + } +} + +//================= Data Table ========================================= + +var eva_adjust_postponement_migrationTableV; + +var eva_adjust_postponement_migration_setupTable = function (result) { + tmp = '"'; + eva_adjust_postponement_migrationTableV = $('#eva_adjust_postponement_migrationTable').DataTable({ + "processing": true, + "serverSide": false, + "data": result, + //"select": { + // "style": 'multi' + //}, + "columns": [ + //{ "data": "" }, + { "data": "id" }, + { "data": "fiscal_year" }, + { "data": "theRound" }, + { "data": "limit" }, + { "data": "limit_frame" }, + { "data": "limit_quota" }, + { "data": "limit_frame_quota" }, + { "data": "percentage" }, + { "data": "managed_by_external_linkage_external_name" }, + { "data": "txt_imported_file" }, + ], + "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_adjust_postponement_migration_InitiateDataTable() { + startLoad(); + var p = $.param(eva_adjust_postponement_migration_GetSearchParameter()); + AjaxGetRequest(apisite + "/api/eva_adjust_postponement_migration/GetListBySearch?" + p, eva_adjust_postponement_migration_setupTable, AlertDanger); +} + +function eva_adjust_postponement_migration_DoSearch() { + var p = $.param(eva_adjust_postponement_migration_GetSearchParameter()); + var eva_adjust_postponement_migration_reload = function (result) { + eva_adjust_postponement_migrationTableV.destroy(); + eva_adjust_postponement_migration_setupTable(result); + endLoad(); + }; + startLoad(); + AjaxGetRequest(apisite + "/api/eva_adjust_postponement_migration/GetListBySearch?" + p, eva_adjust_postponement_migration_reload, AlertDanger); +} + +function eva_adjust_postponement_migration_GetSelect(f) { + var eva_adjust_postponement_migration_selectitem = []; + $.each(eva_adjust_postponement_migrationTableV.rows('.selected').data(), function (key, value) { + eva_adjust_postponement_migration_selectitem.push(value[f]); + }); + alert(eva_adjust_postponement_migration_selectitem); +} + +//================= File Upload ========================================= + +$('#eva_adjust_postponement_migration_imported_file_file').change(function () { + UploadImage($('#eva_adjust_postponement_migration_imported_file_file'), 'eva_adjust_postponement_migration_imported_file'); +}); + + +//================= Multi-Selection Function ========================================= + + + diff --git a/wwwroot/js/eva_adjust_postponement_migration/eva_adjust_postponement_migration_d.js b/wwwroot/js/eva_adjust_postponement_migration/eva_adjust_postponement_migration_d.js new file mode 100644 index 0000000..0dd90cf --- /dev/null +++ b/wwwroot/js/eva_adjust_postponement_migration/eva_adjust_postponement_migration_d.js @@ -0,0 +1,126 @@ +var eva_adjust_postponement_migration_editMode = "CREATE"; +var eva_adjust_postponement_migration_API = "/api/eva_adjust_postponement_migration/"; + +//================= Form Data Customizaiton ========================================= + +function eva_adjust_postponement_migration_FeedDataToForm(data) { + $("#eva_adjust_postponement_migration_id").val(data.id); + $("#eva_adjust_postponement_migration_fiscal_year").val(data.fiscal_year); + $("#eva_adjust_postponement_migration_theDate").val(formatDate(data.theDate)); + $("#eva_adjust_postponement_migration_theRound").val(data.theRound); + DropDownClearFormAndFeedWithData($("#eva_adjust_postponement_migration_create_evaluation_id"), data, "id", "performance_plan_id", "item_create_evaluation_id", data.create_evaluation_id); + $("#eva_adjust_postponement_migration_limit").val(data.limit); + $("#eva_adjust_postponement_migration_limit_frame").val(data.limit_frame); + $("#eva_adjust_postponement_migration_limit_quota").val(data.limit_quota); + $("#eva_adjust_postponement_migration_limit_frame_quota").val(data.limit_frame_quota); + $("#eva_adjust_postponement_migration_percentage").val(data.percentage); + $("#eva_adjust_postponement_migration_command_no").val(data.command_no); + DropDownClearFormAndFeedWithData($("#eva_adjust_postponement_migration_managed_by"), data, "id", "fullname", "item_managed_by", data.managed_by); + feedFileToControl(data.imported_file, data.imported_fileDisplay, "eva_adjust_postponement_migration_imported_file", "file"); + //console.log(data.item_managed_by); +} + +function eva_adjust_postponement_migration_GetFromForm() { + var eva_adjust_postponement_migrationObject = new Object(); + eva_adjust_postponement_migrationObject.id = $("#eva_adjust_postponement_migration_id").val(); + eva_adjust_postponement_migrationObject.fiscal_year = $("#eva_adjust_postponement_migration_fiscal_year").val(); + eva_adjust_postponement_migrationObject.theDate = getDate($("#eva_adjust_postponement_migration_theDate").val()); + eva_adjust_postponement_migrationObject.theRound = $("#eva_adjust_postponement_migration_theRound").val(); + eva_adjust_postponement_migrationObject.create_evaluation_id = $("#eva_adjust_postponement_migration_create_evaluation_id").val(); + eva_adjust_postponement_migrationObject.limit = $("#eva_adjust_postponement_migration_limit").val(); + eva_adjust_postponement_migrationObject.limit_frame = $("#eva_adjust_postponement_migration_limit_frame").val(); + eva_adjust_postponement_migrationObject.limit_quota = $("#eva_adjust_postponement_migration_limit_quota").val(); + eva_adjust_postponement_migrationObject.limit_frame_quota = $("#eva_adjust_postponement_migration_limit_frame_quota").val(); + eva_adjust_postponement_migrationObject.percentage = $("#eva_adjust_postponement_migration_percentage").val(); + eva_adjust_postponement_migrationObject.command_no = $("#eva_adjust_postponement_migration_command_no").val(); + eva_adjust_postponement_migrationObject.managed_by = $("#eva_adjust_postponement_migration_managed_by").val(); + if ($("#eva_adjust_postponement_migration_imported_file_hidURL").val() !== null) { + eva_adjust_postponement_migrationObject.imported_file = $("#eva_adjust_postponement_migration_imported_file_hidURL").val(); + } else { + eva_adjust_postponement_migrationObject.imported_file = ""; + } + + + return eva_adjust_postponement_migrationObject; +} + +function eva_adjust_postponement_migration_InitialForm() { + var successFunc = function (result) { + eva_adjust_postponement_migration_FeedDataToForm(result); + endLoad(); + }; + startLoad(); + AjaxGetRequest(apisite + eva_adjust_postponement_migration_API + "GetBlankItem", successFunc, AlertDanger); +} + +//================= Form Mode Setup and Flow ========================================= + +function eva_adjust_postponement_migration_SetEditForm(a) { + var successFunc = function (result) { + eva_adjust_postponement_migration_editMode = "UPDATE"; + eva_adjust_postponement_migration_FeedDataToForm(result); + endLoad(); + }; + startLoad(); + AjaxGetRequest(apisite + eva_adjust_postponement_migration_API + a, successFunc, AlertDanger); +} + +function eva_adjust_postponement_migration_SetCreateForm() { + eva_adjust_postponement_migration_editMode = "CREATE"; + eva_adjust_postponement_migration_InitialForm(); +} + +//================= Update and Delete ========================================= + +var eva_adjust_postponement_migration_customValidation = function (group) { + return ""; +}; + +function eva_adjust_postponement_migration_PutUpdate() { + if (!ValidateForm('eva_adjust_postponement_migration', eva_adjust_postponement_migration_customValidation)) { + return; + } + var data = eva_adjust_postponement_migration_GetFromForm(); + + //Update Mode + if (eva_adjust_postponement_migration_editMode === "UPDATE") { + var successFunc1 = function (result) { + AlertSuccess(result.code + " " + result.message); + endLoad(); + }; + startLoad(); + AjaxPutRequest(apisite + eva_adjust_postponement_migration_API + data.id, data, successFunc1, AlertDanger); + } + // Create mode + else { + var successFunc2 = function (result) { + AlertSuccess(result.code + " " + result.message); + endLoad(); + }; + startLoad(); + AjaxPostRequest(apisite + eva_adjust_postponement_migration_API, data, successFunc2, AlertDanger); + } +} + +function eva_adjust_postponement_migration_GoDelete(a) { + if (confirm('คุณต้องการลบ ' + a + ' ใช่หรือไม่?')) { + var successFunc = function (result) { + AlertSuccess(result.code + " " + result.message); + eva_adjust_postponement_migration_RefreshTable(); + endLoad(); + }; + startLoad(); + AjaxDeleteRequest(apisite + eva_adjust_postponement_migration_API + a, null, successFunc, AlertDanger); + } +} + +//================= File Upload ========================================= + +$('#eva_adjust_postponement_migration_imported_file_file').change(function () { + UploadImage($('#eva_adjust_postponement_migration_imported_file_file'), 'eva_adjust_postponement_migration_imported_file'); +}); + + +//================= Multi-Selection Function ========================================= + +