/// <summary> /// 檢核預審名單 /// </summary> /// <param name="campaignId">行銷活動代號</param> /// <returns>檢核結果</returns> public ValidatePreAdjustResultDTO ValidatePreAdjust(string campaignId) { ValidatePreAdjustResultDTO result = null; string validateMsg = null; int? campaignListCount = null; if (String.IsNullOrEmpty(campaignId)) { throw new ArgumentNullException("campaignId"); } CampaignDO campaignInfo = CampaignService.GetCampaign(campaignId); if (campaignInfo == null) { validateMsg = "ILRC行銷活動編碼,輸入錯誤。"; } else if (!DateTime.TryParseExact(campaignInfo.ExpectedCloseDate, "yyyyMMdd", null, System.Globalization.DateTimeStyles.None, out DateTime tempCloseDate)) { throw new InvalidOperationException("Convert ExpectedCloseDate Fail"); } else if (tempCloseDate < DateTime.Now.Date) { validateMsg = "此行銷活動已結案,無法進入匯入作業。"; } else { CampaignImportLogDO importLogInfo = CampaignService.GetImportLog(campaignInfo.CampaignId); if (importLogInfo != null) { validateMsg = $"此行銷活動已於{importLogInfo.ImportDate}匯入過,無法再進行匯入。"; } } if (String.IsNullOrEmpty(validateMsg)) { campaignListCount = CampaignService.GetCampaignListCount(campaignInfo.CampaignId, campaignInfo.ExecutionPathway); } result = new ValidatePreAdjustResultDTO() { ErrorMessage = validateMsg, CampaignListCount = campaignListCount, }; return(result); }
/// <summary> /// 取得行銷活動匯入紀錄 /// </summary> /// <param name="campaignId">行銷活動代號</param> /// <returns></returns> public CampaignImportLogDO GetImportLog(string campaignId) { CampaignImportLogDO importLogInfo = null; if (String.IsNullOrEmpty(campaignId)) { throw new ArgumentNullException("campaignId"); } importLogInfo = new CampaignImportLogDAO().Get(campaignId); return(importLogInfo); }
/// <summary> /// 新增行銷活動匯入資料 /// </summary> /// <param name="importLog">行銷活動匯入資料</param> public void Insert(CampaignImportLogDO importLog) { if (importLog == null) { throw new ArgumentNullException("importLog"); } string query = @" INSERT INTO [LOG_RG_ILRC] ([CMPN_ID],[CMPN_EXPC_STRT_DT],[CMPN_EXPC_END_DT],[CNT],[IMPORT_USERID],[IMPORT_USERNAME],[IMPORT_DT]) VALUES (@CampaignId,@ExpectedStartDate,@ExpectedEndDate,@Count,@ImportUserId,@ImportUserName,@ImportDate);"; using (SqlConnection connection = DbConnection(Connection.CDRM)) { SqlCommand command = new SqlCommand(query, connection); command.Parameters.Add(new SqlParameter("@CampaignId", SqlDbType.NVarChar) { Value = importLog.CampaignId }); command.Parameters.Add(new SqlParameter("@ExpectedStartDate", SqlDbType.NVarChar) { Value = importLog.ExpectedStartDate }); command.Parameters.Add(new SqlParameter("@ExpectedEndDate", SqlDbType.NVarChar) { Value = importLog.ExpectedEndDate }); command.Parameters.Add(new SqlParameter("@Count", SqlDbType.Decimal) { Value = importLog.Count ?? Convert.DBNull }); command.Parameters.Add(new SqlParameter("@ImportUserId", SqlDbType.NVarChar) { Value = importLog.ImportUserId }); command.Parameters.Add(new SqlParameter("@ImportUserName", SqlDbType.NVarChar) { Value = importLog.ImportUserName }); command.Parameters.Add(new SqlParameter("@ImportDate", SqlDbType.NVarChar) { Value = importLog.ImportDate }); connection.Open(); command.ExecuteNonQuery(); command = null; } }
/// <summary> /// 紀錄行銷活動匯入紀錄與臨調預審處理檔 /// </summary> /// <param name="importLog">行銷活動匯入紀錄</param> /// <param name="preAdjustList">臨調預審處理檔資料集合</param> /// <returns></returns> private void SaveCampaignData(CampaignImportLogDO importLog, List <PreAdjustDO> preAdjustList) { if (importLog == null) { throw new ArgumentNullException("importLog"); } else if ((preAdjustList == null) || (preAdjustList.Count == 0)) { throw new ArgumentNullException("preAdjustList"); } using (TransactionScope scope = new TransactionScope()) { new CampaignImportLogDAO().Insert(importLog); new PreAdjustDAO().Insert(preAdjustList); scope.Complete(); } }
/// <summary> /// 取得行銷活動匯入紀錄檔 /// </summary> /// <param name="campaignId">行銷活動編號</param> /// <returns>行銷活動匯入紀錄檔</returns> public CampaignImportLogDO Get(string campaignId) { CampaignImportLogDO result = null; if (String.IsNullOrEmpty(campaignId)) { throw new ArgumentNullException("campaignId"); } string query = @" SELECT [CMPN_ID],[CMPN_EXPC_STRT_DT],[CMPN_EXPC_END_DT],[CNT], [IMPORT_USERID],[IMPORT_USERNAME],[IMPORT_DT] FROM [LOG_RG_ILRC] WHERE CMPN_ID = @CampaignId;"; using (SqlConnection connection = DbConnection(Connection.CDRM)) { SqlCommand command = new SqlCommand(query, connection); command.Parameters.Add(new SqlParameter("@CampaignId", SqlDbType.NVarChar) { Value = campaignId }); connection.Open(); DataTable dt = new DataTable(); SqlDataAdapter adapter = new SqlDataAdapter(command); adapter.Fill(dt); if (dt.Rows.Count == 1) { result = ConvertCampaignImportLogDO(dt.Rows[0]); } adapter = null; dt = null; command = null; } return(result); }
/// <summary> /// 匯入預審名單 /// </summary> /// <param name="campaignId">行銷活動代號</param> /// <param name="userId">登入帳號</param> /// <param name="userName">登入姓名</param> /// <returns>處理結果</returns> public ImportPreAdjustResultDTO ImportPreAdjust(string campaignId, string userId, string userName) { ImportPreAdjustResultDTO result = null; if (String.IsNullOrEmpty(campaignId)) { throw new ArgumentNullException("campaignId"); } ValidatePreAdjustResultDTO validateResult = ValidatePreAdjust(campaignId); if (validateResult == null) { var e = new InvalidOperationException("ValidateResult not found"); e.Data["campaignId"] = campaignId; throw e; } else if (!String.IsNullOrEmpty(validateResult.ErrorMessage)) { result = new ImportPreAdjustResultDTO() { ValidateMessage = validateResult.ErrorMessage, }; return(result); } CampaignDO campaignInfo = CampaignService.GetCampaign(campaignId); if (campaignInfo == null) { var e = new InvalidOperationException("CampaignInfo not found"); e.Data["campaignId"] = campaignId; throw e; } IEnumerable <CampaignListDO> campaignList = CampaignService.GetCampaignList( campaignInfo.CampaignId, campaignInfo.ExecutionPathway); if ((campaignList == null) || (campaignList.Count() == 0)) { var e = new InvalidOperationException("CampaignList not found"); e.Data["CampaignId"] = campaignInfo.CampaignId; e.Data["ExecutionPathway"] = campaignInfo.ExecutionPathway; throw e; } DateTime currentTime = DateTime.Now; CampaignImportLogDO importLog = new CampaignImportLogDO() { CampaignId = campaignInfo.CampaignId, ExpectedStartDate = campaignInfo.ExpectedStartDateTime, ExpectedEndDate = campaignInfo.ExpectedEndDateTime, Count = campaignList.Count(), ImportUserId = userId, ImportUserName = userName, ImportDate = currentTime.ToString("yyyy/MM/dd"), }; List <PreAdjustDO> preAdjustList = new List <PreAdjustDO>(); PreAdjustDO preAdjust = null; foreach (CampaignListDO item in campaignList) { preAdjust = null; preAdjust = new PreAdjustDO() { CampaignId = campaignInfo.CampaignId, Id = item.CustomerId, ProjectName = item.Col1, ProjectAmount = Convert.ToDecimal(item.Col2), CloseDate = item.Col3, ImportDate = currentTime.ToString("yyyy/MM/dd"), Kind = item.Col4, Status = "待生效", }; preAdjustList.Add(preAdjust); } if (preAdjustList.Count == 0) { throw new InvalidOperationException("preAdjustList not found"); } CustomerDAO aboutDataDAO = new CustomerDAO(); CustomerShortDO aboutData = null; PreAdjustDO tempPreAdjust = null; foreach (CampaignListDO item in campaignList) { aboutData = aboutDataDAO.GetShortData(item.CustomerId); if (aboutData == null) { var e = new InvalidOperationException("AboutData not found"); e.Data["CustomerId"] = item.CustomerId; throw e; } tempPreAdjust = preAdjustList.FirstOrDefault(x => x.Id == item.CustomerId); if (tempPreAdjust == null) { var e = new InvalidOperationException("tempPreAdjust not found"); e.Data["CustomerId"] = item.CustomerId; throw e; } tempPreAdjust.ChineseName = aboutData.ChineseName; tempPreAdjust.ClosingDay = aboutData.ClosingDay; tempPreAdjust.PayDeadline = aboutData.PayDeadline; tempPreAdjust.MobileTel = aboutData.MobileTel; } SaveCampaignData(importLog, preAdjustList); result = new ImportPreAdjustResultDTO(); return(result); }