namespace CounsellorBL.GROUP.ConstDefinition { using MonumentDefine; using OT.COM.ArsenalDB; using OT.COM.ArsenalDB.SQL; using SoldierData.EnterprizeV4; using System; using System.Collections.Generic; using System.Reflection; using static MonumentDefine.Enums; public class SQLLib : DirectSQLLibBase { public enum Action { SELECT_IDONLY = 0, SELECT_ALL = 1, DELETE = 2 } public delegate string DE_Gen_tb_grp_group(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp); #region public SQLLib(ADirectSQLHelper i_sqlLibBase) : base(i_sqlLibBase) { } public virtual string GetArticleInRange(out Command o_cResult) { ADirectCmdParameter cp = GetParamter(); DateTime dtNow = DateTime.Now; string sSQL = $@"SELECT a.{tb_grp_article.CN_UID}, a.{tb_grp_article.CN_RETRY}, a.{tb_grp_article.CN_NAME}, a.{tb_grp_article.CN_FB_ARTICLE_ID}, a.{tb_grp_article.CN_POST_STATUS}, a.{tb_grp_article.CN_POST_DATE}, a.{tb_grp_article.CN_RPA_STATUS}, a.{tb_grp_article.CN_GROUP_USER_UID} FROM {GetFormalTableName()} a WHERE a.{tb_grp_article.CN_STATUS_FLAG} = {cp.Add(BLWording.STATUS_FLAG_ON)} AND ((a.{tb_grp_article.CN_RELEASE_DATE} IS NULL AND a.{tb_grp_article.CN_POST_STATUS} = {cp.Add((int)EPostStatus.EPS_ARTICLE_AND_PHOTO)}) OR (a.{tb_grp_article.CN_RETRY} < {cp.Add(5)} AND a.{tb_grp_article.CN_POST_STATUS} = {cp.Add((int)EPostStatus.EPS_FAIL)} AND (a.{tb_grp_article.CN_UPDATE_DATE} <= {cp.Add(dtNow)} AND a.{tb_grp_article.CN_UPDATE_DATE} > {cp.Add(dtNow.AddMinutes(-30))} )) OR (a.{tb_grp_article.CN_POST_STATUS} IN {cp.In(new List() { (int)EPostStatus.EPS_SCHEDULE_WAITING, (int)EPostStatus.EPS_ARTICLE_AND_PHOTO }) }) AND (a.{tb_grp_article.CN_RELEASE_DATE} <= {cp.Add(dtNow)} AND a.{tb_grp_article.CN_RELEASE_DATE} > {cp.Add(dtNow.AddMinutes(-30))} ))"; return GenerateCommand(sSQL, cp, out o_cResult); } public virtual string GetScheduleWaitingArticleInRange(out Command o_cResult) { ADirectCmdParameter cp = GetParamter(); DateTime dtNow = DateTime.Now; string sSQL = $@"SELECT a.{tb_grp_article.CN_UID}, a.{tb_grp_article.CN_RETRY}, a.{tb_grp_article.CN_NAME}, a.{tb_grp_article.CN_FB_ARTICLE_ID}, a.{tb_grp_article.CN_POST_STATUS}, a.{tb_grp_article.CN_POST_DATE}, a.{tb_grp_article.CN_RPA_STATUS}, a.{tb_grp_article.CN_GROUP_USER_UID}, a.{tb_grp_article.CN_GROUP_UID} FROM {GetFormalTableName()} a WHERE a.{tb_grp_article.CN_POST_STATUS} = {cp.Add((int)EPostStatus.EPS_SCHEDULE_WAITING)} AND (a.{tb_grp_article.CN_RELEASE_DATE} <= {cp.Add(dtNow)} AND a.{tb_grp_article.CN_RELEASE_DATE} > {cp.Add(dtNow.AddMinutes(-30))} ) AND a.{tb_grp_article.CN_STATUS_FLAG} = {cp.Add((int)BLWording.STATUS_FLAG_ON)}"; return GenerateCommand(sSQL, cp, out o_cResult); } public virtual string GetMediadWaitingArticleInRange(out Command o_cResult) { ADirectCmdParameter cp = GetParamter(); DateTime dtNow = DateTime.Now; string sSQL = $@"SELECT a.{tb_grp_article.CN_UID}, a.{tb_grp_article.CN_RETRY}, a.{tb_grp_article.CN_NAME}, a.{tb_grp_article.CN_FB_ARTICLE_ID}, a.{tb_grp_article.CN_POST_STATUS}, a.{tb_grp_article.CN_POST_DATE}, a.{tb_grp_article.CN_RPA_STATUS}, a.{tb_grp_article.CN_GROUP_USER_UID}, a.{tb_grp_article.CN_GROUP_UID} FROM {GetFormalTableName()} a WHERE a.{tb_grp_article.CN_FB_ARTICLE_ID} IS NOT NULL AND a.{tb_grp_article.CN_POST_STATUS} = {cp.Add((int)EPostStatus.EPS_COMPLETE)} AND a.{tb_grp_article.CN_RPA_STATUS} = {cp.Add(0)} AND a.{tb_grp_article.CN_RETRY} < {cp.Add(5)} AND (a.{tb_grp_article.CN_POST_DATE} <= {cp.Add(dtNow)} AND a.{tb_grp_article.CN_POST_DATE} > {cp.Add(dtNow.AddMinutes(-30))} ) AND a.{tb_grp_article.CN_STATUS_FLAG} = {cp.Add((int)BLWording.STATUS_FLAG_ON)}"; return GenerateCommand(sSQL, cp, out o_cResult); } public virtual string GetFailWaitingArticleInRange(out Command o_cResult) { ADirectCmdParameter cp = GetParamter(); DateTime dtNow = DateTime.Now; string sSQL = $@"SELECT a.{tb_grp_article.CN_UID}, a.{tb_grp_article.CN_RETRY}, a.{tb_grp_article.CN_NAME}, a.{tb_grp_article.CN_FB_ARTICLE_ID}, a.{tb_grp_article.CN_POST_STATUS}, a.{tb_grp_article.CN_POST_DATE}, a.{tb_grp_article.CN_RPA_STATUS}, a.{tb_grp_article.CN_GROUP_USER_UID}, a.{tb_grp_article.CN_GROUP_UID} FROM {GetFormalTableName()} a WHERE a.{tb_grp_article.CN_POST_STATUS} = {cp.Add((int)EPostStatus.EPS_FAIL)} AND a.{tb_grp_article.CN_RPA_STATUS} = {cp.Add(0)} AND a.{tb_grp_article.CN_RETRY} < {cp.Add(5)} AND ( (a.{tb_grp_article.CN_FB_ARTICLE_ID} IS NULL) OR (a.{tb_grp_article.CN_FB_ARTICLE_ID} IS NOT NULL AND (a.{tb_grp_article.CN_POST_DATE} <= {cp.Add(dtNow)} AND a.{tb_grp_article.CN_POST_DATE} > {cp.Add(dtNow.AddMinutes(-30))} )) ) AND a.{tb_grp_article.CN_STATUS_FLAG} = {cp.Add((int)BLWording.STATUS_FLAG_ON)}"; return GenerateCommand(sSQL, cp, out o_cResult); } public virtual string GetArticleInRangeTest(out Command o_cResult) { ADirectCmdParameter cp = GetParamter(); string sSQL = $@"SELECT a.{tb_grp_article.CN_UID}, a.{tb_grp_article.CN_RETRY}, a.{tb_grp_article.CN_NAME}, a.{tb_grp_article.CN_FB_ARTICLE_ID}, a.{tb_grp_article.CN_POST_STATUS}, a.{tb_grp_article.CN_POST_DATE}, a.{tb_grp_article.CN_RPA_STATUS}, a.{tb_grp_article.CN_GROUP_USER_UID} FROM {GetFormalTableName()} a a.{tb_grp_article.CN_GROUP_USER_UID} IS NOT NULL AND WHERE a.{tb_grp_article.CN_FB_ARTICLE_ID} in ('274962260394168_378697063354020', '274962260394168_378746420015751')"; return GenerateCommand(sSQL, cp, out o_cResult); } #endregion public virtual string GetUIDs(Action i_aAction, string sFunctionName, List i_asGroupName, out Command o_cResult) { string sMsg = null; Command cResultTemp = null; try { do { MethodInfo mi = this.GetType().GetMethod(sFunctionName); ADirectCmdParameter cp = GetParamter(); string sSQL = (string)mi.Invoke(this, new object[] { i_aAction, i_asGroupName, cp }); sMsg = GenerateCommand(typeof(tb_meb_member), sSQL, cp, out cResultTemp); if(sMsg != null) { break; } } while (false); } catch (Exception ex) { sMsg = ex.Message; } o_cResult = cResultTemp; return sMsg; } #region public string Gen_tb_sys_user2role(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_sys_user2role.CN_UID, tb_sys_user2role.CN_ROLE_UID, i_asGroupName, cp, i_dgFunc: Gen_tb_sys_role); } public string Gen_tb_sys_role2org(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_sys_role2org.CN_UID, tb_sys_role2org.CN_ROLE_UID, i_asGroupName, cp, i_dgFunc: Gen_tb_sys_role); } public string Gen_tb_sys_role(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_sys_role.CN_UID, tb_sys_role.CN_GROUP_UID, i_asGroupName, cp); } public string Gen_tb_sys_user2entercode(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_sys_user2entercode.CN_UID, tb_sys_user2entercode.CN_USER_UID, i_asGroupName, cp, i_dgFunc: Gen_tb_hr_employee); } public string Gen_tb_sys_user(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_sys_user.CN_UID, tb_sys_user.CN_UID, i_asGroupName, cp, i_dgFunc: Gen_tb_hr_employee); } public string Gen_tb_grp_group2user(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_grp_group2user.CN_UID, tb_grp_group2user.CN_GROUP_UID, i_asGroupName, cp); } public string Gen_tb_ord_message_log_record(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_ord_message_log_record.CN_UID, tb_ord_message_log_record.CN_MEMBER_UID, i_asGroupName, cp, i_dgFunc: Gen_tb_meb_member); } public string Gen_tb_ord_message_log(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_ord_message_log.CN_UID, tb_ord_message_log.CN_BRANCH_UID, i_asGroupName, cp, false, Gen_tb_grp_branch); } public string Gen_tb_ord_purchase_detail(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_ord_purchase_detail.CN_UID, tb_ord_purchase_detail.CN_BRANCH_UID, i_asGroupName, cp, false, Gen_tb_grp_branch); } public string Gen_tb_prd_product(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_prd_product.CN_UID, tb_prd_product.CN_GROUP_ID, i_asGroupName, cp); } public string Gen_tb_sys_uploadlog(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_sys_uploadlog.CN_UID, tb_sys_uploadlog.CN_UID, i_asGroupName, cp, false, GenArticleMediaMediaIDsSQLByGroupName); } public string GenArticleMediaMediaIDsSQLByGroupName(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_grp_article_media.CN_MEDIA_ID, tb_grp_article_media.CN_ARTICLE_UID, i_asGroupName, cp, false, Gen_tb_grp_article); } public string Gen_tb_grp_article_media(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_grp_article_media.CN_UID, tb_grp_article_media.CN_ARTICLE_UID, i_asGroupName, cp, true, Gen_tb_grp_article); } public string Gen_tb_ord_purchase(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_ord_purchase.CN_UID, tb_ord_purchase.CN_MEMBER_UID, i_asGroupName, cp, i_dgFunc: Gen_tb_meb_member); } public string Gen_tb_prd_article2product(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { string sTarget = _ActionToSQL(i_aAction, false, tb_prd_article2product.CN_UID); string sTableAlias = (i_aAction == Action.SELECT_ALL) || (i_aAction == Action.SELECT_IDONLY) ? "a01" : ""; return $@"{sTarget} FROM {GetFormalTableName()} {sTableAlias} WHERE {tb_prd_article2product.CN_ARTICLE_UID} IN ( {Gen_tb_grp_article(Action.SELECT_IDONLY, i_asGroupName, cp)}) OR {tb_prd_article2product.CN_PRD_UID} IN ( {Gen_tb_prd_product(Action.SELECT_IDONLY, i_asGroupName, cp)}) "; /*return GenIDsSQLByGroupName(i_aAction, tb_prd_article2product.CN_UID, tb_prd_article2product.CN_ARTICLE_UID, i_asGroupName, cp, false, Gen_tb_grp_article);*/ } public string Gen_tb_grp_comment(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_grp_comment.CN_UID, tb_grp_comment.CN_ARTICLE_UID, i_asGroupName, cp, false, Gen_tb_grp_article); } public string Gen_tb_meb_shopping_points_record(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_meb_shopping_points_record.CN_UID, tb_meb_shopping_points_record.CN_MEMBER_UID, i_asGroupName, cp, i_dgFunc: Gen_tb_meb_member); } protected string GenIDsSQLByGroupName(Action i_aAction, string i_sDisplayTarget, string i_sWhereTarget, List i_asGroupName, ADirectCmdParameter cp, bool i_bDistinct = false, DE_Gen_tb_grp_group i_dgFunc = null) { string sINCondition = (i_dgFunc == null) ? Gen_tb_grp_group(Action.SELECT_IDONLY, i_asGroupName, cp) : i_dgFunc(Action.SELECT_IDONLY, i_asGroupName, cp); // string sTarget = i_aAction ? "DELETE" : (i_bDistinct ? $"SELECT distinct a01.{i_sDisplayTarget} " : $"SELECT a01.{i_sDisplayTarget} "); string sTarget = _ActionToSQL(i_aAction, i_bDistinct, i_sDisplayTarget); string sTableAlias = (i_aAction == Action.SELECT_ALL) || (i_aAction == Action.SELECT_IDONLY) ? "a01" : ""; return $@"{sTarget} FROM {GetFormalTableName()} {sTableAlias} WHERE {i_sWhereTarget} IN ( {sINCondition})"; } public string Gen_tb_ord_checkout_list_master(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_ord_checkout_list_master.CN_UID, tb_ord_checkout_list_master.CN_GROUP_UID, i_asGroupName, cp); } public string Gen_tb_ord_checkout_list_detail(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_ord_checkout_list_detail.CN_UID, tb_ord_checkout_list_detail.CN_MEMBER_UID, i_asGroupName, cp, i_dgFunc: Gen_tb_meb_member); } public string Gen_tb_ord_order_master(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_ord_order_master.CN_UID, tb_ord_order_master.CN_GROUP_UID, i_asGroupName, cp); } public string Gen_tb_ord_order_detail(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_ord_order_detail.CN_UID, tb_ord_order_detail.CN_MEMBER_UID, i_asGroupName, cp, i_dgFunc: Gen_tb_meb_member); } public string Gen_tb_hr_employee(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_hr_employee.CN_UID, tb_hr_employee.CN_RECEIVE_BRANCH_UID, i_asGroupName, cp, false, Gen_tb_grp_branch); } public string Gen_tb_hr_employee2branch(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_hr_employee2branch.CN_UID, tb_hr_employee2branch.CN_BRANCH_UID, i_asGroupName, cp, false, Gen_tb_grp_branch); } public string Gen_tb_ord_incoming_return_record(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { string sTarget = _ActionToSQL(i_aAction, false, tb_ord_incoming_return_record.CN_UID); string sTableAlias = (i_aAction == Action.SELECT_ALL) || (i_aAction == Action.SELECT_IDONLY) ? "a01" : ""; return $@"{sTarget} FROM {GetFormalTableName()} {sTableAlias} WHERE {tb_ord_incoming_return_record.CN_ORDER_UID} IN ( {Gen_tb_ord_order_master(Action.SELECT_IDONLY, i_asGroupName, cp)}) OR {tb_ord_incoming_return_record.CN_ARTICLE2PRODUCT_UID} IN ( {Gen_tb_prd_article2product(Action.SELECT_IDONLY, i_asGroupName, cp)}) "; /*return GenIDsSQLByGroupName(i_aAction, tb_ord_incoming_return_record.CN_UID, tb_ord_incoming_return_record.CN_ORDER_UID, i_asGroupName, cp, true, Gen_tb_ord_order_master);*/ } /* public string Gen2_tb_ord_incoming_return_record(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_ord_incoming_return_record.CN_UID, tb_ord_incoming_return_record.CN_ARTICLE2PRODUCT_UID, i_asGroupName, cp, false, Gen_tb_prd_article2product); }*/ #endregion public string Gen_tb_meb_member(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_meb_member.CN_UID, tb_meb_member.CN_GROUP_ID, i_asGroupName, cp, i_dgFunc: GenFBIDsSQLByGroupName); } public string Gen_tb_grp_branch(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_grp_branch.CN_UID, tb_grp_branch.CN_GROUP_UID, i_asGroupName, cp); } public string Gen_tb_grp_article(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { return GenIDsSQLByGroupName(i_aAction, tb_grp_article.CN_UID, tb_grp_article.CN_GROUP_UID, i_asGroupName, cp); } private string _ActionToSQL(Action i_aAction, bool i_bDistinct, string i_sSpecificIDName = BLWording.UID) { string sRes = null; switch(i_aAction) { case Action.SELECT_ALL: sRes = $"SELECT * "; break; case Action.DELETE: sRes = "DELETE "; break; case Action.SELECT_IDONLY: sRes = i_bDistinct ? $"SELECT distinct a01.{i_sSpecificIDName} " : $"SELECT a01.{i_sSpecificIDName} "; break; } return sRes; } public string GenFBIDsSQLByGroupName(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { string sTarget = _ActionToSQL(i_aAction, false, tb_grp_group.CN_FB_GROUP_ID); string sTableAlias = (i_aAction == Action.SELECT_ALL) || (i_aAction == Action.SELECT_IDONLY) ? "a01" : ""; return $@"{sTarget} FROM {GetFormalTableName()} {sTableAlias} WHERE {tb_grp_group.CN_NAME} IN {cp.In(i_asGroupName)}"; } public string Gen_tb_grp_group(Action i_aAction, List i_asGroupName, ADirectCmdParameter cp) { string sTarget = _ActionToSQL(i_aAction, false, tb_grp_group.CN_UID); string sTableAlias = (i_aAction == Action.SELECT_ALL) || (i_aAction == Action.SELECT_IDONLY) ? "a01" : ""; return $@"{sTarget} FROM {GetFormalTableName()} {sTableAlias} WHERE {tb_grp_group.CN_NAME} IN {cp.In(i_asGroupName)}"; } } }