From 0dbfb548295dc4bd3fb961d83cdffa4e0137008c Mon Sep 17 00:00:00 2001 From: "LAPTOP-KB8JC2K2\\acer" Date: Sun, 30 May 2021 12:41:44 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B8=9B=E0=B8=A3=E0=B8=B1=E0=B8=9A=E0=B8=9B?= =?UTF-8?q?=E0=B8=A3=E0=B8=B8=E0=B8=87=E0=B8=81=E0=B8=B2=E0=B8=A3=E0=B8=97?= =?UTF-8?q?=E0=B8=B3=20log?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- EF/_BaseRepository.cs | 25 ++++++++++-- EF/_BaseRepository2.cs | 18 ++++++++- Utils/MyDatabase.cs | 4 ++ Utils/MyHelper.cs | 90 ++++++++++++++++++++++++++++++++++++++--- object_index.xlsx | Bin 0 -> 9511 bytes 5 files changed, 127 insertions(+), 10 deletions(-) create mode 100644 object_index.xlsx diff --git a/EF/_BaseRepository.cs b/EF/_BaseRepository.cs index 97a77f1..fd74f9c 100644 --- a/EF/_BaseRepository.cs +++ b/EF/_BaseRepository.cs @@ -8,6 +8,11 @@ using TTSW.Common; using TodoAPI2.Models; using Microsoft.AspNetCore.Http; using IdentityModel; +using Newtonsoft.Json; +using System.Reflection; +using System.Data; +using System.ComponentModel.DataAnnotations; +using TTSW.Utils; namespace TTSW.EF { @@ -16,6 +21,7 @@ namespace TTSW.EF { #region Private Variables private DataContext _context; + private IMyDatabase _db; public DataContext Context { get @@ -36,11 +42,12 @@ namespace TTSW.EF } #endregion - public BaseRepository(DataContext context, IHttpContextAccessor contextAccessor + public BaseRepository(DataContext context, IHttpContextAccessor contextAccessor, IMyDatabase mydatabase ) { _context = context; _contextAccessor = contextAccessor; + _db = mydatabase; } #region Private Functions @@ -255,12 +262,24 @@ namespace TTSW.EF if (!SaveToDB()) throw new NotificationException($"Unable to insert item to database."); } + + + public T Update(Key id, object model) { var userLogin = GetLoginProfile(); - var existingItem = Get(id); - var old_existingItem = Get(id); + object old_existingItem; + + try + { + var x = MyHelper.GetDataRow(id, model, _db); + old_existingItem = MyHelper.GetObject(x, model.GetType().Name.Replace("Entity", "")); + } + catch(Exception ex) + { + old_existingItem = null; + } if (existingItem == null) throw new NotificationException($"No item in database."); diff --git a/EF/_BaseRepository2.cs b/EF/_BaseRepository2.cs index 3450b6e..1d23f38 100644 --- a/EF/_BaseRepository2.cs +++ b/EF/_BaseRepository2.cs @@ -11,6 +11,8 @@ using TodoAPI2.Models; using Microsoft.AspNetCore.Http; using IdentityModel; using Newtonsoft.Json.Serialization; +using Newtonsoft.Json; +using TTSW.Utils; namespace TTSW.EF { @@ -25,6 +27,7 @@ namespace TTSW.EF { #region Private Variables private DataContext _context; + private IMyDatabase _db; public DataContext Context { get @@ -45,11 +48,12 @@ namespace TTSW.EF } #endregion - public BaseRepository2(DataContext context, IHttpContextAccessor contextAccessor + public BaseRepository2(DataContext context, IHttpContextAccessor contextAccessor, IMyDatabase mydatabase ) { _context = context; _contextAccessor = contextAccessor; + _db = mydatabase; } #region Private Functions @@ -269,7 +273,17 @@ namespace TTSW.EF var userLogin = GetLoginProfile(); var existingItem = Get(id); - var old_existingItem = Get(id); + object old_existingItem; + + try + { + var x = MyHelper.GetDataRow(id, model, _db); + old_existingItem = MyHelper.GetObject(x, model.GetType().Name.Replace("Entity", "")); + } + catch (Exception ex) + { + old_existingItem = null; + } if (existingItem == null) throw new NotificationException($"No item in database."); diff --git a/Utils/MyDatabase.cs b/Utils/MyDatabase.cs index 0dae08f..a24d3b8 100644 --- a/Utils/MyDatabase.cs +++ b/Utils/MyDatabase.cs @@ -1,7 +1,9 @@ using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Data; using System.Linq; +using System.Reflection; using System.Threading.Tasks; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; @@ -19,6 +21,8 @@ namespace TTSW.Utils Configuration = configuration; } + + public DataTable ExecuteDataTableNpgsql(string queryString, List para) { System.Data.DataSet ds = new DataSet(); diff --git a/Utils/MyHelper.cs b/Utils/MyHelper.cs index f82548b..e44471f 100644 --- a/Utils/MyHelper.cs +++ b/Utils/MyHelper.cs @@ -9,17 +9,97 @@ using Microsoft.Extensions.Configuration; using System.Net; using TodoAPI2.Models; using Microsoft.AspNetCore.Http; +using System.ComponentModel.DataAnnotations; +using TTSW.Utils; /// /// Summary description for MyHelper /// -public class MyHelper +public static class MyHelper { - public MyHelper() + public static DataRow GetDataRow(object id, object model, IMyDatabase _db) { - // - // TODO: Add constructor logic here - // + DataRow result = null; + if (id.GetType().Name.Contains("int")) + { + result = _db.ExecuteDataTableNpgsql($"select * from {model.GetType().Name.Replace("Entity", "")} where id={id.ToString()} ", null).Rows[0]; + } + else + { + result = _db.ExecuteDataTableNpgsql($"select * from {model.GetType().Name.Replace("Entity", "")} where id='{id.ToString()}' ", null).Rows[0]; + } + return result; + } + + public static object GetObject(this DataRow dataRow, string data_type) + { + if (data_type == "eva_adjust_postponement") return ToObject(dataRow); + if (data_type == "eva_adjust_postponement_detail") return ToObject(dataRow); + if (data_type == "eva_create_evaluation") return ToObject(dataRow); + if (data_type == "eva_create_evaluation_detail") return ToObject(dataRow); + if (data_type == "eva_create_evaluation_detail_history") return ToObject(dataRow); + if (data_type == "eva_evaluation_achievement") return ToObject(dataRow); + if (data_type == "eva_evaluation_achievement_attach") return ToObject(dataRow); + if (data_type == "eva_evaluation_behavior") return ToObject(dataRow); + if (data_type == "eva_evaluation_group") return ToObject(dataRow); + if (data_type == "eva_evaluation_group_detail") return ToObject(dataRow); + if (data_type == "eva_evaluation_operating_agreement") return ToObject(dataRow); + if (data_type == "eva_idp_plan") return ToObject(dataRow); + if (data_type == "eva_level_score") return ToObject(dataRow); + if (data_type == "eva_limit_frame_employee") return ToObject(dataRow); + if (data_type == "eva_limit_frame_group") return ToObject(dataRow); + if (data_type == "eva_limit_frame_plan") return ToObject(dataRow); + if (data_type == "eva_performance_plan") return ToObject(dataRow); + if (data_type == "eva_performance_plan_detail") return ToObject(dataRow); + if (data_type == "eva_promoted_percentage") return ToObject(dataRow); + if (data_type == "eva_salary_cylinder") return ToObject(dataRow); + + return null; + } + public static T ToObject(this DataRow dataRow) where T : new() + { + T item = new T(); + + foreach (DataColumn column in dataRow.Table.Columns) + { + PropertyInfo property = GetProperty(typeof(T), column.ColumnName); + + if (property != null && dataRow[column] != DBNull.Value && dataRow[column].ToString() != "NULL") + { + property.SetValue(item, ChangeType(dataRow[column], property.PropertyType), null); + } + } + + return item; + } + + private static PropertyInfo GetProperty(Type type, string attributeName) + { + PropertyInfo property = type.GetProperty(attributeName); + + if (property != null) + { + return property; + } + + return type.GetProperties() + .Where(p => p.IsDefined(typeof(DisplayAttribute), false) && p.GetCustomAttributes(typeof(DisplayAttribute), false).Cast().Single().Name == attributeName) + .FirstOrDefault(); + } + + public static object ChangeType(object value, Type type) + { + if (type.IsGenericType && type.GetGenericTypeDefinition().Equals(typeof(Nullable<>))) + { + if (value == null) + { + return null; + } + + return Convert.ChangeType(value, Nullable.GetUnderlyingType(type)); + } + + return Convert.ChangeType(value, type); } public static string GetDummyText() diff --git a/object_index.xlsx b/object_index.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..dd3144b95072b3063d2fd67df9a28ac253e2e4db GIT binary patch literal 9511 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 h1pXBcB>4;ccR^H!gv9^= literal 0 HcmV?d00001