예제 #1
0
        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");
            }
        }
예제 #2
0
        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;
        }
예제 #3
0
        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;
            }
        }