public void GetCustomerConsentDataReport() { try { var accounts = _corporateAccountRepository.GetAllCorporateAccountToSendConsentData(); if (accounts.IsNullOrEmpty()) { _logger.Info("No Account marked to Send Consent Data to Matrix"); return; } foreach (var corporateAccount in accounts) { try { _logger.Info("starting for Account " + corporateAccount.Tag); var serviceReportSettings = string.Format(_settings.CustomerConsentDataReportSettingPath, corporateAccount.Tag); var customSettings = _customSettingManager.Deserialize(serviceReportSettings); var fromDate = customSettings.LastTransactionDate; customSettings.LastTransactionDate = DateTime.Now; _customSettingManager.SerializeandSave(serviceReportSettings, customSettings); var filter = new CustomerConsentDataListModelFilter { AccountId = corporateAccount.Id, Tag = corporateAccount.Tag, FromDate = fromDate }; var pageNumber = 1; var destinationFoler = Path.Combine(_settings.CustomerConsentDataFilePath, corporateAccount.Tag); DirectoryOperationsHelper.CreateDirectoryIfNotExist(destinationFoler); var fileName = "CustomerConsentDataReport_" + DateTime.Today.ToString("yyyyMMdd") + ".txt"; var destinationFile = Path.Combine(destinationFoler, fileName); DirectoryOperationsHelper.DeleteFileIfExist(destinationFile); WriteHeader(destinationFile); var index = 1; while (true) { int totalRecords = 0; var customers = _customerRepository.GetCustomerConsentDataReport(filter, pageNumber, PageSize, out totalRecords); if (customers != null) { foreach (var customer in customers) { _logger.Info("CustomerId:" + customer.CustomerId); _logger.Info(index + " out of " + totalRecords); index++; var model = new CustomerConsentDataViewModel(); model.AcesId = customer.AcesId; if (!string.IsNullOrEmpty(customer.HomePhoneNumber.ToString()) && (fromDate == null || (customer.PhoneHomeConsentUpdateDate.HasValue && customer.PhoneHomeConsentUpdateDate.Value >= fromDate))) { model.TelephoneNumber = customer.HomePhoneNumber.FormatPhoneNumber; model.ConsentType = ((PatientConsent)customer.PhoneHomeConsentId).GetDescription(); model.ConsentDateTime = customer.PhoneHomeConsentUpdateDate; WriteData(model, destinationFile); } if (!string.IsNullOrEmpty(customer.MobilePhoneNumber.ToString()) && (fromDate == null || (customer.PhoneCellConsentUpdateDate.HasValue && customer.PhoneCellConsentUpdateDate.Value >= fromDate))) { model.TelephoneNumber = customer.MobilePhoneNumber.FormatPhoneNumber; model.ConsentType = ((PatientConsent)customer.PhoneCellConsentId).GetDescription(); model.ConsentDateTime = customer.PhoneCellConsentUpdateDate; WriteData(model, destinationFile); } if (!string.IsNullOrEmpty(customer.OfficePhoneNumber.ToString()) && (fromDate == null || (customer.PhoneOfficeConsentUpdateDate.HasValue && customer.PhoneOfficeConsentUpdateDate.Value >= fromDate))) { model.TelephoneNumber = customer.OfficePhoneNumber.FormatPhoneNumber; model.ConsentType = ((PatientConsent)customer.PhoneOfficeConsentId).GetDescription(); model.ConsentDateTime = customer.PhoneOfficeConsentUpdateDate; WriteData(model, destinationFile); } } } if ((pageNumber * PageSize) >= totalRecords) { break; } pageNumber++; } if (_settings.CustomerConsentDataReportSendToSftp) { if (ExportReportOnMatrixSftp(fileName, destinationFile)) { _logger.Info("File posted on client SFTP"); } else { _logger.Info("File didn't posted,some error occurred."); } } _logger.Info("completed for Account " + corporateAccount.Tag); } catch (Exception ex) { _logger.Error("some error occurred while creating customer consent data report for Account " + corporateAccount.Tag); _logger.Error("Message: " + ex.Message); _logger.Error("Stack Trace: " + ex.StackTrace); } } } catch (Exception ex) { _logger.Error("Message: " + ex.Message); _logger.Error("Stack Trace: " + ex.StackTrace); } }
private void WriteData(CustomerConsentDataViewModel model, string fileName) { var fs = new FileStream(fileName, FileMode.Append); var streamWriter = new StreamWriter(fs); try { var members = (typeof(CustomerConsentDataViewModel)).GetMembers(); var values = new List <string>(); foreach (var memberInfo in members) { if (memberInfo.MemberType != MemberTypes.Property) { continue; } var propInfo = (memberInfo as PropertyInfo); if (propInfo != null) { if (propInfo.PropertyType == typeof(FeedbackMessageModel) || propInfo.PropertyType == typeof(IEnumerable <OrderedPair <string, string> >)) { continue; } } else { continue; } bool isHidden = false; FormatAttribute formatter = null; var attributes = propInfo.GetCustomAttributes(false); if (!attributes.IsNullOrEmpty()) { foreach (var attribute in attributes) { if (attribute is HiddenAttribute) { isHidden = true; break; } if (attribute is FormatAttribute) { formatter = (FormatAttribute)attribute; } } } if (isHidden) { continue; } var obj = propInfo.GetValue(model, null); if (obj == null) { values.Add(string.Empty); } else if (formatter != null) { values.Add(formatter.ToString(obj)); } else { values.Add(obj.ToString()); } } streamWriter.Write(string.Join(Delimiter, values.ToArray()) + Environment.NewLine); } catch (Exception ex) { _logger.Error("While creating CSV File : " + ex.Message + "\n\t" + ex.StackTrace + "\n\n"); } finally { streamWriter.Close(); streamWriter.Dispose(); fs.Close(); fs.Dispose(); } }