Journeys_WantHome/Models/kolDetial.cs

184 lines
6.4 KiB
C#

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<kolCooperateTypeDetail> cooperateTypes = new List<kolCooperateTypeDetail>();
public List<kolFansTypeDetail> fansTypes = new List<kolFansTypeDetail>();
public List<kolMakeupDetail> makeups = new List<kolMakeupDetail>();
public List<kolMediaDetail> medias = new List<kolMediaDetail>();
public List<kolStyleDetail> styles = new List<kolStyleDetail>();
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<kol>("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();
List <kolCooperateType> kolCooperateTypes = conn.Query<kolCooperateType>("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<kolFansType> kolFansTypes = conn.Query<kolFansType>("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<kolMakeup> kolMakeups = conn.Query<kolMakeup>("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<kolMedia> kolMedias = conn.Query<kolMedia>("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<kolStyle> kolStyles = conn.Query<kolStyle>("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();
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);
}
}
}
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();
}
}
}