using Dapper; using Repository.BackendRepository.Interface; using Repository.BaseRepository.Interface; using Repository.Helper; using Repository.Services.Implement; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text.Json; using System.Threading.Tasks; namespace Repository.BackendRepository.Implement { public class BackendRepository : BaseRepository.Implement.BaseRepository, IBackendRepository { private BackgroundService backgroundService; public BackendRepository(IDatabaseHelper databaseHelper) : base(databaseHelper) { UseDB = "MYSQL"; //con = databaseHelper.GetMSSqlConnection(); } /// <summary> /// 新增記錄人員操作記錄 /// </summary> /// <param name="dict"></param> /// <param name="Table_name"></param> public void InsertOperatorLog(Dictionary<string, object> dict, string Table_name) { List<string> results = new List<string>(); using (IDbConnection conn = GetDbConnection()) { conn.Open(); using (var trans = conn.BeginTransaction()) { try { List<string> properties = dict.Keys.ToList(); string sql = InsertGenerateString(properties, Table_name); conn.Execute(sql, dict, trans); trans.Commit(); } catch (Exception exception) { trans.Rollback(); throw exception; } finally { conn.Close(); } } } } /// <summary> /// 手動加入資料至背景派送 /// </summary> /// <param name="building_ip"></param> /// <param name="building_guid"></param> /// <param name="target_table"></param> /// <param name="mode"></param> /// <param name="parameter"></param> /// <returns></returns> public async Task ManualInsertBackgroundServiceTask(string building_ip, string building_guid, string target_table, string mode, List<Dictionary<string, object>> parameter = null) { List<string> results = new List<string>(); using (IDbConnection conn = GetDbConnection()) { conn.Open(); using (var trans = conn.BeginTransaction()) { try { backgroundService = new BackgroundService(conn, trans); await backgroundService.AddTask("", "", target_table, mode, parameter); trans.Commit(); } catch (Exception exception) { trans.Rollback(); throw exception; } finally { conn.Close(); } } } } /// <summary> /// 手動加入檔案背至景派送 /// </summary> /// <param name="building_ip"></param> /// <param name="building_guid"></param> /// <param name="target_table"></param> /// <param name="fileInfos"></param> /// <returns></returns> public async Task ManualInsertFileBackgroundServiceTask(string building_ip, string building_guid, string target_table, List<Models.FileInfo> fileInfos) { List<string> results = new List<string>(); using (IDbConnection conn = GetDbConnection()) { conn.Open(); using (var trans = conn.BeginTransaction()) { try { var file_json = JsonSerializer.Serialize(fileInfos); Dictionary<string, object> dict = new Dictionary<string, object>() { { "@target_files", file_json } }; backgroundService = new BackgroundService(conn, trans); await backgroundService.AddTask("", "", target_table, fileInfos); trans.Commit(); } catch (Exception exception) { trans.Rollback(); throw exception; } finally { conn.Close(); } } } } } }