private void bwAutoRanking_DoWork(object sender, DoWorkEventArgs e) { ProgressStart(); autoMode = true; var macroAttempt = 1; var macroMaxAttempts = 4; retrymacro: Log.n("Auto: Kjører makro.. [" + macroAttempt + "]"); DateTime date = appConfig.dbTo; double span = (DateTime.Now - appConfig.dbTo).TotalDays; if (span > 31) date = DateTime.Now.AddMonths(-1); // Begrens oss til å importere en måned bak i tid if (appConfig.dbTo == DateTime.Now) date = GetFirstDayOfMonth(appConfig.dbTo); var macroForm = (FormMacro)StartMacro(date, macroProgram, bwAutoRanking, macroAttempt); if (macroForm.errorCode != 0) { // Feil oppstod under kjøring av macro macroAttempt++; Log.n("Auto: Feil oppstod under kjøring av makro. Feilbeskjed: " + macroForm.errorMessage + " Kode: " + macroForm.errorCode, Color.Red); for (int i = 0; i < 60; i++) { Application.DoEvents(); System.Threading.Thread.Sleep(50); } if (macroForm.errorCode == 6) return; if (macroAttempt < macroMaxAttempts && macroForm.errorCode != 2) // Vi har flere forsøk igjen, samt bruker har ikke avbrutt prosessen goto retrymacro; return; } if (!File.Exists(appConfig.csvElguideExportFolder + @"\irank.csv") || File.GetLastWriteTime(appConfig.csvElguideExportFolder + @"\irank.csv").Date != DateTime.Now.Date) { // CSV finnes ikke eller filen er ikke oppdatert i dag i.e. data ble ikke eksportert riktig med makro macroAttempt++; Log.n("Auto: CSV er IKKE oppdatert, eller ingen tilgang. Sjekk CSV lokasjon og makro innstillinger.", Color.Red); for (int i = 0; i < 60; i++) { Application.DoEvents(); System.Threading.Thread.Sleep(50); } if (macroAttempt < macroMaxAttempts && macroForm.errorCode != 2) // Vi har flere forsøk igjen, samt bruker har ikke avbrutt prosessen goto retrymacro; return; } Log.n("Auto: Importerer data.."); csvFilesToImport.Clear(); ImportManager importMng = new ImportManager(this, csvFilesToImport); importMng.DoImportTransactions(bwAutoRanking, true); if (importMng.returnCode != 0) { // Feil under importering macroAttempt++; Log.n("Auto: Feil oppstod under importering. Kode: " + importMng.returnCode, Color.Red); for (int i = 0; i < 60; i++) { Application.DoEvents(); System.Threading.Thread.Sleep(50); } if (macroAttempt < macroMaxAttempts && macroForm.errorCode != 2) goto retrymacro; return; } // Oppdaterer gjeldene datoer.. vi oppdaterer UI etter ferdig jobb RetrieveDb(true); // Hvis valgt, avbryt utsending hvis vi ikke har tall fra i går. if (appConfig.epostOnlySendUpdated) { int dager = (DateTime.Now - appConfig.dbTo).Days; Log.n("Auto: Kontrollerer dato på sist transaksjon.. (dager: " + dager + ")"); if (dager > 1) { Log.n("Auto: Fant ingen transaksjoner fra gårsdagen. Avbryter..", Color.Red); return; } else Log.n("Auto: Fant transaksjoner fra gårsdagen. Fortsetter..", Color.Green); } // Legg ved service rapport if (appConfig.AutoService && appConfig.epostIncService && service.dbServiceDatoFra.Date != service.dbServiceDatoTil.Date) { Log.n("Auto: Legger ved service rapport.."); MakeServiceOversikt(true, bwAutoRanking); } if (appConfig.onlineImporterAuto) { OnlineImporter importer = new OnlineImporter(this); Log.n("Auto: Oppdatere Prisguide.no produkter.."); processing.SetText = "Oppdaterer Prisguide.no produkter.."; bool successfull = importer.StartProcessingPrisguide(bwAutoStore); if (!successfull) Log.n("Auto: Misslykket oppdatering av Prisguide.no produkter. Se logg for detaljer.", Color.Red); Log.n("Auto: Oppdatere Ukenytt produkter fra Elkjop.no.."); processing.SetText = "Oppdaterer Ukenytt produkter fra Elkjop.no.."; successfull = importer.StartProcessingWeekly(bwAutoStore); if (!successfull) Log.n("Auto: Misslykket oppdatering av Ukenytt produkter. Se logg for detaljer.", Color.Red); } List<string> openXmlFiles = new List<string> { }; if (appConfig.openXml_AllSalesRep_AutoSend) { bool sendNow = false; if (appConfig.openXml_AllSalesRep_AutoSend_Daily) sendNow = true; else { if (appConfig.ignoreSunday && DateTime.Now.Date.DayOfWeek == DayOfWeek.Sunday) sendNow = true; else if (!appConfig.ignoreSunday && DateTime.Now.Date.DayOfWeek == DayOfWeek.Monday) sendNow = true; } if (sendNow) { Log.n("Auto: Starter generering av regneark.."); string file = openXml.CreateDocumentSpecial(OpenXML.DOC_ALL_SALES_REP, bwAutoRanking); if (!string.IsNullOrEmpty(file)) openXmlFiles.Add(file); } } processing.SetText = "Klargjør for sending av ranking.."; Log.n("Auto: Konverterer ranking til PDF.."); KgsaEmail kgsaEmail = new KgsaEmail(this); string pdfAlt = CreatePDF("Full", "", bwAutoRanking); processing.SetText = "Sender e-post for gruppe 'Full'.."; if (openXmlFiles.Count > 0) { openXmlFiles.Add(pdfAlt); kgsaEmail.Send(openXmlFiles, appConfig.dbTo, "Full", appConfig.epostEmne, appConfig.epostBody); } else kgsaEmail.Send(pdfAlt, appConfig.dbTo, "Full", appConfig.epostEmne, appConfig.epostBody); string pdfComputer = CreatePDF("Computer", "", bwAutoRanking); processing.SetText = "Sender e-post for gruppe 'Computer'.."; kgsaEmail.Send(pdfComputer, appConfig.dbTo, "Computer", appConfig.epostEmne, appConfig.epostBody); string pdfAudioVideo = CreatePDF("AudioVideo", "", bwAutoRanking); processing.SetText = "Sender e-post for gruppe 'AudioVideo'.."; kgsaEmail.Send(pdfAudioVideo, appConfig.dbTo, "AudioVideo", appConfig.epostEmne, appConfig.epostBody); string pdfTelecom = CreatePDF("Telecom", "", bwAutoRanking); processing.SetText = "Sender e-post for gruppe 'Telecom'.."; kgsaEmail.Send(pdfTelecom, appConfig.dbTo, "Telecom", appConfig.epostEmne, appConfig.epostBody); string pdfCross = CreatePDF("Cross", "", bwAutoRanking); processing.SetText = "Sender e-post for gruppe 'Cross'.."; kgsaEmail.Send(pdfCross, appConfig.dbTo, "Cross", appConfig.epostEmne, appConfig.epostBody); string pdfVinn = CreatePDF("Vinnprodukter", "", bwAutoRanking); processing.SetText = "Sender e-post for gruppe 'Vinn'.."; kgsaEmail.Send(pdfVinn, appConfig.dbTo, "Vinnprodukter", appConfig.epostEmne, appConfig.epostBody); if (appConfig.ignoreSunday && DateTime.Now.Date.DayOfWeek == DayOfWeek.Sunday) { string pdfAltUkestart = CreatePDF("FullUkestart", "", bwAutoRanking); processing.SetText = "Sender e-post for gruppe 'FullUkestart'.."; kgsaEmail.Send(pdfAltUkestart, appConfig.dbTo, "FullUkestart", appConfig.epostEmne, appConfig.epostBody); } else if (!appConfig.ignoreSunday && DateTime.Now.Date.DayOfWeek == DayOfWeek.Monday) { string pdfAltUkestart = CreatePDF("FullUkestart", "", bwAutoRanking); processing.SetText = "Sender e-post for gruppe 'FullUkestart'.."; kgsaEmail.Send(pdfAltUkestart, appConfig.dbTo, "FullUkestart", appConfig.epostEmne, appConfig.epostBody); } if (String.IsNullOrEmpty(pdfAlt) && String.IsNullOrEmpty(pdfComputer) && String.IsNullOrEmpty(pdfAudioVideo) && String.IsNullOrEmpty(pdfTelecom)) { // Feil under pdf generering og sending av epost Log.n("Auto: Feil oppstod under generering av PDF og sending av epost. Se logg for detaljer.", Color.Red); return; } if (appConfig.pdfExport && !String.IsNullOrEmpty(appConfig.pdfExportFolder) && !String.IsNullOrEmpty(pdfAlt)) { Log.n("Auto: Lagrer kopi av PDF til.."); try { File.Copy(pdfAlt, appConfig.pdfExportFolder); } catch { Log.n("Auto: Feil oppstod under kopiering av PDF."); } } // App database update if (appConfig.blueServerIsEnabled) { Log.n("Auto: Oppdaterer App-databasene.."); AppManager app = new AppManager(this); if (app.UpdateAll(bwAutoRanking)) Log.n("Auto: App-databasene er oppdatert"); else Log.e("Auto: App-databasene er IKKE oppdatert. Se logg for detaljer"); } }
private void bwSendEmail_DoWork(object sender, DoWorkEventArgs e) { ProgressStart(); FormSendEmail se = (FormSendEmail)e.Argument; KgsaEmail kgsaEmail = new KgsaEmail(this); string rankingType = ""; if (se.comboBoxType.SelectedIndex == 0) rankingType = "Full"; else if (se.comboBoxType.SelectedIndex == 1) rankingType = "AudioVideo"; else if (se.comboBoxType.SelectedIndex == 2) rankingType = "Telecom"; else if (se.comboBoxType.SelectedIndex == 3) rankingType = "Computer"; else if (se.comboBoxType.SelectedIndex == 4) rankingType = "Cross"; else if (se.comboBoxType.SelectedIndex == 5) rankingType = "Vinnprodukter"; else if (se.comboBoxType.SelectedIndex == 6) rankingType = "FullUkestart"; string epostGruppe = se.comboBoxGruppe.GetItemText(se.comboBoxGruppe.SelectedItem); if (se.comboBoxGruppe.SelectedIndex == 0) epostGruppe = ""; string pdf = CreatePDF(rankingType, "", bwAutoRanking); if (!String.IsNullOrEmpty(pdf)) { processing.SetText = "Sender e-post for gruppe \"" + epostGruppe + "\".."; if (!kgsaEmail.Send(pdf, appConfig.dbTo, epostGruppe, se.textBoxTitle.Text, se.textBoxContent.Text)) e.Cancel = true; } else e.Cancel = true; }
private void bwQuickAuto_DoWork(object sender, DoWorkEventArgs e) { ProgressStart(); autoMode = true; var macroAttempt = 0; var macroMaxAttempts = 4; retrymacro: macroAttempt++; FormMacro formMacro = (FormMacro)StartMacro(appConfig.dbTo, macroProgramQuick, bwQuickAuto, macroAttempt); e.Result = formMacro.errorCode; if (formMacro.errorCode == 6) { Log.n("En kritisk feil forhindret makro i å utføre sine oppgaver. Se logg for detaljer.", Color.Red); e.Result = 6; return; } if (tableMacroQuick == null || tableMacroQuick.Rows.Count < 5 || formMacro.errorCode != 0) { System.Threading.Thread.Sleep(3000); if (macroAttempt < macroMaxAttempts && formMacro.errorCode != 2) // Vi har flere forsøk igjen, samt bruker har ikke avbrutt prosessen goto retrymacro; if (formMacro.errorCode != 2) Log.n("Kveldstall: Feil oppstod under kveldsranking automatisering. Feilbeskjed: " + formMacro.errorMessage + " Kode: " + formMacro.errorCode, Color.Red); return; } BudgetImporter budgetImporter = new BudgetImporter(this, DateTime.Now); if (appConfig.dailyBudgetQuickRankingAutoUpdate && appConfig.dailyBudgetIncludeInQuickRanking) { Log.n("Kveldstall: Starter nedlasting av dagens budsjett.."); processing.SetText = "Henter dagens budsjett.."; budgetImporter.FindAndDownloadBudget(bwQuickAuto); } ClearBudgetHash(BudgetCategory.Daglig); MakeBudgetPage(BudgetCategory.Daglig, bwQuickAuto); Log.n("Kveldstall: Konverterer kveldranking til PDF.."); processing.SetText = "Konverterer kveldsranking til PDF.."; string pdfBudget = CreatePDF("", "\"" + settingsPath + "\\budsjettDaglig.html\" ", bwQuickAuto); if (String.IsNullOrEmpty(pdfBudget) || !File.Exists(pdfBudget)) { // Feil under pdf generering Log.n("Kveldstall: Feil oppstod under konvertering av kveldsranking til PDF. Se logg for detaljer.", Color.Red); e.Result = 6; return; } processing.SetText = "Sender kveldstall.."; KgsaEmail email = new KgsaEmail(this); if (!email.Send(pdfBudget, DateTime.Now, "Quick", appConfig.epostEmneQuick, appConfig.epostBodyQuick)) { // Feil under pdf generering Log.n("Kveldstall: Feil oppstod under sending av kveldsranking til PDF. Se logg for detaljer.", Color.Red); e.Result = 8; return; } }