示例#1
0
        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);
            }
        }
示例#2
0
        /// <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);
                }
            }
        }