示例#1
0
        internal string Save()
        {
            string file = string.Empty;

            if (SaveReport())
            {
                Report[] reports = DataManager.getWeeklyReports(DateTimeTools.GetWorkWeekStartAndEnd(_daypicker.SelectedDate)[0], (DataManager.LoadSettings()["ReportType"] == "dayly") ? false : true);

                Dictionary <string, string> _baseData = DataManager.LoadBaseData();

                if (reports[0] == null || reports[1] == null || reports[2] == null || reports[3] == null || reports[4] == null)
                {
                    MessageBox.Show("Bitte erfassen Sie die Woche erst vollständig bevor Sie sie als PDF Speichern!", "Woche nicht vollständig!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    file = PDF.SaveDaylyReport
                           (
                        DateTimeTools.GetActAppWeek(DateTime.Parse(_baseData["beginn"]), DateTime.Parse(_actDayReport.Date)).ToString(),
                        DateTimeTools.GetWeekOfYear(DateTime.Parse(reports[1].Date)).ToString(),
                        DateTimeTools.GetActAppYear(DateTime.Parse(_baseData["beginn"]), DateTime.Parse(reports[1].Date)).ToString(),
                        _baseData["nachname"] + ", " + _baseData["vorname"], _baseData["beruf"],
                        _baseData["fachrichtung"],
                        reports,
                        _baseData["firma"],
                        DataManager.LoadSettings()["PDFDir"],
                        _baseData["ausbilder"],
                        _baseData["abteilung"]
                           );
                }
            }
            return(file);
        }
        private void fillGUI(DateTime date)
        {
            if (date.Ticks >= DateTimeTools.GetWorkWeekStartAndEnd(DateTime.Parse(_baseData["beginn"]))[0].Ticks)
            {
                if (_baseData.Count != 0)
                {
                    this.Text = "Digitaler Ausbildungsbericht - " + date.ToShortDateString();

                    lblActWeek.Text = DateTimeTools.GetWeekOfYear(date).ToString();

                    string     ausbwoche  = string.Empty;
                    DateTime   beginnDate = DateTime.Parse(DataManager.LoadBaseData()["beginn"]);
                    DateTime[] dta        = DateTimeTools.GetWorkWeekStartAndEnd(date);
                    if (dta[0].Month < beginnDate.Month)
                    {
                        ausbwoche = "1";
                    }
                    else
                    {
                        ausbwoche = DateTimeTools.GetActAppWeek(DateTime.Parse(_baseData["beginn"]), date).ToString();
                    }

                    lblWorkWeek.Text = ausbwoche;

                    int year = DateTimeTools.GetActAppYear(DateTime.Parse(_baseData["beginn"]), date);
                    if (year == 0)
                    {
                        year = 1;
                    }
                    lblWorkYear.Text = year.ToString();

                    panelReport.Enabled = ((_settings["ReportType"] == "dayly" && date.DayOfWeek == DayOfWeek.Saturday) || date.DayOfWeek == DayOfWeek.Sunday) ? false : true;

                    lblWeekStart.Text = DateTimeTools.GetWorkWeekStartAndEnd(date)[0].ToShortDateString();
                    lblWeekEnd.Text   = DateTimeTools.GetWorkWeekStartAndEnd(date)[1].ToShortDateString();
                }
                else
                {
                    InternalSetup.setupAssist(1, ref _settings);
                }
            }
            else
            {
                panelReport.Enabled = false;
            }
        }
        internal static string SaveDaylyReport(string ausbwoche, string kalwoche, string jahr, string fullname, string beruf, string fachrichtung, Report[] reports, string firmenname, string saveDir, string ausbilder, string abteilung)
        {
            /* "{KW} = Kalenderwoche"+Environment.NewLine+
             *  "{AW} = Ausbildungswoche"+Environment.NewLine+
             *  "{WS} = Woche Startdatum"+Environment.NewLine+
             *  "{WE} = Woche Enddatum"+Environment.NewLine+
             *  "{VN} = Dein Vorname"+Environment.NewLine+
             *  "{NN} = Dein Nachnachname"+Environment.NewLine+
             */
            string pre = DataManager.LoadSettings()["FileNames"];

            pre = pre.Replace("{KW}", kalwoche);
            pre = pre.Replace("{AW}", ausbwoche);
            pre = pre.Replace("{WS}", reports[0].Date);
            pre = pre.Replace("{WE}", reports[5] != null ? reports[reports.Length - 2].Date : reports[reports.Length - 3].Date);
            pre = pre.Replace("{VN}", DataManager.LoadBaseData()["vorname"]);
            pre = pre.Replace("{NN}", DataManager.LoadBaseData()["nachname"]);

            string newFile = saveDir + "\\" + pre + ".pdf";

            byte[] file = reports[5] != null?Resources.nachweis_samstag.ToArray <byte>() : Resources.nachweis.ToArray <byte>();

            if (!File.Exists(newFile))
            {
                Thread thr = new Thread(SendStats.SendDocumentCreated);
                thr.Start();
            }
            else if (MessageBox.Show("Die Datei exisistiert bereits, möchten Sie diese überschreiben?", "Datei bereits vorhanden", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
            {
                return(string.Empty);
            }

            PdfReader  pdfReader  = new PdfReader(file);
            PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(newFile, FileMode.Create));

            try
            {
                AcroFields pdfFormFields = pdfStamper.AcroFields;

                decimal gesWorkHours = 0;
                decimal gesAwayHours = 0;

                List <string> abteilungen = new List <string>();
                foreach (Report r in reports)
                {
                    if (r != null)
                    {
                        gesWorkHours += decimal.Parse(r.WorkHours);
                        gesAwayHours += decimal.Parse(r.AwayHours);
                        if (!abteilungen.Contains(r.Division) && r.Division != "---")
                        {
                            abteilungen.Add(r.Division);
                        }
                    }
                }

                string abt = "";
                foreach (string s in abteilungen)
                {
                    abt += s + ",";
                }

                abt = abt.TrimEnd(',');
                abt = abt.Replace("Work", abteilung);
                abt = abt.Replace("School", "Berufsschule");

                DateTime   beginnDate = DateTime.Parse(DataManager.LoadBaseData()["beginn"]);
                DateTime[] dta        = DateTimeTools.GetWorkWeekStartAndEnd(beginnDate);
                if (dta[0].Month < beginnDate.Month)
                {
                    ausbwoche = (int.Parse(ausbwoche) + 1).ToString();
                }

                pdfFormFields.SetField("Ausbildungsnachweis über Ausbildungswoche Nr", ausbwoche);
                pdfFormFields.SetField("LW Nr", kalwoche);
                pdfFormFields.SetField("vom", reports[0].Date);
                pdfFormFields.SetField("bis zum", reports[5] != null ? reports[5].Date : reports[4].Date);
                pdfFormFields.SetField("im", jahr);
                pdfFormFields.SetField("Name", fullname);
                pdfFormFields.SetField("Ausbildungsberuf", beruf);
                pdfFormFields.SetField("Ausbildende Abteilung", abt);
                pdfFormFields.SetField("Fachrichtung", fachrichtung);
                pdfFormFields.SetField("Ausbildende Firma", firmenname);
                pdfFormFields.SetField("Ausbilder", ausbilder);

                pdfFormFields.SetField("Ausgeführte Arbeiten Unterweisungen Unterricht in der Berufsschule uswRow1", getTextofRTF(reports[0].ReportText));
                pdfFormFields.SetField("Gesamt StundenRow1", reports[0].WorkHours);

                pdfFormFields.SetField("Ausgeführte Arbeiten Unterweisungen Unterricht in der Berufsschule uswRow2", getTextofRTF(reports[1].ReportText));
                pdfFormFields.SetField("Gesamt StundenRow2", reports[1].WorkHours);

                pdfFormFields.SetField("Ausgeführte Arbeiten Unterweisungen Unterricht in der Berufsschule uswRow3", getTextofRTF(reports[2].ReportText));
                pdfFormFields.SetField("Gesamt StundenRow3", reports[2].WorkHours);

                pdfFormFields.SetField("Ausgeführte Arbeiten Unterweisungen Unterricht in der Berufsschule uswRow4", getTextofRTF(reports[3].ReportText));
                pdfFormFields.SetField("Gesamt StundenRow4", reports[3].WorkHours);

                pdfFormFields.SetField("Ausgeführte Arbeiten Unterweisungen Unterricht in der Berufsschule uswRow5", getTextofRTF(reports[4].ReportText));
                pdfFormFields.SetField("Gesamt StundenRow5", reports[4].WorkHours);

                if (reports[5] != null)
                {
                    pdfFormFields.SetField("Ausgeführte Arbeiten Unterweisungen Unterricht in der Berufsschule uswRow6", (getTextofRTF(reports[5].ReportText)));
                    pdfFormFields.SetField("Gesamt StundenRow6", reports[5].WorkHours);
                }
                //42/40 Rows, 7*6 bei 6 tagen und 8*5 bei 5 tagen
                int x          = 0;
                int currReport = -1;

                for (int i = 1; i <= (reports[5] != null ? 40 : 42); i++)
                {
                    if (x % (reports[5] != null ? 7 : 8) == 0)
                    {
                        x = 0;
                        currReport++;
                    }
                    if (reports[currReport] != null)
                    {
                        try
                        {
                            if (reports[currReport].SingleHours != null)
                            {
                                if (reports[currReport].SingleHours[x] != "0" && reports[currReport].SingleHours[x] != "0,0")
                                {
                                    pdfFormFields.SetField("Einzel stundenRow" + i.ToString(), reports[currReport].SingleHours[x]);
                                }
                            }
                        }
                        catch (Exception e) { MessageBox.Show(e.ToString(), "Fehler bei Einzelstunden-Verarbeitung"); }
                    }
                    x++;
                }

                pdfFormFields.SetField("BemerkungRow1", reports[0].Comments[0]);
                pdfFormFields.SetField("BemerkungRow2", reports[0].Comments[1]);
                pdfFormFields.SetField("Gesamt StundenFehl stunden", gesAwayHours.ToString());
                pdfFormFields.SetField("Gesamt StundenAus Bildungs stunden", gesWorkHours.ToString());
                pdfFormFields.SetField("Datum", "Dieser Bericht wurde am " + DateTime.Now.ToShortDateString() + " erstellt.");

                pdfStamper.FormFlattening = true;
                pdfStamper.Close();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString(), "Fehler bei Bericht speichern");
                //MessageBox.Show("Die Datei konnte nicht geöffnet werden, da sie im Moment in Verwendung ist (bitte die Datei schließen)", "Fehler beim Schreiben der Datei.");
            }
            finally
            {
                pdfStamper.FormFlattening = true;
                pdfStamper.Close();
            }
            Thread.Sleep(500);
            placeWatermark(newFile);

            return(newFile);
        }