public void SendInputFileEmail(int runComponentId, string component, string runNumber, string token, string message = "Success") { try { SingletonLogger.Instance.Debug("Fetching email template for TOKEN = " + token); Application appInfo = _applicationRepository.Find(_runNumberRepository.GetApplicationIdByRunNumber(runNumber)); int componentId = _runComponentRepository.Find(runComponentId).ComponentId; EmailTemplate template = _emailTemplateRepository.EmailTemplate(x => x.ClientId == appInfo.ClientId && x.ApplicationId == appInfo.ApplicationId && x.ApplicationComponentId == componentId && x.EmailToken == token); if (template != null) { EmailTracking tracking = new EmailTracking() { RunNumberId = _runNumberRepository.GetRunNumberIdByRunNumber(runNumber), FromEmailId = template.EmailFromSmtpId.ToString(), EmailTemplateId = template.EmailTemplateId, Subjects = template.Subject, Body = template.Body, EmailStatus = (int)EmailStatusType.Ready }; if (tracking != null) { tracking.SentDate = DateTime.Now; tracking.Body = tracking.Body.Replace("{{CLIENT_NAME}}", appInfo.ClientId.ToString()); tracking.Body = tracking.Body.Replace("{{APPLICATION_NAME}}", appInfo.Name).Replace("{{COMPONENT_NAME}}", component); tracking.Body = tracking.Body.Replace("{{MESSAGE}}", message); tracking.Subjects = tracking.Subjects.Replace("{{COMPONENT_NAME}}", component).Replace("{{APPLICATION_NAME}}", appInfo.Name).Replace("{{CLIENT_NAME}}", appInfo.ClientId.ToString()); if (_emailTrackingRepository.Save(tracking) != 0) { SingletonLogger.Instance.Error("Error occured while email saving to email tracking."); } } } else { SingletonLogger.Instance.Debug("Email Template not found in database for TOKEN = " + token); } } catch (Exception ex) { SingletonLogger.Instance.Error("Error occured while sending email about file download = " + ex.Message); } }
/// <summary> /// Update Status from status file in database table RunComponentStatus 2 for error ,3 for Complete. /// </summary> /// <param name="StatusFilePath"></param> public void UpdateStatus(string StatusFilePath) { SingletonLogger.Instance.Debug("Component started for status update for the status files at " + StatusFilePath); if (!Directory.Exists(StatusFilePath)) { throw new Exception(StatusFilePath + " status directory does Not Exists."); } var statusFiles = Directory.GetFiles(StatusFilePath, "status*.xml"); if (statusFiles.Count() == 0) { SingletonLogger.Instance.Debug("No Status file found at '" + StatusFilePath + "' location."); return; } SingletonLogger.Instance.Debug(" Total " + statusFiles.Count() + " status files found for processing."); foreach (var statusFile in statusFiles) { try { SingletonLogger.Instance.Debug("Status file : " + statusFile); int runComponentId; string status, runNumber, application, componentName, client, errorDetail, endDate; GetStatusInfoFromStatusFile(statusFile, out runComponentId, out status, out runNumber, out client, out componentName, out application, out errorDetail, out endDate); var runnumberId = _runNumberRepository.GetRunNumberIdByRunNumber(runNumber); SingletonLogger.Instance.Debug("Run Number ID : " + runnumberId); SendStatusEmail statusEmail = new SendStatusEmail(); if (status.ToUpper() == "ERROR") { SingletonLogger.Instance.Debug("In error mail block"); //If this is a optional component then update Job Status Ready to run if (GetAppComponentTypeByRunNumberNComponentId(runNumber, runComponentId)) { //Adding new Status for Optional component (4) UpdateComponentStatusById(runComponentId, ComponentStatusType.Optional, endDate, errorDetail); SingletonLogger.Instance.Debug("update ComponentStatus in RunComponentStatus table to OptionalErrored"); UpdateRunStatusByRunNumberId(runnumberId, (byte)RunNumberStatusType.Running); // Status 1 mean step ready to run SingletonLogger.Instance.Debug("update RunStatus in RunNumberDetails table to 1"); } else { UpdateComponentStatusById(runComponentId, ComponentStatusType.Error, endDate, errorDetail); SingletonLogger.Instance.Debug("update ComponentStatus in RunComponentStatus table to Error"); UpdateRunStatusByRunNumberId(runnumberId, (byte)RunNumberStatusType.Error); // Status 3 mean step error out SingletonLogger.Instance.Debug("update RunStatus in RunNumberDetails table to 3"); } if (ConfigurationManager.AppSettings["ErrorMail"] == "True") { SingletonLogger.Instance.Debug("Error Mail settings are True"); SingletonLogger.Instance.Debug("Send email..."); statusEmail.SendInputFileEmail(runComponentId, componentName, runNumber, "{{" + EmailKeyword.COMPONENT_ERROR + "}}", errorDetail); } } else if (status.ToUpper() == "SUCCESS") { SingletonLogger.Instance.Debug("In success mail block"); UpdateComponentStatusById(runComponentId, ComponentStatusType.Completed, endDate, errorDetail); UpdateRunStatusByRunNumberId(runnumberId, (byte)RunNumberStatusType.Ready); // Status 1 mean step ready to run SingletonLogger.Instance.Debug("update RunStatus in RunNumberDetails table to 1"); if (ConfigurationManager.AppSettings["SuccessMail"] == "True") { SingletonLogger.Instance.Debug("Success Mail settings are True"); SingletonLogger.Instance.Debug("Send email..."); statusEmail.SendInputFileEmail(runComponentId, componentName, runNumber, "{{" + EmailKeyword.COMPONENT_SUCCESS + "}}"); } } else { SingletonLogger.Instance.Error("Status value is not provided in status file." + statusFile + ". Invalid status file."); continue; } try { // Move status file to backup. var statusBackUpDir = Path.Combine(new FileInfo(statusFile).Directory.FullName, "Back"); MoveFile(statusFile, statusBackUpDir, componentName); SingletonLogger.Instance.Debug("Status file has been moved to " + statusBackUpDir + " Directory"); } catch (Exception ex) { SingletonLogger.Instance.Error("Error while moving Status file to Status Directory." + ex.ToString()); } } catch (Exception ex) { SingletonLogger.Instance.Error(ex.Message); } } }