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 } }