public void PollForPotentialPcpChange() { try { var timeOfDay = DateTime.Now; _logger.Info("Time of day : " + timeOfDay.ToString("HH:mm:ss")); if (!_settings.IsDevEnvironment && _runningDate != DateTime.Today.Day) { _logger.Info("Report is generated only in 1st week of the month , currently selected run Date is " + _settings.PcpChangeReportRunDate); return; } if (_accountId <= 0) { _logger.Info("Account Id Not Provided"); return; } var account = _corporateAccountRepository.GetById(_accountId); if (account == null) { _logger.Info("Account not exists"); return; } var customSetting = _customSettingManager.Deserialize(_pcpCustomSetting); List <DateTime> toDates = null; if (customSetting.LastTransactionDate != null) { toDates = GetToDates(customSetting.LastTransactionDate.Value.AddMonths(1)); //to pick correct records _logger.Info("Generating Potential Pcp change Report for Month " + customSetting.LastTransactionDate.Value.AddMonths(1)); } else { _logger.Info("Generating report for first time as LastTransactionDate is missing from custom setting XML"); toDates = GetToDates(_cutoffDate); } foreach (var todate in toDates) { var filter = new PotentialPcpChangeReportModelFilter { AccountId = _accountId, StartDate = new DateTime(todate.Year, todate.Month, 1), EndDate = todate }; _logger.Info(string.Format("Generating report for date: {0} to {1}", filter.StartDate, filter.EndDate)); var eventScheduleModelFilter = new EventScheduleListModelFilter { AccountId = _accountId, FromDate = filter.StartDate, ToDate = filter.EndDate }; GenerateReport(eventScheduleModelFilter, filter, account); _logger.Info(string.Format("Completed Generating Report for Potential Pcp Change")); } } catch (Exception exception) { _logger.Error("Some error occurred "); _logger.Error("Message: " + exception.Message); _logger.Error("Stack Trace: " + exception.StackTrace); } }
private void GenerateReport(EventScheduleListModelFilter eventScheduleModelFilter, PotentialPcpChangeReportModelFilter filter, CorporateAccount account) { var stateIds = (IReadOnlyCollection <long>)_eventRepository.GetEventStateByAccountId(eventScheduleModelFilter); if (stateIds.IsNullOrEmpty()) { _logger.Info("No State found for Wellmed"); //Do not return from here as we are updating last transaction date at last } var states = _stateRepository.GetStates(stateIds); foreach (var state in states) { try { _logger.Info("Generating Report for State: " + state.Name); var dataGen = new ExportableDataGenerator <PotentialPcpChangeReportViewModel, PotentialPcpChangeReportModelFilter>(_potentialPcpChangeReportService.GetPotentialPcpChangeData, _logger); filter.StateId = state.Id; var model = dataGen.GetData(filter); if (model != null && !model.Collection.IsNullOrEmpty()) { var exporter = ExportableDataGeneratorProcessManager <ViewModelBase, ModelFilterBase> .GetCsvExporter <PotentialPcpChangeReportViewModel>(); var path = string.Format(_pcpChangeReportPath, account.FolderName); var reportfilePath = Path.Combine(path, state.Name); DirectoryOperationsHelper.CreateDirectoryIfNotExist(reportfilePath); reportfilePath = Path.Combine(reportfilePath, string.Format("WellMed_PCP_Change_Report_{0}.csv", filter.StartDate.ToString("yyyyMM"))); _logger.Info("File path : " + reportfilePath); DirectoryOperationsHelper.DeleteFileIfExist(reportfilePath); _baseExportableReportHelper.GenerateCsv(reportfilePath, exporter, model.Collection); if (_sendReportToSftp && DirectoryOperationsHelper.IsFileExist(reportfilePath)) { _logger.Info("Starting to post Potential Pcp Change report on sftp for StateId: " + state.Id + " State: " + state.Name); var sftpResultExportDirectory = string.Format(_sftpPathForPcpChangeReport, state.Name); var processFtp = new ProcessFtp(_logger, _sftpHost, _sftpUserName, _sftpPassword); processFtp.UploadSingleFile(reportfilePath, sftpResultExportDirectory, ""); _logger.Info("Potential Pcp Change report posted on sftp for StateId: " + state.Id + " State: " + state.Name); } _logger.Info("Potential Pcp Change Report generation completed for StateId: " + state.Id + " State: " + state.Name); } else { _logger.Info("No data found for StateId: " + state.Id + " State: " + state.Name); } } catch (Exception exception) { _logger.Error("Error occurred during generation of report for StateId: " + state.Id); _logger.Error("Message: " + exception.Message); _logger.Error("Stack Trace: " + exception.StackTrace); } } //update custom setting XML var customSetting = _customSettingManager.Deserialize(_pcpCustomSetting); customSetting.LastTransactionDate = filter.EndDate; _customSettingManager.SerializeandSave(_pcpCustomSetting, customSetting); }