/// <summary> /// Batch Process /// </summary> /// <param name="username"></param> /// <param name="password"></param> /// <returns></returns> public CreateSrFromReplyEmailTaskResponse CreateSRActivityFromReplyEmail(string username, string password) { ThreadContext.Properties["EventClass"] = ApplicationHelpers.GetCurrentMethod(1); ThreadContext.Properties["RemoteAddress"] = ApplicationHelpers.GetClientIP(); //ThreadContext.Properties["UserID"] = "CSM_SCHEDTASK"; if (!string.IsNullOrWhiteSpace(username)) { ThreadContext.Properties["UserID"] = username.ToUpperInvariant(); } long elapsedTime = 0; string errorMessage = string.Empty; DateTime schedDateTime = DateTime.Now; CreateSrFromReplyEmailTaskResponse taskResponse = null; _auditLog = new AuditLogEntity(); _auditLog.Module = Constants.Module.Batch; _auditLog.Action = Constants.AuditAction.SyncSRStatusFromReplyEmail; _auditLog.IpAddress = ApplicationHelpers.GetClientIP(); System.Diagnostics.Stopwatch stopwatch = System.Diagnostics.Stopwatch.StartNew(); _logger.Debug("-- Start Cron Job --:--Get CreateSRActivityFromReplyEmail--"); #region "BatchProcess Start" if (AppLog.BatchProcessStart(Constants.BatchProcessCode.SyncSRStatusFromReplyEmail, schedDateTime) == false) { _logger.Info("I:--NOT PROCESS--:--CreateSRActivityFromReplyEmail--"); stopwatch.Stop(); elapsedTime = stopwatch.ElapsedMilliseconds; _logger.Debug("-- Finish Cron Job --:ElapsedMilliseconds/" + elapsedTime); taskResponse = new CreateSrFromReplyEmailTaskResponse { SchedDateTime = schedDateTime, ElapsedTime = elapsedTime, StatusResponse = new CSM.Service.Messages.Common.StatusResponse { Status = Constants.StatusResponse.NotProcess } }; return(taskResponse); } #endregion //_logger.Debug("-- Start Cron Job --:--Get CreateSRActivityFromReplyEmail--"); if (!ApplicationHelpers.Authenticate(username, password)) { errorMessage = "Username and/or Password Invalid."; taskResponse = new CreateSrFromReplyEmailTaskResponse { SchedDateTime = schedDateTime, StatusResponse = new CSM.Service.Messages.Common.StatusResponse { Status = Constants.StatusResponse.Failed, ErrorCode = string.Empty, Description = errorMessage } }; _logger.InfoFormat("O:--LOGIN--:Error Message/{0}", errorMessage); //AppLog.AuditLog(_auditLog, LogStatus.Fail, "Username and/or Password Invalid."); return(taskResponse); } try { _logger.Info("I:--START--:--CreateSRActivityFromReplyEmail--"); //int NumOfTotal = 0; #region "Process Batch" var countSuccess = 0; var countError = 0; _srFacade = new ServiceRequestFacade(); _srFacade.CreateSRActivityFromReplyEmail(ref countSuccess, ref countError); #endregion _logger.Info("O:--SUCCESS--:--CreateSRActivityFromReplyEmail--"); stopwatch.Stop(); elapsedTime = stopwatch.ElapsedMilliseconds; _logger.Debug("-- Finish Cron Job --:ElapsedMilliseconds/" + elapsedTime); StringBuilder taskResult = new StringBuilder(""); taskResult.Append(string.Format("Username = {0}\n", username)); taskResult.Append(string.Format("SchedDateTime = {0}\n", schedDateTime)); taskResult.Append(string.Format("ElapsedTime = {0}\n", elapsedTime)); taskResult.Append(string.Format("Count Success = {0}\n", countSuccess)); taskResult.Append(string.Format("Count Error = {0}\n", countError)); taskResult.Append(string.Format("Total = {0}\n", countSuccess + countError)); AppLog.AuditLog(_auditLog, ((countError > 0) ? LogStatus.Fail : LogStatus.Success), taskResult.ToString()); taskResponse = new CreateSrFromReplyEmailTaskResponse { SchedDateTime = schedDateTime, ElapsedTime = elapsedTime, StatusResponse = new CSM.Service.Messages.Common.StatusResponse { Status = (countError > 0) ? Constants.StatusResponse.Failed : Constants.StatusResponse.Success }, NumOfComplete = countSuccess, NumOfError = countError, NumOfTotal = countSuccess + countError }; return(taskResponse); } catch (Exception ex) { _logger.InfoFormat("O:--FAILED--:--CreateSRActivityFromReplyEmail--:--Error Message/{0}", ex.Message); _logger.Error("Exception occur:\n", ex); stopwatch.Stop(); elapsedTime = stopwatch.ElapsedMilliseconds; _logger.Debug("-- Finish Cron Job --:ElapsedMilliseconds/" + elapsedTime); AppLog.AuditLog(_auditLog, LogStatus.Fail, ex.Message); taskResponse = new CreateSrFromReplyEmailTaskResponse { SchedDateTime = schedDateTime, ElapsedTime = elapsedTime, StatusResponse = new CSM.Service.Messages.Common.StatusResponse { Status = Constants.StatusResponse.Failed, ErrorCode = string.Empty, Description = "Fail to CreateSRActivityFromReplyEmail" } }; return(taskResponse); } finally { // Send mail to system administrator CreateSRActivitySendMail(taskResponse); #region "BatchProcess End" if (taskResponse != null && taskResponse.StatusResponse != null && taskResponse.StatusResponse.Status != Constants.StatusResponse.NotProcess) { int batchStatus = (taskResponse.StatusResponse.Status == Constants.StatusResponse.Success) ? Constants.BatchProcessStatus.Success : Constants.BatchProcessStatus.Fail; DateTime endTime = taskResponse.SchedDateTime.AddMilliseconds(taskResponse.ElapsedTime); TimeSpan processTime = endTime.Subtract(taskResponse.SchedDateTime); string processDetail = !string.IsNullOrEmpty(taskResponse.StatusResponse.Description) ? taskResponse.StatusResponse.Description : taskResponse.ToString(); AppLog.BatchProcessEnd(Constants.BatchProcessCode.SyncSRStatusFromReplyEmail, batchStatus, endTime, processTime, processDetail); } #endregion } }