/// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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();
            }
        }
Beispiel #5
0
        /// <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);
        }