コード例 #1
0
 private ExportFileResponse SetErrorResponse(ExportFileResponse response, Exception ex)
 {
     _logger.InfoFormat($"O:--FAILED--:Error Message/{ex.Message}");
     _logger.Error("Exception occur:\n", ex);
     response.Error = ex.Message;
     return(response);
 }
コード例 #2
0
        private bool ExportDataToTOT(string executeTime, ExportFileResponse response)
        {
            var now = DateTime.Now;

            _doNotCallFacade = new DoNotCallFacade();
            List <DoNotCallUpdatePhoneNoModel> newDataList = _doNotCallFacade.GetDoNotCallPhoneNoListByExecuteTime(executeTime);
            int itemCount = newDataList.Count;

            if (itemCount > 0)
            {
                // Generate file
                byte[] fileByte = _doNotCallFacade.GenerateDoNotCallPhoneListAttachment(newDataList);
                // Send email
                _mailSender = CSMMailSender.GetCSMMailSender();
                int    activeCount        = newDataList.Count(x => x.Status == Constants.DNC.Block);
                int    inactiveCount      = newDataList.Count(x => x.Status == Constants.DNC.Unblock);
                string fileName           = now.FormatDateTime(Constants.DateTimeFormat.ExportDateTime);
                string attachmentFileName = $"{fileName}.csv";
                bool   success            = _mailSender.ExpportUpdatePhoneStatusToTOT(now, executeTime, activeCount, inactiveCount, fileByte, attachmentFileName);
                // generate file
                _doNotCallFacade.GenerateDoNotCallPhoneListFile(fileByte, fileName, success);

                response.ExportDataCount = success ? itemCount : 0;
                return(success);
            }
            return(true);
        }
コード例 #3
0
        private ExportFileResponse SetSuccessResponse(ExportFileResponse response)
        {
            response.EndTime      = DateTime.Now;
            response.ResultStatus = Constants.StatusResponse.Success;
            response.Error        = string.Empty;

            _logger.Debug("-- Finish Job --:ElapsedMilliseconds/" + response.ElapsedTime.TotalMilliseconds);
            return(response);
        }
コード例 #4
0
        private ExportFileResponse SetUnprocessResponse(ExportFileResponse response, string methodName)
        {
            response.EndTime      = DateTime.Now;
            response.ResultStatus = Constants.StatusResponse.NotProcess;
            response.Error        = string.Empty;

            _logger.Info($"I:--NOT START--:--{methodName}--");
            _logger.Debug($"-- Finish Cron Job --:ElapsedMilliseconds/" + response.ElapsedTime.TotalMilliseconds);
            return(response);
        }
コード例 #5
0
        private ExportFileResponse SetInvalidLoginResponse(ExportFileResponse response)
        {
            response.EndTime = DateTime.Now;
            string errorMessage = "Bad Request, the header is not valid";

            response.Error = errorMessage;

            _logger.Info($"O:--LOGIN--:Error Message/{errorMessage}");
            return(response);
        }
コード例 #6
0
        public ExportFileResponse ExportFile(ExportFileRequest request)
        {
            string   methodName = $"{nameof(DoNotCallBatchProcess)}.{nameof(ExportFile)}";
            var      response   = new ExportFileResponse();
            DateTime startTime  = DateTime.Now;

            response.StartTime = startTime;
            try
            {
                if (request == null || request.Header == null)
                {
                    throw new NullReferenceException($"{methodName}: Request/Header is null!");
                }
                var requestHeader = request.Header;

                response.Header = GetResponseHeader(requestHeader, methodName);
                // Set batch process status
                if (AppLog.BatchProcessStart(Constants.BatchProcessCode.ExportDoNotCallUpdateFile, startTime) == false)
                {
                    return(SetUnprocessResponse(response, methodName));
                }

                // Authenticate user
                if (!ValidateServiceRequest(request.Header))
                {
                    return(SetInvalidLoginResponse(response));
                }

                _logger.DebugFormat("-- XMLRequest --\n{0}", request.SerializeObject());

                // Export
                ExportUpdateData(response);

                return(SetSuccessResponse(response));
            }
            catch (Exception ex)
            {
                DateTime errorTime = DateTime.Now;
                response    = SetErrorResponse(response, ex);
                _mailSender = CSMMailSender.GetCSMMailSender();
                _mailSender.NotifyFailExportDoNotCall(response.StartTime, errorTime, response.ElapsedTime, response.Error, response.ExportDataCount);

                return(response);
            }
            finally
            {
                UpdateBatchProcessStatus(response);
                //Insert Audit Log
                bool   success = response.ResultStatus == Constants.StatusResponse.Success;
                string detail  = !string.IsNullOrWhiteSpace(response.Error) ? response.Error : response.Description;
                InsertAuditLog(methodName, success, detail ?? response.ResultStatus);
            }
        }
コード例 #7
0
        private static void UpdateBatchProcessStatus(ExportFileResponse response)
        {
            if (response.ResultStatus != Constants.StatusResponse.NotProcess)
            {
                int batchStatus = (response.ResultStatus == Constants.StatusResponse.Success)
                    ? Constants.BatchProcessStatus.Success
                    : Constants.BatchProcessStatus.Fail;

                string detail = string.IsNullOrWhiteSpace(response.Error) ? response.Description : response.Error;

                AppLog.BatchProcessEnd(Constants.BatchProcessCode.ExportDoNotCallUpdateFile, batchStatus, response.EndTime, response.ElapsedTime, detail);
            }
        }
コード例 #8
0
        public ExportFileResponse ExportFileToTOT(ExportFileToTotRequest request)
        {
            string   methodName = $"{nameof(DoNotCallBatchProcess)}.{nameof(ExportFileToTOT)}";
            var      response   = new ExportFileResponse();
            DateTime startTime  = DateTime.Now;

            response.StartTime = startTime;
            try
            {
                if (request == null || request.Header == null)
                {
                    throw new NullReferenceException($"{methodName}: Request/Header is null!");
                }

                Header requestHeader = request.Header;

                response.Header = GetResponseHeader(requestHeader, methodName);

                // Authenticate user
                if (!ValidateServiceRequest(requestHeader))
                {
                    return(SetInvalidLoginResponse(response));
                }

                _logger.DebugFormat("-- XMLRequest --\n{0}", request.SerializeObject());

                // Export
                bool exportSuccess = ExportDataToTOT(request.ExecuteTime, response);

                if (exportSuccess)
                {
                    response.ResultStatus = Constants.StatusResponse.Success;
                }

                return(SetSuccessResponse(response));
            }
            catch (Exception ex)
            {
                return(SetErrorResponse(response, ex));
            }
            finally
            {
                //Insert Audit Log
                bool   success = response.ResultStatus == Constants.StatusResponse.Success;
                string detail  = !string.IsNullOrWhiteSpace(response.Error) ? response.Error : response.Description;
                InsertAuditLog(methodName, success, detail ?? response.ResultStatus);
            }
        }
コード例 #9
0
        private void ExportUpdateData(ExportFileResponse response)
        {
            _doNotCallFacade = new DoNotCallFacade();
            // Update expired items and get update data list
            List <DoNotCallUpdatePhoneNoModel> newDataList = _doNotCallFacade.GetUpdatedDoNotCallPhoneNoList();
            int dataCount = newDataList?.Count ?? 0;

            if (dataCount > 0)
            {
                // Export new data to csv file
                response.ExportDataCount = dataCount;
                _doNotCallFacade.ExportDoNotCallUpdateFile(newDataList);
                response.Description = $"Exported data count: {dataCount}";
            }
            else
            {
                response.Description = "File not created. No new update data";
            }
        }