/// <summary> /// Update Component status by RunComponentId in 'RunComponentStatus' table /// </summary> /// <param name="Id">RunComponentId</param> /// <param name="updatedValue">Status Value</param> public void UpdateComponentStatusById(int Id, ComponentStatusType updatedValue, string endDate, string message) { try { //calling the service contract. var runComponentStatusInfo = _runComponentRepository.Find(Id); runComponentStatusInfo.ComponentStatusId = (byte)updatedValue; runComponentStatusInfo.EndDate = DateTime.Parse(endDate); runComponentStatusInfo.Message = message; _runComponentRepository.Save(runComponentStatusInfo); } catch (Exception ex) { throw new Exception("Error occur while updating run component status in 'RunComponentStatus' table." + ex.Message); } }
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); } }
public void Run() { try { #region Trigger file details SingletonLogger.Instance.Debug("Process start reading Trigger XML file from " + TriggerPath); TriggerFileReader objTriggerFileReader = new TriggerFileReader(); objTriggerFileReader.TriggerFileLocaton = TriggerPath; var triggerFileDetail = objTriggerFileReader.GetTriggerFileDetail(); StatusDirectory = triggerFileDetail.ComponentStatusDirectory + "\\status_" + Path.GetFileName(TriggerPath); SingletonLogger.Instance.Debug("Process successfully read trigger XML file."); #endregion #region Mapper Setting mapper = new PatternMatchingMapper(); mapper.SetCurrentDateFormat(); mapper.SetClientAndAppDetails(triggerFileDetail.RunNumber); mapper.SetClientAndAppDetails(triggerFileDetail.ClientName, triggerFileDetail.ApplicationName); #endregion #region Run Process var application = test.Find(1); var runItem = _runComponentStatusRepository.Find(triggerFileDetail.RunComponentStatusId).RunNumberId; var allCompeletedComponents = _runComponentStatusRepository.FindAll().Where(x => x.RunNumberId == runItem && x.ComponentStatusId == (byte)ComponentStatusType.Completed).Select(x => x.ComponentId).ToList(); var applicationId = _runDetailRepository.GetApplicationIdByRunNumber(triggerFileDetail.RunNumber); SingletonLogger.Instance.Debug(allCompeletedComponents.Count() + " component has been completed."); foreach (var item in allCompeletedComponents) { var recordList = _uploadFileRepository.FindAllByAppNComponentId(applicationId, item); foreach (var recordItem in recordList) { List <string> fileList = new List <string>(); var inputPath = mapper.EvaluateString(recordItem.FileInputPath); foreach (var mask in recordItem.InputFileMask.Split('|').ToList()) { Regex reg = new Regex(mask.Trim()); fileList.AddRange(Directory.GetFiles(inputPath).Where(path => reg.IsMatch(path)).ToList()); } if (fileList.Count > 0) { SingletonLogger.Instance.Debug(fileList.Count + " files found for move from " + inputPath); if (recordItem.IsArchiveOutputRequired) { var archiveName = mapper.EvaluateString(recordItem.ArchiveFileExpression); var fileTransferSetting = _fileTransferSettingRepository.Find(recordItem.ArchiveFileTransferSettingId); var outputPath = mapper.EvaluateString(recordItem.ArchiveOutputPath); Manager = new TransferManager(SetAdaptorSetting(fileTransferSetting, outputPath)); Manager.Processing(fileList); SingletonLogger.Instance.Debug(fileList.Count + " files has been archived successfully."); } if (recordItem.IsMoveFileRequired) { var moveName = mapper.EvaluateString(recordItem.MoveFileExpression); var fileTransferSetting = _fileTransferSettingRepository.Find(recordItem.MoveFileTransferSettingId); var outputPath = mapper.EvaluateString(recordItem.MoveFilePath); Manager = new TransferManager(SetAdaptorSetting(fileTransferSetting, outputPath)); Manager.Processing(fileList); SingletonLogger.Instance.Debug(fileList.Count + " files has been moved successfully."); } } } } SingletonLogger.Instance.Debug("Files has been uploaded successfully."); #endregion #region Move trigger file with status objXmlHelper.WriteComponentStatusInTriggerFile(TriggerPath, componentStartDate, DateTime.Now.ToString()); File.Move(TriggerPath, StatusDirectory); #endregion } catch (Exception ex) { TriggerStatus(ex); } }