using Dapper; using Dapper.Contrib.Extensions; using NPOI.SS.Formula.Functions; using System.Data.SqlClient; using static DbTableClass; public class kolDetial : kol { DbConn dbConn = new DbConn(); SqlConnection conn = new SqlConnection(GlobalClass.appsettings("ConnectionStrings:SQLConnectionString")); public List cooperateTypes = new List(); public List fansTypes = new List(); public List makeups = new List(); public List medias = new List(); public List styles = new List(); public List tags = new List(); public string updateResult { get; set; } = ""; private kol _kol; public kolDetial() { _kol = new kol(); } public kolDetial(kol kolObj) { Type kolType = kolObj.GetType(); foreach (var prop in kolType.GetProperties()) { string propName = prop.Name; var valueProperty = kolType.GetProperty(propName); object propValue = valueProperty.GetValue(kolObj, null); this.GetType().GetProperty(propName).SetValue(this, propValue); } _kol = kolObj; loadList(); } public kolDetial(string kol_uid) { _kol = conn.QueryFirstOrDefault("select * from kol where kol_uid = @kol_uid", new { kol_uid = kol_uid}); if (_kol != null) { Type dataType = _kol.GetType(); foreach (var prop in dataType.GetProperties()) { string propName = prop.Name; var valueProperty = dataType.GetProperty(propName); object propValue = valueProperty.GetValue(_kol, null); this.GetType().GetProperty(propName).SetValue(this, propValue); } loadList(); } } private void loadList() { if (this.kol_uid != "") { cooperateTypes.Clear(); fansTypes.Clear(); makeups.Clear(); medias.Clear(); styles.Clear(); tags.Clear(); List kolCooperateTypes = conn.Query("select A.* from kolCooperateType A, optionItem B where A.option_uid = B.option_uid and A.optionItem_uid = B.optionItem_uid and A.kol_uid = @kol_uid order by B.optionItem_order", new { kol_uid = this.kol_uid} ).ToList(); //List kolFansTypes = conn.Query("select A.* from kolFansType A, optionItem B where A.option_uid = B.option_uid and A.optionItem_uid = B.optionItem_uid and A.kol_uid = @kol_uid order by B.optionItem_order", new { kol_uid = this.kol_uid }).ToList(); //List kolMakeups = conn.Query("select A.* from kolMakeup A, optionItem B where A.option_uid = B.option_uid and A.optionItem_uid = B.optionItem_uid and A.kol_uid = @kol_uid order by B.optionItem_order", new { kol_uid = this.kol_uid }).ToList(); //List kolMedias = conn.Query("select A.* from kolMedia A, optionItem B where A.option_uid = B.option_uid and A.optionItem_uid = B.optionItem_uid and A.kol_uid = @kol_uid order by B.optionItem_order", new { kol_uid = this.kol_uid }).ToList(); //List kolStyles = conn.Query("select A.* from kolStyle A, optionItem B where A.option_uid = B.option_uid and A.optionItem_uid = B.optionItem_uid and A.kol_uid = @kol_uid order by B.optionItem_order", new { kol_uid = this.kol_uid }).ToList(); List kolTags = conn.Query("select A.* from kolTag A, tags B where A.tag_uid = B.tag_uid and A.kol_uid = @kol_uid", new { kol_uid = kol_uid }).ToList(); foreach (kolCooperateType objItem in kolCooperateTypes) { kolCooperateTypeDetail objDetail = new kolCooperateTypeDetail(objItem); cooperateTypes.Add(objDetail); } //foreach (kolFansType objItem in kolFansTypes) { // kolFansTypeDetail objDetail = new kolFansTypeDetail(objItem); // fansTypes.Add(objDetail); //} //foreach (kolMakeup objItem in kolMakeups) //{ // kolMakeupDetail objDetail = new kolMakeupDetail(objItem); // makeups.Add(objDetail); //} //foreach (kolMedia objItem in kolMedias) //{ // kolMediaDetail objDetail = new kolMediaDetail(objItem); // medias.Add(objDetail); //} //foreach (kolStyle objItem in kolStyles) //{ // kolStyleDetail objDetail = new kolStyleDetail(objItem); // styles.Add(objDetail); //} foreach (kolTag objItem in kolTags) { kolTagDetail objDetail = new kolTagDetail(objItem); tags.Add(objDetail); } } } public bool dataUpdate() { if (_kol != null) { Type dataType = _kol.GetType(); foreach (var prop in dataType.GetProperties()) { string propName = prop.Name; var valueProperty = dataType.GetProperty(propName); object propValue = valueProperty.GetValue(this, null); _kol.GetType().GetProperty(propName).SetValue(_kol, propValue); } if (_kol.kol_uid == "") { this._kol.kol_uid = "KOL_" + GlobalClass.CreateRandomCode(12); this.kol_uid = this._kol.kol_uid; try { conn.Insert(this._kol); updateResult = "success"; return true; } catch (Exception ex) { updateResult = ex.Message; return false; } } else { try { conn.Update(this._kol); updateResult = "success"; return true; } catch (Exception ex) { updateResult = ex.Message; return false; } } } else { updateResult = "null 物件無法更新"; return false; } } private void updateList() { foreach (var item in cooperateTypes) { item.dataUpdate(); } foreach (var item in fansTypes) { item.dataUpdate(); } foreach (var item in makeups) { item.dataUpdate(); } foreach (var item in medias) { item.dataUpdate(); } foreach (var item in styles) { item.dataUpdate(); } foreach (var item in tags) { item.dataUpdate(); } } }