diff --git a/ApiControllers/eva_self_reviewControllers.cs b/ApiControllers/eva_self_reviewControllers.cs new file mode 100644 index 0000000..b19bf3e --- /dev/null +++ b/ApiControllers/eva_self_reviewControllers.cs @@ -0,0 +1,213 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Authorization; +using Microsoft.Extensions.Logging; +using TTSW.Controllers; +using TTSW.EF; +using TTSW.Utils; +using TTSW.Constant; +using TTSW.Common; +using TodoAPI2.Models; +using System.Data; +using Microsoft.Extensions.Configuration; +using System.IO; +using System.Net; + +namespace TodoAPI2.Controllers +{ + //[Authorize] + [Produces("application/json")] + [Route("api/eva_self_review")] + public class eva_self_reviewController : BaseController + { + #region Private Variables + private ILogger _logger; + private Ieva_self_reviewService _repository; + private IConfiguration Configuration { get; set; } + #endregion + + #region Properties + + #endregion + + /// + /// Default constructure for dependency injection + /// + /// + /// + /// + public eva_self_reviewController(ILogger logger, Ieva_self_reviewService repository, IConfiguration configuration) + { + _logger = logger; + _repository = repository; + Configuration = configuration; + } + + /// + /// Get specific item by id + /// + /// + /// + /// Return Get specific item by id + /// Returns the item + /// Error Occurred + [HttpGet("{id}")] + [ProducesResponseType(typeof(eva_self_reviewWithSelectionViewModel), 200)] + [ProducesResponseType(400)] + [ProducesResponseType(500)] + //[ValidateAntiForgeryToken] + public IActionResult Get(int id) + { + try + { + if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); + var result = _repository.GetWithSelection(id); + + return Ok(result); + } + catch (Exception ex) + { + _logger.LogCritical($"Exception in IActionResult Get.", ex); + return StatusCode(500, $"{ex.Message}"); + } + } + + /// + /// Get Blank Item + /// + /// + /// + /// Return a blank item + /// Returns the item + /// Error Occurred + [HttpGet("GetBlankItem")] + [ProducesResponseType(typeof(eva_self_reviewWithSelectionViewModel), 200)] + [ProducesResponseType(400)] + [ProducesResponseType(500)] + //[ValidateAntiForgeryToken] + public IActionResult GetBlankItem() + { + try + { + if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); + var result = _repository.GetBlankItem(); + + return Ok(result); + } + catch (Exception ex) + { + _logger.LogCritical($"Exception in IActionResult GetBlankItem.", ex); + return StatusCode(500, $"{ex.Message}"); + } + } + + /// + /// Get list items by adjust_postponement_id + /// + /// + /// + /// Return list of items by specifced keyword + /// Returns the item + /// Error Occurred + [HttpGet("")] + [ProducesResponseType(typeof(List), 200)] + [ProducesResponseType(400)] + [ProducesResponseType(500)] + //[ValidateAntiForgeryToken] + public IActionResult GetList(int? adjust_postponement_id) + { + try + { + if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); + return Ok(_repository.GetListByadjust_postponement_id(adjust_postponement_id)); + } + catch (Exception ex) + { + _logger.LogCritical($"Exception in IActionResult GetList.", ex); + return StatusCode(500, $"{ex.Message}"); + } + } + + /// + /// Get list items by search + /// + /// + /// + /// Return list of items by specifced keyword + /// Returns the item + /// Error Occurred + [HttpGet("GetListBySearch")] + [ProducesResponseType(typeof(List), 200)] + [ProducesResponseType(400)] + [ProducesResponseType(500)] + //[ValidateAntiForgeryToken] + public IActionResult GetListBySearch(eva_self_reviewSearchModel model) + { + try + { + if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); + + model.employee_id = Convert.ToInt32(Request.Cookies["emp_id"]); + + return Ok(_repository.GetListBySearch(model)); + } + catch (Exception ex) + { + _logger.LogCritical($"Exception in IActionResult GetListBySearch.", ex); + return StatusCode(500, $"{ex.Message}"); + } + } + + /// + /// Download Report + /// + /// + /// + /// Return list of items by specifced keyword + /// Returns the item + /// Error Occurred + [HttpGet("eva_self_review_report")] + [ProducesResponseType(typeof(FileStreamResult), 200)] + [ProducesResponseType(400)] + [ProducesResponseType(500)] + //[ValidateAntiForgeryToken] + public IActionResult eva_self_review_report(eva_self_reviewReportRequestModel model) + { + try + { + if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); + var httpclient = new WebClient(); + string mainurl = MyHelper.GetConfig(Configuration, "JasperReportServer:MainURL"); + string reportsite = MyHelper.GetConfig(Configuration, "JasperReportServer:reportsite"); + string username = MyHelper.GetConfig(Configuration, "JasperReportServer:username"); + string password = MyHelper.GetConfig(Configuration, "JasperReportServer:password"); + + string url = $"{mainurl}{reportsite}/xxใส่ชื่อรายงานตรงนี้xx.{model.filetype}?{MyHelper.GetParameterForJasperReport(model)}&j_username={username}&j_password={password}"; + + if (model.filetype == "xlsx") + { + url += "&ignorePagination=true"; + } + + var data = httpclient.DownloadData(url); + var stream = new MemoryStream(data); + + return File(stream, model.contentType); + } + catch (Exception ex) + { + _logger.LogCritical($"Exception while GetReport.", ex); + return StatusCode(500, $"{ex.Message}"); + } + } + + + + + + } +} diff --git a/EXCEL/eva_adjust_postponement_detail@eva_self_review.xlsx b/EXCEL/eva_adjust_postponement_detail@eva_self_review.xlsx new file mode 100644 index 0000000..9f5e639 Binary files /dev/null and b/EXCEL/eva_adjust_postponement_detail@eva_self_review.xlsx differ diff --git a/Models/eva_self_review/Ieva_self_reviewService.cs b/Models/eva_self_review/Ieva_self_reviewService.cs new file mode 100644 index 0000000..d463137 --- /dev/null +++ b/Models/eva_self_review/Ieva_self_reviewService.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using TTSW.EF; +using TTSW.Utils; +using TTSW.Constant; +using TTSW.Common; +using TodoAPI2.Models; + +namespace TodoAPI2.Models +{ + public interface Ieva_self_reviewService : IBaseService + { + new eva_self_reviewViewModel Insert(eva_self_reviewInputModel model); + new eva_self_reviewViewModel Update(int id, eva_self_reviewInputModel model); + List GetListByadjust_postponement_id(int? adjust_postponement_id); + List GetListBySearch(eva_self_reviewSearchModel model); + + string UpdateMultiple(List model); + eva_self_reviewWithSelectionViewModel GetWithSelection(int id); + eva_self_reviewWithSelectionViewModel GetBlankItem(); + + void RefreshAutoFieldOfAllData(); + eva_adjust_postponement_detailEntity GetEntity(int id); + DataContext GetContext(); + + + + } +} + diff --git a/Models/eva_self_review/eva_self_reviewInputModel.cs b/Models/eva_self_review/eva_self_reviewInputModel.cs new file mode 100644 index 0000000..233895b --- /dev/null +++ b/Models/eva_self_review/eva_self_reviewInputModel.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Threading.Tasks; +using TTSW.EF; +using TTSW.Utils; +using TTSW.Constant; +using TTSW.Common; + +namespace TodoAPI2.Models +{ + public class eva_self_reviewInputModel + { + + public int? id { get; set; } + + public int? adjust_postponement_id { get; set; } + + public int? adjust_postponement_quota_id { get; set; } + + public int? employee_id { get; set; } + + public int? eva_year { get; set; } + + public int? eva_no { get; set; } + + public string active_mode { get; set; } + } +} + diff --git a/Models/eva_self_review/eva_self_reviewReportRequestModel.cs b/Models/eva_self_review/eva_self_reviewReportRequestModel.cs new file mode 100644 index 0000000..1d2ee46 --- /dev/null +++ b/Models/eva_self_review/eva_self_reviewReportRequestModel.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Threading.Tasks; +using TTSW.EF; +using TTSW.Utils; +using TTSW.Constant; +using TTSW.Common; + +namespace TodoAPI2.Models +{ + public class eva_self_reviewReportRequestModel : eva_self_reviewSearchModel + { + public string filetype { get; set; } + + public string contentType { get { return MyHelper.GetContentType(filetype); } } + } +} + diff --git a/Models/eva_self_review/eva_self_reviewSearchModel.cs b/Models/eva_self_review/eva_self_reviewSearchModel.cs new file mode 100644 index 0000000..e448fdf --- /dev/null +++ b/Models/eva_self_review/eva_self_reviewSearchModel.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Threading.Tasks; +using TTSW.EF; +using TTSW.Utils; +using TTSW.Constant; +using TTSW.Common; + +namespace TodoAPI2.Models +{ + public class eva_self_reviewSearchModel + { + + public int id { get; set; } + + public int? adjust_postponement_id { get; set; } + + public int? adjust_postponement_quota_id { get; set; } + + public int? employee_id { get; set; } + + public int? eva_year { get; set; } + + public int? eva_no { get; set; } + + } +} + diff --git a/Models/eva_self_review/eva_self_reviewService.cs b/Models/eva_self_review/eva_self_reviewService.cs new file mode 100644 index 0000000..5c91dbd --- /dev/null +++ b/Models/eva_self_review/eva_self_reviewService.cs @@ -0,0 +1,353 @@ +using AutoMapper; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using TTSW.EF; +using TTSW.Utils; +using TTSW.Constant; +using TTSW.Common; +using TodoAPI2.Models; +using System.IO; +using System.Web; +using System.Net; +using TTSW.Configure; +using Microsoft.Extensions.Options; +using System.Data; + +namespace TodoAPI2.Models +{ + public class eva_self_reviewService : Ieva_self_reviewService + { + private IBaseRepository2 _repository; + private IMyDatabase db; + private Iexternal_linkageService ext; + + public eva_self_reviewService(IBaseRepository2 repository, IMyDatabase mydb, Iexternal_linkageService inext) + { + _repository = repository; + db = mydb; + ext = inext; + } + + #region Private Functions + private eva_adjust_postponement_detailEntity GetEntity(eva_self_reviewInputModel model) + { + return Mapper.Map(model); + } + private List GetEntityList(List models) + { + return Mapper.Map>(models); + } + private eva_self_reviewViewModel GetDto(eva_adjust_postponement_detailEntity entity) + { + return Mapper.Map(entity); + } + private List GetDtoList(List entities) + { + return Mapper.Map>(entities); + } + + #endregion + + #region Public Functions + #region Query Functions + + public eva_self_reviewViewModel Get(int id) + { + var entity = _repository.Get(id); + + return GetDto(entity); + } + + public eva_adjust_postponement_detailEntity GetEntity(int id) + { + var entity = _repository.Get(id); + + return entity; + } + + public DataContext GetContext() + { + return _repository.Context; + } + + private List fill_list_number(List input) + { + var result = new List(); + foreach(var i in input) + { + var n = new external_linkageViewModel(); + n.external_id = i.Value; + n.external_name = i.ToString(); + result.Add(n); + } + return result; + } + + public eva_self_reviewWithSelectionViewModel GetWithSelection(int id) + { + var entity = _repository.Get(id); + var i = Mapper.Map(entity); + + var temp = (from x in _repository.Context.eva_adjust_postponement + select x.fiscal_year).Distinct().OrderBy(x => x.Value).ToList(); + + i.item_eva_year = fill_list_number((from x in _repository.Context.eva_adjust_postponement + select x.fiscal_year).Distinct().OrderBy(x => x.Value).ToList()); + i.item_eva_no = fill_list_number((from x in _repository.Context.eva_adjust_postponement + select x.theRound).Distinct().OrderBy(x => x.Value).ToList()); + + return i; + } + public eva_self_reviewWithSelectionViewModel GetBlankItem() + { + var i = new eva_self_reviewWithSelectionViewModel(); + i.item_eva_year = fill_list_number((from x in _repository.Context.eva_adjust_postponement + select x.fiscal_year).Distinct().OrderBy(x => x.Value).ToList()); + i.item_eva_no = fill_list_number((from x in _repository.Context.eva_adjust_postponement + select x.theRound).Distinct().OrderBy(x => x.Value).ToList()); + + + return i; + } + + public List GetListByadjust_postponement_id(int? adjust_postponement_id) + { + var model = new eva_self_reviewSearchModel(); + model.adjust_postponement_id = adjust_postponement_id; + return GetListBySearch(model); + } + + public List GetListBySearch(eva_self_reviewSearchModel model) + { + var data = ( + from m_eva_self_review in _repository.Context.eva_adjust_postponement_detail + + join fk_eva_adjust_postponement1 in _repository.Context.eva_adjust_postponement on m_eva_self_review.adjust_postponement_id equals fk_eva_adjust_postponement1.id + into eva_adjust_postponementResult1 + from fk_eva_adjust_postponementResult1 in eva_adjust_postponementResult1.DefaultIfEmpty() + + join fk_eva_adjust_postponement2 in _repository.Context.eva_adjust_postponement on m_eva_self_review.adjust_postponement_quota_id equals fk_eva_adjust_postponement2.id + into eva_adjust_postponementResult2 + from fk_eva_adjust_postponementResult2 in eva_adjust_postponementResult2.DefaultIfEmpty() + + //join fk_external_linkage4 in ext.GetDemoItem() on m_eva_self_review.eva_year equals fk_external_linkage4.id + //into external_linkageResult4 + //from fk_external_linkageResult4 in external_linkageResult4.DefaultIfEmpty() + + //join fk_external_linkage5 in ext.GetDemoItem() on m_eva_self_review.eva_no equals fk_external_linkage5.id + //into external_linkageResult5 + //from fk_external_linkageResult5 in external_linkageResult5.DefaultIfEmpty() + + + where + (model.employee_id.HasValue && m_eva_self_review.employee_id == model.employee_id) + && (!model.eva_year.HasValue || fk_eva_adjust_postponementResult1.fiscal_year == model.eva_year) + && (!model.eva_no.HasValue || fk_eva_adjust_postponementResult1.theRound == model.eva_no) + + + orderby m_eva_self_review.created descending + select new eva_self_reviewViewModel() + { + id = m_eva_self_review.id, + adjust_postponement_id = m_eva_self_review.adjust_postponement_id, + adjust_postponement_quota_id = m_eva_self_review.adjust_postponement_quota_id, + employee_id = m_eva_self_review.employee_id, + eva_year = fk_eva_adjust_postponementResult1.fiscal_year, + eva_no = fk_eva_adjust_postponementResult1.theRound, + + adjust_postponement_id_eva_adjust_postponement_fiscal_year = fk_eva_adjust_postponementResult1.fiscal_year, + adjust_postponement_quota_id_eva_adjust_postponement_fiscal_year = fk_eva_adjust_postponementResult2.fiscal_year, + eva_year_external_linkage_external_name = fk_eva_adjust_postponementResult1.fiscal_year.ToString(), + eva_no_external_linkage_external_name = fk_eva_adjust_postponementResult1.theRound.ToString(), + + isActive = m_eva_self_review.isActive, + Created = m_eva_self_review.created, + Updated = m_eva_self_review.updated + } + ).OrderBy(x => x.eva_year * 10 + x.eva_no).ToList(); + + return data; + } + + #endregion + + #region Manipulation Functions + + + public int GetNewPrimaryKey() + { + int? newkey = 0; + + var x = (from i in _repository.Context.eva_adjust_postponement_detail + orderby i.id descending + select i).Take(1).ToList(); + + if(x.Count > 0) + { + newkey = x[0].id + 1; + } + + return newkey.Value; + } + + + public eva_self_reviewViewModel Insert(eva_self_reviewInputModel model) + { + // var entity = GetEntity(model); + // entity.id = GetNewPrimaryKey(); + + + //entity.SetAutoField(_repository.Context); + + // if (is_force_save) + // { + // var inserted = _repository.Insert(entity); + // entity.DoAfterInsertUpdate(_repository.Context); + // return Get(inserted.id); + // } + // else + // { + // _repository.InsertWithoutCommit(entity); + // entity.DoAfterInsertUpdate(_repository.Context); + // return Mapper.Map(entity); + // } + + return null; + } + + public eva_self_reviewViewModel Update(int id, eva_self_reviewInputModel model) + { + // var existingEntity = _repository.Get(id); + // if (existingEntity != null) + // { + // existingEntity.adjust_postponement_id = model.adjust_postponement_id; + // existingEntity.adjust_postponement_quota_id = model.adjust_postponement_quota_id; + // existingEntity.employee_id = model.employee_id; + // existingEntity.eva_year = model.eva_year; + // existingEntity.eva_no = model.eva_no; + + //existingEntity.SetAutoField(_repository.Context); + + // if (is_force_save) + // { + // var updated = _repository.Update(id, existingEntity); + // existingEntity.DoAfterInsertUpdate(_repository.Context); + // return Get(updated.id); + // } + // else + // { + // _repository.UpdateWithoutCommit(id, existingEntity); + // existingEntity.DoAfterInsertUpdate(_repository.Context); + // return Mapper.Map(existingEntity); + // } + // } + // else + // throw new NotificationException("No data to update"); + + return null; + } + + public string UpdateMultiple(List model) + { + // foreach(var i in model) + // { + // if (i.active_mode == "1" && i.id.HasValue) // update + // { + // var existingEntity = _repository.Get(i.id.Value); + // if (existingEntity != null) + // { + // existingEntity.adjust_postponement_id = i.adjust_postponement_id; + // existingEntity.adjust_postponement_quota_id = i.adjust_postponement_quota_id; + // existingEntity.employee_id = i.employee_id; + // existingEntity.eva_year = i.eva_year; + // existingEntity.eva_no = i.eva_no; + + // existingEntity.SetAutoField(_repository.Context); + // _repository.UpdateWithoutCommit(i.id.Value, existingEntity); + // } + // } + // else if (i.active_mode == "1" && !i.id.HasValue) // add + // { + // var entity = GetEntity(i); + // entity.id = GetNewPrimaryKey(); + //entity.SetAutoField(_repository.Context); + // _repository.InsertWithoutCommit(entity); + // } + // else if (i.active_mode == "0" && i.id.HasValue) // remove + // { + // _repository.DeleteWithoutCommit(i.id.Value); + // } + // else if (i.active_mode == "0" && !i.id.HasValue) + // { + // // nothing to do + // } + // } + // if (is_force_save) + // { + // _repository.Context.SaveChanges(); + // } + + // return model.Count().ToString(); + + return null; + } + + public eva_self_reviewViewModel SetAsActive(int id) + { + var updated = _repository.SetAsActive(id); + + return Get(updated.id); + } + public eva_self_reviewViewModel SetAsInactive(int id) + { + var updated = _repository.SetAsInActive(id); + + return Get(updated.id); + } + public void Delete(int id) + { + _repository.Delete(id); + + return; + } + + public void RefreshAutoFieldOfAllData() + { + //var all_items = from i in _repository.Context.eva_adjust_postponement_detail + // select i; + //foreach (var item in all_items) + //{ + // item.SetAutoField(_repository.Context); + //} + //_repository.Context.SaveChanges(); + } + + private Dictionary GetLookupForLog() + { + var i = new Dictionary(); + + + i.Add("adjust_postponement_id", "รหัสอ้างอิงตาราง eva_adjust_postponement"); + i.Add("adjust_postponement_id_eva_adjust_postponement_fiscal_year", "รหัสอ้างอิงตาราง eva_adjust_postponement"); + i.Add("adjust_postponement_quota_id", "รหัสอ้างอิงตาราง eva_adjust_postponement"); + i.Add("adjust_postponement_quota_id_eva_adjust_postponement_fiscal_year", "รหัสอ้างอิงตาราง eva_adjust_postponement"); + i.Add("employee_id", "ผู้รับการประเมิน"); + i.Add("eva_year", "ปีงบประมาณ"); + i.Add("eva_year_external_linkage_external_name", "ปีงบประมาณ"); + i.Add("eva_no", "รอบการประเมิน"); + i.Add("eva_no_external_linkage_external_name", "รอบการประเมิน"); + + return i; + } + + #endregion + + #region Match Item + + #endregion + + #endregion + } +} \ No newline at end of file diff --git a/Models/eva_self_review/eva_self_reviewViewModel.cs b/Models/eva_self_review/eva_self_reviewViewModel.cs new file mode 100644 index 0000000..cbfe5fb --- /dev/null +++ b/Models/eva_self_review/eva_self_reviewViewModel.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Threading.Tasks; +using TTSW.EF; +using TTSW.Utils; +using TTSW.Constant; +using TTSW.Common; + +namespace TodoAPI2.Models +{ + public class eva_self_reviewViewModel : BaseViewModel2 + { + + public int? adjust_postponement_id { get; set; } + + public int? adjust_postponement_quota_id { get; set; } + + public int? employee_id { get; set; } + + public int? eva_year { get; set; } + + public int? eva_no { get; set; } + + public int? adjust_postponement_id_eva_adjust_postponement_fiscal_year { get; set; } + public int? adjust_postponement_quota_id_eva_adjust_postponement_fiscal_year { get; set; } + public string eva_year_external_linkage_external_name { get; set; } + public string eva_no_external_linkage_external_name { get; set; } + + } +} \ No newline at end of file diff --git a/Models/eva_self_review/eva_self_reviewWithSelectionViewModel.cs b/Models/eva_self_review/eva_self_reviewWithSelectionViewModel.cs new file mode 100644 index 0000000..f09887c --- /dev/null +++ b/Models/eva_self_review/eva_self_reviewWithSelectionViewModel.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace TodoAPI2.Models +{ + public class eva_self_reviewWithSelectionViewModel: eva_self_reviewViewModel + { + public List item_eva_year { get; set; } + public List item_eva_no { get; set; } + + } +} \ No newline at end of file diff --git a/Startup.cs b/Startup.cs index c40b150..1f18d9b 100644 --- a/Startup.cs +++ b/Startup.cs @@ -299,6 +299,8 @@ namespace Test01 services.AddScoped(); + services.AddScoped(); + #endregion services.TryAddSingleton(); @@ -534,6 +536,10 @@ namespace Test01 cfg.CreateMap(); cfg.CreateMap(); + cfg.CreateMap(); + cfg.CreateMap(); + cfg.CreateMap(); + }); #endregion diff --git a/ViewControllers/eva_self_reviewViewControllers.cs b/ViewControllers/eva_self_reviewViewControllers.cs new file mode 100644 index 0000000..a3b8155 --- /dev/null +++ b/ViewControllers/eva_self_reviewViewControllers.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using TodoAPI2.Models; +using STAFF_API.Models; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Configuration; +using TodoAPI2.Controllers; + +namespace TodoAPI2.Controllers +{ + public class eva_self_reviewViewController : Controller + { + private ILogger _logger; + private Ieva_self_reviewService _repository; + private IConfiguration Configuration { get; set; } + + /// + /// Default constructure for dependency injection + /// + /// + /// + /// + public eva_self_reviewViewController(ILogger logger, Ieva_self_reviewService repository, IConfiguration configuration) + { + _logger = logger; + _repository = repository; + Configuration = configuration; + } + + public IActionResult eva_self_review() + { + if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); // Or UnauthorizedView + return View(); + } + + public IActionResult eva_self_review_d() + { + if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); // Or UnauthorizedView + return View(); + } + + //public IActionResult eva_self_review_report() + //{ + // if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); // Or UnauthorizedView + // return View(); + //} + + //public IActionResult eva_self_review_inline() + //{ + // if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); // Or UnauthorizedView + // return View(); + //} + + [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] + public IActionResult Error() + { + return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); + } + } +} + + diff --git a/Views/eva_self_reviewView/eva_self_review.cshtml b/Views/eva_self_reviewView/eva_self_review.cshtml new file mode 100644 index 0000000..bec2a5b --- /dev/null +++ b/Views/eva_self_reviewView/eva_self_review.cshtml @@ -0,0 +1,72 @@ +@using Microsoft.Extensions.Configuration +@inject IConfiguration Configuration +@{ + ViewData["Title"] = "eva_self_review"; +} + + +
+
+
+ @Configuration["SiteInformation:modulename"] +
+
+
+ +
+
+ +
+
แบบแจ้งเตือนผลการเลื่อนเงินเดือน
+
+
+ + + + + +
+ + +
+ +
+ + +
+ +
+ +
+ +
+
+ + + + + + + + + + + +
เครื่องมือ
+
+ +@section FooterPlaceHolder{ + + +} + diff --git a/tb320eva.csproj b/tb320eva.csproj index 8a727a6..5d602e9 100644 --- a/tb320eva.csproj +++ b/tb320eva.csproj @@ -71,9 +71,11 @@ + + Always diff --git a/tb320eva.xml b/tb320eva.xml index 210beaa..22de658 100644 --- a/tb320eva.xml +++ b/tb320eva.xml @@ -3446,6 +3446,64 @@ If the model is invalid Error Occurred + + + Default constructure for dependency injection + + + + + + + + Get specific item by id + + + + Return Get specific item by id + Returns the item + Error Occurred + + + + Get Blank Item + + + + Return a blank item + Returns the item + Error Occurred + + + + Get list items by adjust_postponement_id + + + + Return list of items by specifced keyword + Returns the item + Error Occurred + + + + Get list items by search + + + + Return list of items by specifced keyword + Returns the item + Error Occurred + + + + Download Report + + + + Return list of items by specifced keyword + Returns the item + Error Occurred + Default constructure for dependency injection @@ -4151,6 +4209,14 @@ + + + Default constructure for dependency injection + + + + + Default constructure for dependency injection diff --git a/wwwroot/js/eva_self_review/eva_self_review.js b/wwwroot/js/eva_self_review/eva_self_review.js new file mode 100644 index 0000000..c70de4d --- /dev/null +++ b/wwwroot/js/eva_self_review/eva_self_review.js @@ -0,0 +1,235 @@ +var eva_self_review_editMode = "CREATE"; +var eva_self_review_API = "/api/eva_self_review/"; + +//================= Search Customizaiton ========================================= + +function eva_self_review_GetSearchParameter() { + var eva_self_reviewSearchObject = new Object(); + eva_self_reviewSearchObject.adjust_postponement_id = $("#s_eva_self_review_adjust_postponement_id").val(); + eva_self_reviewSearchObject.adjust_postponement_quota_id = $("#s_eva_self_review_adjust_postponement_quota_id").val(); + eva_self_reviewSearchObject.employee_id = $("#s_eva_self_review_employee_id").val(); + eva_self_reviewSearchObject.eva_year = $("#s_eva_self_review_eva_year").val(); + eva_self_reviewSearchObject.eva_no = $("#s_eva_self_review_eva_no").val(); + + return eva_self_reviewSearchObject; +} + +function eva_self_review_FeedDataToSearchForm(data) { + $("#s_eva_self_review_adjust_postponement_id").val(data.adjust_postponement_id); + $("#s_eva_self_review_adjust_postponement_quota_id").val(data.adjust_postponement_quota_id); + $("#s_eva_self_review_employee_id").val(data.employee_id); + DropDownClearFormAndFeedWithData($("#s_eva_self_review_eva_year"), data, "id", "external_name", "item_eva_year", data.eva_year); + DropDownClearFormAndFeedWithData($("#s_eva_self_review_eva_no"), data, "id", "external_name", "item_eva_no", data.eva_no); + console.log(data); +} + +//================= Form Data Customizaiton ========================================= + +function eva_self_review_FeedDataToForm(data) { + $("#eva_self_review_id").val(data.id); + $("#eva_self_review_adjust_postponement_id").val(data.adjust_postponement_id); + $("#eva_self_review_adjust_postponement_quota_id").val(data.adjust_postponement_quota_id); + $("#eva_self_review_employee_id").val(data.employee_id); + DropDownClearFormAndFeedWithData($("#eva_self_review_eva_year"), data, "id", "external_name", "item_eva_year", data.eva_year); + DropDownClearFormAndFeedWithData($("#eva_self_review_eva_no"), data, "id", "external_name", "item_eva_no", data.eva_no); + +} + +function eva_self_review_GetFromForm() { + var eva_self_reviewObject = new Object(); + eva_self_reviewObject.id = $("#eva_self_review_id").val(); + eva_self_reviewObject.adjust_postponement_id = $("#eva_self_review_adjust_postponement_id").val(); + eva_self_reviewObject.adjust_postponement_quota_id = $("#eva_self_review_adjust_postponement_quota_id").val(); + eva_self_reviewObject.employee_id = $("#eva_self_review_employee_id").val(); + eva_self_reviewObject.eva_year = $("#eva_self_review_eva_year").val(); + eva_self_reviewObject.eva_no = $("#eva_self_review_eva_no").val(); + + + return eva_self_reviewObject; +} + +function eva_self_review_InitialForm(s) { + var successFunc = function (result) { + eva_self_review_FeedDataToForm(result); + eva_self_review_FeedDataToSearchForm(result); + if (s) { + // Incase model popup + $("#eva_self_reviewModel").modal("show"); + } + endLoad(); + }; + startLoad(); + AjaxGetRequest(apisite + eva_self_review_API + "GetBlankItem", successFunc, AlertDanger); +} + +//================= Form Mode Setup and Flow ========================================= + +function eva_self_review_GoCreate() { + // Incase model popup + eva_self_review_SetCreateForm(true); + + // Incase open new page + //window_open(appsite + "/eva_self_reviewView/eva_self_review_d"); +} + +function eva_self_review_GoEdit(a) { + // Incase model popup + //eva_self_review_SetEditForm(a); + + // Incase open new page + //window_open(appsite + "/eva_self_reviewView/eva_self_review_d?id=" + a); + + alert(a); +} + +function eva_self_review_SetEditForm(a) { + var successFunc = function (result) { + eva_self_review_editMode = "UPDATE"; + eva_self_review_FeedDataToForm(result); + $("#eva_self_reviewModel").modal("show"); + endLoad(); + }; + startLoad(); + AjaxGetRequest(apisite + eva_self_review_API + a, successFunc, AlertDanger); +} + +function eva_self_review_SetCreateForm(s) { + eva_self_review_editMode = "CREATE"; + eva_self_review_InitialForm(s); +} + +function eva_self_review_RefreshTable() { + // Incase model popup + eva_self_review_DoSearch(); + + // Incase open new page + //window.parent.eva_self_review_DoSearch(); +} + +//================= Update and Delete ========================================= + +var eva_self_review_customValidation = function (group) { + return ""; +}; + +function eva_self_review_PutUpdate() { + if (!ValidateForm('eva_self_review', eva_self_review_customValidation)) { + return; + } + + var data = eva_self_review_GetFromForm(); + + //Update Mode + if (eva_self_review_editMode === "UPDATE") { + var successFunc1 = function (result) { + $("#eva_self_reviewModel").modal("hide"); + AlertSuccess(result.code + " " + result.message); + eva_self_review_RefreshTable(); + endLoad(); + }; + startLoad(); + AjaxPutRequest(apisite + eva_self_review_API + data.id, data, successFunc1, AlertDanger); + } + // Create mode + else { + var successFunc2 = function (result) { + $("#eva_self_reviewModel").modal("hide"); + AlertSuccess(result.code + " " + result.message); + eva_self_review_RefreshTable(); + endLoad(); + }; + startLoad(); + AjaxPostRequest(apisite + eva_self_review_API, data, successFunc2, AlertDanger); + } +} + +function eva_self_review_GoDelete(a) { + if (confirm('คุณต้องการลบข้อมูล ใช่หรือไม่?')) { + var successFunc = function (result) { + $("#eva_self_reviewModel").modal("hide"); + AlertSuccess(result.code + " " + result.message); + eva_self_review_RefreshTable(); + endLoad(); + }; + startLoad(); + AjaxDeleteRequest(apisite + eva_self_review_API + a, null, successFunc, AlertDanger); + } +} + +//================= Data Table ========================================= + +var eva_self_reviewTableV; + +var eva_self_review_setupTable = function (result) { + tmp = '"'; + eva_self_reviewTableV = $('#eva_self_reviewTable').DataTable({ + "processing": true, + "serverSide": false, + "data": result, + //"select": { + // "style": 'multi' + //}, + "columns": [ + //{ "data": "" }, + { "data": "id" }, + { "data": "eva_year_external_linkage_external_name" }, + { "data": "eva_no_external_linkage_external_name" }, + ], + "columnDefs": [ + { + "targets": 0, //1, + "data": "id", + "render": function (data, type, row, meta) { + return " "; + } + }, + //{ + // targets: 0, + // data: "", + // defaultContent: '', + // orderable: false, + // className: 'select-checkbox' + //} + ], + "language": { + "url": appsite + "/DataTables-1.10.16/thai.json" + }, + "paging": true, + "searching": false + }); + endLoad(); +}; + +function eva_self_review_InitiateDataTable() { + startLoad(); + var p = $.param(eva_self_review_GetSearchParameter()); + AjaxGetRequest(apisite + "/api/eva_self_review/GetListBySearch?" + p, eva_self_review_setupTable, AlertDanger); +} + +function eva_self_review_DoSearch() { + var p = $.param(eva_self_review_GetSearchParameter()); + var eva_self_review_reload = function (result) { + eva_self_reviewTableV.destroy(); + eva_self_review_setupTable(result); + endLoad(); + }; + startLoad(); + AjaxGetRequest(apisite + "/api/eva_self_review/GetListBySearch?" + p, eva_self_review_reload, AlertDanger); +} + +function eva_self_review_GetSelect(f) { + var eva_self_review_selectitem = []; + $.each(eva_self_reviewTableV.rows('.selected').data(), function (key, value) { + eva_self_review_selectitem.push(value[f]); + }); + alert(eva_self_review_selectitem); +} + +//================= File Upload ========================================= + + + +//================= Multi-Selection Function ========================================= + + +