private void GenerateAccountsReports() { Log("GenerateAccountsReports was started"); //Get list of latest calcs for each trader which are were not report-processed. var lstLatestCalcedVM = _dbCommunicator.GetLatestCalcedVmData(_stockExchId); foreach (var dataLatestCalcedVMVal in lstLatestCalcedVM) { try { int currVmCalcId = (int)dataLatestCalcedVMVal["max_clearing_calced_vm_id"]; Log("Porocessing " + currVmCalcId); Log("Step 1 - preparing data for report"); var dataClearingCalsSummary = _dbCommunicator.GetPoslogClearingCalsSummary(currVmCalcId); if (IsDBNullCalcedVMVal(dataLatestCalcedVMVal) || IsDBNullSummaryVMVal(dataClearingCalsSummary[0])) { Log("Incorrect data. Continue."); continue; } CReportDataAccounts repDataAccounts = new CReportDataAccounts(_useRealServer, _client); repDataAccounts.GenStockExchResultsTable(StockExchName, dataLatestCalcedVMVal, dataClearingCalsSummary[0]); repDataAccounts.GenFooterTotalResultsTable(dataClearingCalsSummary[0]); var dataClearingCalsInstrumentsSummary = _dbCommunicator.GetPoslogClearingCalsInstrumentsSummary(currVmCalcId); repDataAccounts.GenDataInstrumentsResultsTable(dataClearingCalsInstrumentsSummary); var dataClearingCalsInstruments = _dbCommunicator.GetPoslogClearingCalsInstruments(currVmCalcId); //repData was set 2017-08-18 repDataAccounts.SetSessionBeginEnd(dataLatestCalcedVMVal); repDataAccounts.GenListVMDynamics(dataClearingCalsInstruments); var currentMonthOperations = _dbCommunicator.GetCurrentMonthOperations((int)dataLatestCalcedVMVal["account_trade_Id"], (DateTime)dataLatestCalcedVMVal["DtEnd"]); repDataAccounts.GenAccountOperationsTable(currentMonthOperations); // repData.SetSessionBeginEnd(dataLatestCalcedVMVal); // was before 2017-08-18 repDataAccounts.GenPoslogTable(dataClearingCalsInstruments); _pdfGeneratorAccounts = new CPDFGeneratorAccounts(repDataAccounts, _useRealServer, _stockExchId); string dirName = GetDirectory(repDataAccounts.DtSessionEnd); string filePath = dirName + "\\" + ((int)dataLatestCalcedVMVal["account_trade_Id"]).ToString("D3") + ".pdf"; CUtil.CreateDirIfNotExist(dirName); Log("Step 2 - generating PDF file"); _pdfGeneratorAccounts.GeneratePDFFile(filePath); Log("Step 3 - sending report by e-mail"); string stDt = ((DateTime)dataLatestCalcedVMVal["DtEnd"]).ToString("dd.MM.yyyy"); _mailer.SendMail( toAddress: dataLatestCalcedVMVal["email"].ToString(), title: "Торговый отчет за " + stDt, stContent: "Высылаем торговый отчет за " + stDt, fileName: filePath ); Log("Step 4 - updating send report flag"); _dbCommunicator.UpdateReportSent((int)dataLatestCalcedVMVal["max_clearing_calced_vm_id"]); } catch (Exception e) { Error("Error processing report", e); } } }
public CPDFGeneratorAccounts(CReportDataAccounts reportData, bool useRealServer, int stockExchId) { _reportData = reportData; _useRealServer = useRealServer; _stockExchId = stockExchId; }