ปรับปรุงการทำ log
This commit is contained in:
@@ -8,6 +8,11 @@ using TTSW.Common;
|
|||||||
using TodoAPI2.Models;
|
using TodoAPI2.Models;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using IdentityModel;
|
using IdentityModel;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Data;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using TTSW.Utils;
|
||||||
|
|
||||||
namespace TTSW.EF
|
namespace TTSW.EF
|
||||||
{
|
{
|
||||||
@@ -16,6 +21,7 @@ namespace TTSW.EF
|
|||||||
{
|
{
|
||||||
#region Private Variables
|
#region Private Variables
|
||||||
private DataContext _context;
|
private DataContext _context;
|
||||||
|
private IMyDatabase _db;
|
||||||
public DataContext Context
|
public DataContext Context
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@@ -36,11 +42,12 @@ namespace TTSW.EF
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public BaseRepository(DataContext context, IHttpContextAccessor contextAccessor
|
public BaseRepository(DataContext context, IHttpContextAccessor contextAccessor, IMyDatabase mydatabase
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
_context = context;
|
_context = context;
|
||||||
_contextAccessor = contextAccessor;
|
_contextAccessor = contextAccessor;
|
||||||
|
_db = mydatabase;
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Private Functions
|
#region Private Functions
|
||||||
@@ -255,12 +262,24 @@ namespace TTSW.EF
|
|||||||
if (!SaveToDB())
|
if (!SaveToDB())
|
||||||
throw new NotificationException($"Unable to insert item to database.");
|
throw new NotificationException($"Unable to insert item to database.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public T Update(Key id, object model)
|
public T Update(Key id, object model)
|
||||||
{
|
{
|
||||||
var userLogin = GetLoginProfile();
|
var userLogin = GetLoginProfile();
|
||||||
|
|
||||||
var existingItem = Get(id);
|
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)
|
if (existingItem == null)
|
||||||
throw new NotificationException($"No item in database.");
|
throw new NotificationException($"No item in database.");
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ using TodoAPI2.Models;
|
|||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using IdentityModel;
|
using IdentityModel;
|
||||||
using Newtonsoft.Json.Serialization;
|
using Newtonsoft.Json.Serialization;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using TTSW.Utils;
|
||||||
|
|
||||||
namespace TTSW.EF
|
namespace TTSW.EF
|
||||||
{
|
{
|
||||||
@@ -25,6 +27,7 @@ namespace TTSW.EF
|
|||||||
{
|
{
|
||||||
#region Private Variables
|
#region Private Variables
|
||||||
private DataContext _context;
|
private DataContext _context;
|
||||||
|
private IMyDatabase _db;
|
||||||
public DataContext Context
|
public DataContext Context
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@@ -45,11 +48,12 @@ namespace TTSW.EF
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public BaseRepository2(DataContext context, IHttpContextAccessor contextAccessor
|
public BaseRepository2(DataContext context, IHttpContextAccessor contextAccessor, IMyDatabase mydatabase
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
_context = context;
|
_context = context;
|
||||||
_contextAccessor = contextAccessor;
|
_contextAccessor = contextAccessor;
|
||||||
|
_db = mydatabase;
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Private Functions
|
#region Private Functions
|
||||||
@@ -269,7 +273,17 @@ namespace TTSW.EF
|
|||||||
var userLogin = GetLoginProfile();
|
var userLogin = GetLoginProfile();
|
||||||
|
|
||||||
var existingItem = Get(id);
|
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)
|
if (existingItem == null)
|
||||||
throw new NotificationException($"No item in database.");
|
throw new NotificationException($"No item in database.");
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
@@ -19,6 +21,8 @@ namespace TTSW.Utils
|
|||||||
Configuration = configuration;
|
Configuration = configuration;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public DataTable ExecuteDataTableNpgsql(string queryString, List<NpgsqlParameter> para)
|
public DataTable ExecuteDataTableNpgsql(string queryString, List<NpgsqlParameter> para)
|
||||||
{
|
{
|
||||||
System.Data.DataSet ds = new DataSet();
|
System.Data.DataSet ds = new DataSet();
|
||||||
|
|||||||
@@ -9,17 +9,97 @@ using Microsoft.Extensions.Configuration;
|
|||||||
using System.Net;
|
using System.Net;
|
||||||
using TodoAPI2.Models;
|
using TodoAPI2.Models;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using TTSW.Utils;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Summary description for MyHelper
|
/// Summary description for MyHelper
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class MyHelper
|
public static class MyHelper
|
||||||
{
|
{
|
||||||
public MyHelper()
|
public static DataRow GetDataRow(object id, object model, IMyDatabase _db)
|
||||||
{
|
{
|
||||||
//
|
DataRow result = null;
|
||||||
// TODO: Add constructor logic here
|
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<eva_adjust_postponementEntity>(dataRow);
|
||||||
|
if (data_type == "eva_adjust_postponement_detail") return ToObject<eva_adjust_postponement_detailEntity>(dataRow);
|
||||||
|
if (data_type == "eva_create_evaluation") return ToObject<eva_create_evaluationEntity>(dataRow);
|
||||||
|
if (data_type == "eva_create_evaluation_detail") return ToObject<eva_create_evaluation_detailEntity>(dataRow);
|
||||||
|
if (data_type == "eva_create_evaluation_detail_history") return ToObject<eva_create_evaluation_detail_historyEntity>(dataRow);
|
||||||
|
if (data_type == "eva_evaluation_achievement") return ToObject<eva_evaluation_achievementEntity>(dataRow);
|
||||||
|
if (data_type == "eva_evaluation_achievement_attach") return ToObject<eva_evaluation_achievement_attachEntity>(dataRow);
|
||||||
|
if (data_type == "eva_evaluation_behavior") return ToObject<eva_evaluation_behaviorEntity>(dataRow);
|
||||||
|
if (data_type == "eva_evaluation_group") return ToObject<eva_evaluation_groupEntity>(dataRow);
|
||||||
|
if (data_type == "eva_evaluation_group_detail") return ToObject<eva_evaluation_group_detailEntity>(dataRow);
|
||||||
|
if (data_type == "eva_evaluation_operating_agreement") return ToObject<eva_evaluation_operating_agreementEntity>(dataRow);
|
||||||
|
if (data_type == "eva_idp_plan") return ToObject<eva_idp_planEntity>(dataRow);
|
||||||
|
if (data_type == "eva_level_score") return ToObject<eva_level_scoreEntity>(dataRow);
|
||||||
|
if (data_type == "eva_limit_frame_employee") return ToObject<eva_limit_frame_employeeEntity>(dataRow);
|
||||||
|
if (data_type == "eva_limit_frame_group") return ToObject<eva_limit_frame_groupEntity>(dataRow);
|
||||||
|
if (data_type == "eva_limit_frame_plan") return ToObject<eva_limit_frame_planEntity>(dataRow);
|
||||||
|
if (data_type == "eva_performance_plan") return ToObject<eva_performance_planEntity>(dataRow);
|
||||||
|
if (data_type == "eva_performance_plan_detail") return ToObject<eva_performance_plan_detailEntity>(dataRow);
|
||||||
|
if (data_type == "eva_promoted_percentage") return ToObject<eva_promoted_percentageEntity>(dataRow);
|
||||||
|
if (data_type == "eva_salary_cylinder") return ToObject<eva_salary_cylinderEntity>(dataRow);
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
public static T ToObject<T>(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<DisplayAttribute>().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()
|
public static string GetDummyText()
|
||||||
|
|||||||
BIN
object_index.xlsx
Normal file
BIN
object_index.xlsx
Normal file
Binary file not shown.
Reference in New Issue
Block a user