示例#1
0
        public SPFieldBoolean NewOrRefBoolean(string Name)
        {
            string         BooleanName  = this.Web().Fields.ContainsField(Name) ? Name : this.Web().Fields.Add(Name, SPFieldType.Boolean, false);
            SPFieldBoolean BooleanField = (SPFieldBoolean)this.Web().Fields.GetFieldByInternalName(BooleanName);

            BooleanField.Group = this.columnGroup;
            return(BooleanField);
        }
示例#2
0
        protected void AddCheckboxField(String FieldName, Boolean Required, Boolean DefaultValue)
        {
            String         CheckboxFieldName = List.Fields.Add(FieldName, SPFieldType.Boolean, Required);
            SPFieldBoolean CheckBoxField     = (SPFieldBoolean)List.Fields.GetFieldByInternalName(CheckboxFieldName);

            String DefaultValueString = DefaultValue == true ? "1" : "0";

            CheckBoxField.DefaultValue = DefaultValueString;
        }
示例#3
0
 public static void AddShiftRequiredColToList(string siteUrl)
 {
     if (!string.IsNullOrEmpty(siteUrl))
     {
         string colName  = "ShiftRequired";
         string listName = "Shift Time";
         try
         {
             SPSecurity.RunWithElevatedPrivileges(delegate()
             {
                 Console.Write("Processing...");
                 using (SPSite spSite = new SPSite(siteUrl))
                 {
                     using (SPWeb spWeb = spSite.RootWeb)
                     {
                         SPList shiftTimeList = spWeb.Lists.TryGetList(listName);
                         if (shiftTimeList != null)
                         {
                             if (shiftTimeList.Fields.ContainsField(colName) == false)
                             {
                                 spWeb.AllowUnsafeUpdates          = true;
                                 SPFieldBoolean shiftRequiredField = (SPFieldBoolean)shiftTimeList.Fields.CreateNewField(SPFieldType.Boolean.ToString(), colName);
                                 shiftRequiredField.Required       = false;
                                 shiftTimeList.Fields.Add(shiftRequiredField);
                                 shiftTimeList.Update();
                                 spWeb.AllowUnsafeUpdates = false;
                             }
                             else
                             {
                                 Console.Write(" -> Existed");
                             }
                         }
                     }
                 }
             });
         }
         catch (Exception ex)
         {
             Console.WriteLine(string.Format("Error: {0}", ex.Message));
         }
         Console.WriteLine();
         Console.Write("Press any key to exit...");
         Console.Read();
     }
     else
     {
         Console.Write("Troll?");
         Console.Read();
     }
 }
示例#4
0
        private void EnsureBoolFieldExists(SPList extendedList, string fieldName, bool defaultValue)
        {
            if (!extendedList.Fields.ContainsField(fieldName))
            {
                extendedList.Fields.Add(fieldName, SPFieldType.Boolean, false);

                SPFieldBoolean boolField = extendedList.Fields[fieldName] as SPFieldBoolean;
                boolField.ShowInEditForm = false;
                boolField.DefaultValue   = defaultValue ? "1" : "0";
                boolField.Hidden         = false;// true;
                boolField.Update();

                extendedList.Update();
                var query = new SPQuery();
                query.Query = @"<Where><IsNull><FieldRef Name='" + fieldName + @"' /></IsNull></Where>";
                var items = extendedList.GetItems(query);
                foreach (SPListItem item in items)
                {
                    item[fieldName] = defaultValue ? "1" : "0";
                    item.Update();
                }
            }
        }
示例#5
0
    /// <summary>
    ///
    /// </summary>
    /// <param name="web"></param>
    /// <param name="group"></param>
    /// <param name="dscription"></param>
    /// <param name="name"></param>
    /// <param name="displayName"></param>
    public static void CreateBooleanColumn(this SPWeb web, string group, string description, string name, string displayName)
    {
        try
        {
            if (!web.Fields.ContainsField(name))
            {
                string fieldName = web.Fields.Add(name, SPFieldType.Boolean, false);

                SPFieldBoolean field = (SPFieldBoolean)web.Fields.GetField(name);

                field.Group       = group;
                field.StaticName  = name;
                field.Title       = displayName;
                field.NoCrawl     = false;
                field.Description = description;

                field.Update();
            }
        }
        catch (Exception ex)
        {
            SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("CORE:HELPERS", TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, String.Format("Exception happened in Helpers:CreateBooleanColumn. MESSAGE: {0}. EXCEPTION TRACE: {1} ", ex.Message, ex.StackTrace), ex.StackTrace);
        }
    }
示例#6
0
 public QueryControlBoolean(SPField f)
 {
     _Field = (SPFieldBoolean)f;
 }
示例#7
0
        public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {
            SPWeb  web  = (SPWeb)properties.Feature.Parent;
            SPSite site = web.Site;

            web.AllowUnsafeUpdates = true;
            Lists listRoot = GetListsInfo(properties);

            foreach (List listInfo in listRoot.Items)
            {
                SPList tempList = null;
                if (listInfo.name != null)
                {
                    listName = listInfo.name.Trim();
                }
                else
                {
                    throw new Exception(Constants.LIST_NAME_ERROR);
                }
                descName = listInfo.description;
                if (CheckList(web, listName))
                {
                    tempList = web.Lists[web.Lists.Add(listName, descName, SPListTemplateType.GenericList)];
                }
                else
                {
                    tempList = web.Lists[listName];
                }
                if (tempList != null)
                {
                    foreach (Field fields in listInfo.Fields)
                    {
                        SPFieldType fldType = SPFieldType.Text;
                        ClearFlags();

                        if (fields.name != null)
                        {
                            fieldname = fields.name.Trim();
                        }
                        else
                        {
                            throw new Exception(Constants.FIELD_NAME_ERROR + listName);
                        }

                        if (fields.datatype != null)
                        {
                            fieldtype = fields.datatype.Trim();
                        }

                        if (fields.required != null)
                        {
                            required = fields.required.Trim();
                        }

                        if (fields.defaultvalue != null)
                        {
                            defaultValue = fields.defaultvalue.Trim();
                        }

                        if (fields.textformat != null)
                        {
                            textFormat = fields.textformat.Trim();
                        }

                        if (fields.displaychoicesusing != null)
                        {
                            displayChoicesUsing = fields.displaychoicesusing.Trim();
                        }

                        if (fields.lookuplist != null)
                        {
                            lookupList = fields.lookuplist.Trim();
                        }

                        if (fields.lookupfield != null)
                        {
                            lookupfield = fields.lookupfield.Trim();
                        }

                        switch (fieldtype.ToLower())
                        {
                        case Constants.SINGLE_LINE_TEXT_TYPE:
                            fldType = SPFieldType.Text;
                            break;

                        case Constants.MULTIPLE_LINE_TEXT_TYPE:
                            fldType = SPFieldType.Note;
                            break;

                        case Constants.DATETIME_TYPE:
                            fldType = SPFieldType.DateTime;
                            break;

                        case Constants.NUMBER_TYPE:
                            fldType = SPFieldType.Number;
                            break;

                        case Constants.CURRENCY_TYPE:
                            fldType = SPFieldType.Currency;
                            break;

                        case Constants.YESNO_TYPE:
                            fldType = SPFieldType.Boolean;
                            break;

                        case Constants.PERSON_GROUP_TYPE:
                            fldType = SPFieldType.User;
                            break;

                        case Constants.HYPERLINK_PICTURE_TYPE:
                            fldType = SPFieldType.URL;
                            break;

                        case Constants.CHOICE_TYPE:
                            if (displayChoicesUsing.ToLower().Trim().Equals(Constants.MULTICHECKBOX))
                            {
                                fldType = SPFieldType.MultiChoice;
                            }
                            else
                            {
                                fldType = SPFieldType.Choice;
                            }
                            break;

                        case Constants.LOOKUP_TYPE:
                            fldType = SPFieldType.Lookup;
                            break;
                        }

                        SPField field = tempList.Fields.CreateNewField(fldType.ToString(), fieldname);
                        field.DefaultValue = defaultValue;
                        field.Description  = fielddesc;
                        field.Required     = (required.ToLower().Trim().Equals(Constants.YES) ? true : false);

                        if (!tempList.Fields.ContainsField(fieldname))
                        {
                            tempList.Fields.Add(field);
                        }

                        if ((tempList.Fields[fieldname] as SPFieldText) != null)
                        {
                            int maxLength;
                            int.TryParse(maxCount, out maxLength);
                            var fldText = tempList.Fields[fieldname] as SPFieldText;

                            if (fldText != null && maxLength > 0)
                            {
                                fldText.MaxLength = maxLength;
                                fldText.Update();
                                tempList.Update();
                            }

                            continue;
                        }

                        if ((tempList.Fields[fieldname] as SPFieldMultiLineText) != null)
                        {
                            int noOfLines;
                            int.TryParse(NoOfLines, out noOfLines);
                            SPFieldMultiLineText fldMultiText = tempList.Fields[fieldname] as SPFieldMultiLineText;
                            fldMultiText.NumberOfLines = (noOfLines > 0) ? noOfLines : fldMultiText.NumberOfLines;
                            fldMultiText.RichText      = (textFormat.ToLower().Trim().Equals(Constants.RICHTEXT)) ? true : false;
                            fldMultiText.Update();
                            tempList.Update();

                            continue;
                        }

                        if ((tempList.Fields[fieldname] as SPFieldBoolean) != null)
                        {
                            SPFieldBoolean fldBoolean = (tempList.Fields[fieldname]) as SPFieldBoolean;
                            // useful in future
                            tempList.Update();

                            continue;
                        }

                        if ((tempList.Fields[fieldname] as SPFieldUser) != null)
                        {
                            SPFieldUser fldUser = tempList.Fields[fieldname] as SPFieldUser;
                            // useful in future
                            tempList.Update();

                            continue;
                        }

                        if (tempList.Fields[fieldname] as SPFieldMultiChoice != null)
                        {
                            SPFieldMultiChoice fldMultiChoice = tempList.Fields[fieldname] as SPFieldMultiChoice;

                            foreach (Choice choiceNodes in fields.Choices)
                            {
                                fldMultiChoice.Choices.Add(choiceNodes.Value);
                            }
                            fldMultiChoice.Update();
                            tempList.Update();

                            continue;
                        }

                        if ((tempList.Fields[fieldname] as SPFieldChoice) != null)
                        {
                            SPFieldChoice fldChoice = tempList.Fields[fieldname] as SPFieldChoice;

                            if (displayChoicesUsing.ToLower().Trim().Equals(Constants.DROPDOWNMENU))
                            {
                                fldChoice.EditFormat = SPChoiceFormatType.Dropdown;
                            }

                            if (displayChoicesUsing.ToLower().Trim().Equals(Constants.RADIOBUTTONS))
                            {
                                fldChoice.EditFormat = SPChoiceFormatType.RadioButtons;
                            }

                            // Add the choices
                            foreach (Choice choiceNodes in fields.Choices)
                            {
                                fldChoice.Choices.Add(choiceNodes.Value);
                            }
                            fldChoice.Update();
                            tempList.Update();

                            continue;
                        }

                        if ((tempList.Fields[fieldname] as SPFieldLookup) != null)
                        {
                            SPFieldLookup fldLookup  = tempList.Fields[fieldname] as SPFieldLookup;
                            SPList        parentList = web.Lists[lookupList];
                            fldLookup.LookupList  = parentList.ID.ToString();
                            fldLookup.LookupField = parentList.Fields[lookupfield].InternalName;
                            fldLookup.Update();
                            tempList.Update();

                            continue;
                        }
                    }
                }
            }
            web.Update();
            web.AllowUnsafeUpdates = true;
        }
        /// <summary>
        /// An item was updated.
        /// </summary>
        public override void ItemUpdated(SPItemEventProperties properties)
        {
            base.ItemUpdated(properties);
            //Ausführen des folgenden Codes nur, wenn ein PDF vorhanden ist
            if (properties.ListItem.Name.Contains(".pdf"))
            {
                //Durch folgende Zeile wird der enthaltene Code als SHAREPOINT\System ausgeführt und nicht unter dem Kontext des Benutzers, der den Auftrag unterschrieben hat
                SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    //Laden des aktuellen Webs; das ist nötig, um alle möglichen Operationen mit Bibliotheken und Elementen auszuführen
                    //dieses wird wieder geschlossen bzw. freigegeben, wenn die geschweifte Klammer von "using" geschlossen wird
                    using (SPSite site = new SPSite(properties.WebUrl))
                    {
                        using (SPWeb web = site.OpenWeb())
                        {
                            //Festlegen von Variablen
                            //Initialisieren der "Helper"-Klasse. Diese enthält selbst geschriebene Methoden, die hier aufgerufen werden.
                            Helper helper = new Helper();
                            //Laden des aktuell geänderten bzw. unterschrieben Elements
                            SPListItem _currentItem = web.Lists[properties.ListId].GetItemById(properties.ListItemId);
                            //Abspeichern von Spaltenwerten des Elements in Variablen; der String in den eckigen Klammern ist der Spaltenname
                            string auftragsnummer             = _currentItem["Auftragsnummer"].ToString();
                            string bestellmethode             = _currentItem["Bestellmethode"].ToString();
                            SPFieldBoolean DrittlandBoolField = _currentItem.Fields["Drittland"] as SPFieldBoolean;
                            bool Drittland = (bool)DrittlandBoolField.GetFieldValue(_currentItem["Drittland"].ToString());
                            string DocID   = _currentItem.Properties["_dlc_DocId"].ToString();
                            //Die Summe muss in ein double-Wert umgewandelt werden, damit er später richtig verwendet werden kann
                            double summe = Convert.ToDouble(_currentItem["Summe"]);
                            //Laden der Bibliothek "Temp" und des Unterordners, welcher als Namen die Auftragsnummer hat
                            SPList tempbibliothek = web.Lists["Temp"];
                            var tempfolder        = web.GetFolder(String.Format("{0}/Temp/" + auftragsnummer, web.Url));
                            //Angabe des Namens der Bibliothek, in der die Begründungen gespeichert werden, und des Dateinamens der Begründungen
                            //string begruendungbibliothek = "Begruendungen";
                            string begruendungbibliothek = "Begründungen";
                            string begruendungdateiname  = auftragsnummer + "_InterneBegruendung.pdf";
                            string auftragdesturl        = tempbibliothek.RootFolder.SubFolders[auftragsnummer].Url + "/" + auftragsnummer + ".pdf";
                            string begruendungdesturl    = tempbibliothek.RootFolder.SubFolders[auftragsnummer].Url + "/" + begruendungdateiname;
                            //Angabe des Namens der Bibliothek der Auftragsformulare und deren Dateinamen
                            string formularbibliothek = "Auftragsformular";
                            string formulardateiname  = auftragsnummer + ".xml";
                            string xanhang            = "my:Anhang";
                            string xweitergabe        = "my:Weitergabe";

                            //Angeben des Pfades zum Ablegen des zusammengefassten PDFs für den Druck für die VW
                            //Bei Pfadangaben mit Backslashes muss entweder vor dem Anführungszeichen ein @ geschrieben werden ODER doppelte Backslashes verwendet werden (z.B. "C:\\ipm-int\\Bestellungen\\")
                            string pdfpath = @"C:\Bestellung\PrintTemp\PDF\";
                            //Angeben des Druckers über den gedruckt wird; hier ist einfach der Freigabename anzugeben
                            //string printer = @"\\ipm-int\Bestellungen\";
                            string printer = @"\\printserver\A-3-31-SW-Buero\";
                            //Definieren einer vorerst leeren String-Variable
                            string davorsigniert = "";
                            //Wenn die Spalte "SignaturePreviousSigned" nicht leer ist, wird der enthaltene Wert der Variable "davorsigniert" zugwiesen
                            if (_currentItem["SignaturePreviousSigned"] != null)
                            {
                                davorsigniert = _currentItem["SignaturePreviousSigned"].ToString();
                            }


                            //Auslesen der Empfänger-Adressen aus den SharePoint-Gruppen
                            string rcptFaxPostalOrders       = "";
                            string spGroupRcptFaxPostalFiles = "Empfänger der Fax - und Postbestellungen";
                            foreach (SPUser user in web.SiteGroups[spGroupRcptFaxPostalFiles].Users)
                            {
                                rcptFaxPostalOrders += user.Email.ToString() + ";";
                            }
                            Console.WriteLine(rcptFaxPostalOrders);

                            //Die Drittlands-Mail inkl. Anlagen soll seit 13.02.2019 laut Verwaltung nur noch an das Einkaufs-Postfach gehen.
                            string rcptThirdCountryOrders = "";
                            string spGroupRcptCustomFiles = "Empfänger der Drittlandsbestellungen";
                            foreach (SPUser user in web.SiteGroups[spGroupRcptCustomFiles].Users)
                            {
                                rcptThirdCountryOrders += user.Email.ToString() + ";";
                            }

                            string rcptBbc        = "";
                            string spGroupRcptBbc = "E-Mails der Ereignisempfänger (BBC) ";
                            foreach (SPUser user in web.SiteGroups[spGroupRcptBbc].Users)
                            {
                                rcptBbc += user.Email.ToString() + ";";
                            }

                            //Erstellen der byte-Arrays für die PDF-Dateien die durch Mergen/Zusammenfügen erstellt werden; eins für den Empfang zum faxen, das andere für den Ausdruck für die Verwaltung
                            byte[] mergeresultbyte   = new byte[0];
                            byte[] mergeresultbytevw = new byte[0];
                            //Festlegen des Dateinamens unter dem das PDF für den Ausdurck für die Verwaltung im lokalen Dateisystem abgespeichert wird.
                            string mergefilenamevw = auftragsnummer + "_vw.pdf";

                            //Laden des gerade signierten PDFs; zuerst wird es als SharePoint-Datei (SPFile) geladen, dann als Byte-Array.
                            SPFile auftragszettel     = _currentItem.File;
                            byte[] auftragszettelbyte = auftragszettel.OpenBinary();
                            //Initialisieren eines PDFReaders (von itextsharp) mit Verweis auf das eben geöffnete Byte-Array; der PDF-Reader kann PDF-Dateien nur lesen
                            using (PdfReader pdfreader = new PdfReader(auftragszettelbyte))
                            {
                                //Laden der vorhandenen PDF-Formularfelder
                                AcroFields fields = pdfreader.AcroFields;
                                //Speichern der Namen aller signierten Felder in disem PDF in Liste "signatures". Die zu signierenden Felder heißen "Projektleiter" und "Verwaltung"; demnach kann dieser Wert leer, "Projektleiter" oder "ProjektleiterVerwaltung" sein
                                List <string> signatures = pdfreader.AcroFields.GetSignatureNames();
                                //Die gerade gespeicherten Feldnamen werden mit Komma getrennt (wenn mehrere vorhanden sind) und in eine neue String-Variable gespeichert. Somit wird aus "ProjektleiterVerwaltung" > "Projektleiter,Verwaltung"
                                string signiert = string.Join(",", signatures.ToArray());
                                //Anhand dieser IF-Abfrage wird geprüft ob der Auftag überhaupt signiert wurde. Es wird der Spaltenwert ("SignaturePreviousSigned") mit den im PDF tatsächlich signierten Feldern verglichen
                                if (signiert != davorsigniert)
                                {
                                    //Starten des SharePoint-Designer-Workflows "Unterschriftenlauf" mit Parameter "signedfields". Mit diesem Parameter werden die Namen der Signierten Felder direkt als String mitgegeben.
                                    SPWorkflowAssociationCollection associationCollection = _currentItem.ParentList.WorkflowAssociations;
                                    foreach (SPWorkflowAssociation association in associationCollection)
                                    {
                                        if (association.Name == "Unterschriftenlauf")
                                        {
                                            association.AutoStartChange = true;
                                            association.AutoStartCreate = false;
                                            association.AssociationData = "<Data><Signiert>" + signiert + "</Signiert></Data>";
                                            //web.Site.WorkflowManager.StartWorkflow(_currentItem, association, association.AssociationData);
                                            site.WorkflowManager.StartWorkflow(_currentItem, association, association.AssociationData);
                                        }
                                    }
                                    //Der SharePoint-Designer-Workflow geht nun alle vorhandenen Fälle durch und versendet die nötigen Benachrichtigungen und ändert das Status-Feld des Auftrags
                                    //Im Code muss nun nur noch der Fall beachtet werden, wenn Projektleiter und Verwaltung unterschrieben haben
                                    //In diesem Fall muss ein PDF für die Verwaltung und eins (nur wenn nötig) für den Empfang erstellt werden. Letzteres wird benötigt, um dem Empfang dieses per Mail zu versenden, damit es gefaxt oder per Post versendet werden kann.
                                    //Das ist nur nötig, wenn die Bestellmethode NICHT "online" oder "Abholung" ist
                                    //Zu aller erst wird überprüft ob der beschriebene Fall eintritt: Die Variable "signiert" enthält alle Namen der Signaturfelder aus dem PDf, die unterschrieben sind.
                                    if ((signiert == "Projektleiter,Verwaltung") || (signiert == "Verwaltung,Projektleiter"))
                                    {
                                        string tempuploadurl = helper.TempOrdner(tempbibliothek, tempfolder, auftragsnummer);
                                        //Laden des Auftragsformulars
                                        byte[] xmlfile     = helper.GetFileFromWeb(formularbibliothek, formulardateiname, web);
                                        Stream xmlmemstr   = new MemoryStream(xmlfile);
                                        XmlDocument xmldoc = new XmlDocument();
                                        xmldoc.Load(xmlmemstr);
                                        XPathNavigator root       = xmldoc.CreateNavigator();
                                        XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable());
                                        //Angeben des NameSpaces: Die Werte werden direkt aus einem beispiel Formular entnommen (stehen am Anfang der XML-Datei)
                                        nsmgr.AddNamespace("my", "http://schemas.microsoft.com/office/infopath/2003/myXSD/2016-04-22T15:49:19");
                                        helper.AnlagenHochladen(root.Select("/my:meineFelder/my:Anlagen/my:Anlage", nsmgr), xanhang, xweitergabe, nsmgr, DocID, tempfolder, tempuploadurl, web);

                                        //Hochladen der Begründung und des aktuellen Auftragzettels in den Temp-Ordner
                                        //Begründung
                                        if (root.SelectSingleNode("/my:meineFelder/my:Begruendung", nsmgr).ToString() != "")
                                        {
                                            byte[] fattenedBegruendung            = helper.flattenPdfForm(helper.GetFileFromWeb(begruendungbibliothek, begruendungdateiname, web));
                                            SPFile copybegruendung                = tempfolder.Files.Add(begruendungdesturl, fattenedBegruendung, true);
                                            SPListItem copybegruendungitem        = copybegruendung.Item;
                                            copybegruendungitem["Auftragsnummer"] = auftragsnummer;
                                            //Übernehmen der Änderung. Durch "SystemUpdate" wird diese Änderung nicht in SharePoint selbst dokumentiert (in Spalten "geändert von" und "geändert").
                                            copybegruendungitem.SystemUpdate();
                                        }

                                        //Auftragszettel
                                        byte[] flattendAuftrag = helper.flattenPdfForm(auftragszettelbyte);
                                        SPFile copyauftrag     = tempfolder.Files.Add(auftragdesturl, flattendAuftrag, true);
                                        //Setzen des Spaltenwerts "Weitergabe" auf true, da der Lieferant den Auftragszettel immer erhalten muss. Wäre dieser WErt auf "false" würde Auftragszettel beim PDf für Fax oder Post fehlen. Der Wert ist in der SharePoint-Bibliothek "Temp" standardmäßig auf "false" gesetzt.
                                        SPListItem copyauftragitem    = copyauftrag.Item;
                                        copyauftragitem["Weitergabe"] = true;
                                        copyauftragitem.SystemUpdate();

                                        //diese IF-Abfrage ist nur reine Sicherheitsmaßnahme: Es wird geprüft ob im Temp-Ordner auch Dateien vorhanden sind. Da der Auftrag direkt davor in diesen Ordner kopiert wird sollte diese Bedingung immer zutreffen.
                                        if (tempfolder.ItemCount > 0)
                                        {
                                            //Zusammenführen aller PDF-Dokumente für die Verwaltung
                                            //SPListItemCollection ist eine Sammlung von SharePoint-Elementen. Welche Elemente ausgewählt werden, ist in der Helper-Methode (ganz unten) nach zu lesen. Mit dem Übergabewert "false" wird bewirkt, dass nicht beachtet wird, welche Anlagen zur Weitergabe an den Lieferanten gewählt sind - es wird alles einfach gedruckt.
                                            SPListItemCollection pdfcollection = helper.CollectPDF(tempfolder, tempbibliothek, false);
                                            //Die zuvor erstellte Sammlung von Elementen ("pdfcollection") wird nun in einer weiteren Helper-Methode verwendet, um die PDf-Dateien zu kombinieren. Mit dem Übergabewert "false" wird bewirkt, dass die AEB's NICHT mit ausgedruckt werden.
                                            mergeresultbytevw = helper.Merge(pdfcollection, false, auftragsnummer);

                                            //Zusammenführen der PDf-Dokumente für den Lieferanten
                                            //Gemerged wird nur, wenn über Fax oder Post bestellt wird, damit die Zentrale eine Datei hat, die sie versenden/ausdrucken können. Wenn "online" oder per "Abholung" bestellt wird, oder wenn es sich um ein Drittland handelt, findet dieser Vorgang nicht statt.
                                            if ((bestellmethode.Contains("online") == false) && (bestellmethode.Contains("Abholung") == false) && Drittland == false)
                                            {
                                                //Sammeln der Elemente; diesmal mit dem Übergabewert "true", damit nur Anlagen berücksichtigt werden, die auch zur Weitergabe für den Lieferanten ausgewählt sind
                                                pdfcollection = helper.CollectPDF(tempfolder, tempbibliothek, true);
                                                //Zusammenführen der gerade gesammelten Elemente; diesmal mit dem Übergabewert "true", damit die AEBs erhalten bleiben
                                                mergeresultbyte = helper.Merge(pdfcollection, true, auftragsnummer);
                                                //Kopieren des PDF in einen lokalen Ordner auf dem SharePoint-Server
                                                File.WriteAllBytes(pdfpath + auftragsnummer + "_Kopie.pdf", mergeresultbyte);
                                                string faxnummer = "<br>";
                                                if ((bestellmethode == "Fax") && (_currentItem["Fax"] != null))
                                                {
                                                    faxnummer = "Fax: " + _currentItem["Fax"].ToString() + "<br><br>";
                                                }
                                                string zentraletext = "<div style='font-family: Frutiger LT COM 45 Light; font-size: 11pt;'>Guten Tag,<br><br>"
                                                                      + "der Auftrag #" + auftragsnummer + " wurde vom Projektleiter und der Verwaltung signiert. Als Bestellmethode wurde " + bestellmethode + " gewählt. "
                                                                      + "Der Auftrag ist im Anhang enthalten. Hierbei handelt es sich nur um eine Kopie für den Lieferanten.<br><br>"
                                                                      + "Name Besteller: " + helper.Anzeigename(_currentItem, "Profil:NameBesteller") + "<br>"
                                                                      + "Projektleiter: " + helper.Anzeigename(_currentItem, "Profil:Projektleiter") + "<br>"
                                                                      + "Firma: " + _currentItem["Firma"].ToString() + "<br>"
                                                                      + faxnummer
                                                                      + "Dies ist eine automatische Benachrichtigung. Bitte antworten Sie nicht auf diese E-Mail.";
                                                helper.Mail("Bestellung", rcptFaxPostalOrders, rcptBbc, "Auftrag #" + auftragsnummer + " - Signaturvorgang abgeschlossen", zentraletext, mergeresultbyte, auftragsnummer, site);
                                            }
                                        }
                                        else
                                        {
                                            mergeresultbytevw = auftragszettelbyte; //Auch Dieser Else-Block ist nur reine Sicherheitsmaßnahme.
                                        }
                                        //Kopieren des PDFs für VW in einen lokalen Ordner (siehe Variable "printpath") auf dem SharePoint-Server.
                                        File.WriteAllBytes(pdfpath + mergefilenamevw, mergeresultbytevw);
                                        //Hochladen des PDFs für VW in Ordner "Print" in Bibliothek "Temp"
                                        //desturl = tempbibliothek.RootFolder.SubFolders["Merged"].Url + "/" + mergefilenamevw;
                                        //SPFile uploadmerged = tempfolder.Files.Add(desturl, File.ReadAllBytes(pdfpath + mergefilenamevw), true);
                                        //Schicken der PDF-Datei für VW an den Drucker (siehe Variable "printer")
                                        if (Drittland == false)
                                        {
                                            File.Copy(pdfpath + mergefilenamevw, printer + mergefilenamevw);
                                        }
                                        else
                                        {
                                            string drittlandtext = "<div style='font-family: Frutiger LT COM 45 Light; font-size: 11pt;'>Guten Tag,<br><br>"
                                                                   + "der Signaturvorang für den Auftrag (#" + auftragsnummer + ") wurde abgeschlossen. Da es sich um eine Bestellung aus dem <b>Drittland</b> handelt, wird der Auftrag <b>ohne automatischen Ausdruck</b> an den Einkauf weitergeleitet. "
                                                                   + "Der Auftrag ist im Anhang enthalten.<br><br>"
                                                                   + "Name Besteller: " + helper.Anzeigename(_currentItem, "Profil:NameBesteller") + "<br>"
                                                                   + "Projektleiter: " + helper.Anzeigename(_currentItem, "Profil:Projektleiter") + "<br>"
                                                                   + "Firma: " + _currentItem["Firma"].ToString() + "<br>"
                                                                   + "Bestellmethode: " + bestellmethode + "<br><br>"
                                                                   + "Dies ist eine automatische Benachrichtigung. Bitte antworten Sie nicht auf diese E-Mail.";
                                            helper.Mail("Bestellung", rcptThirdCountryOrders, rcptBbc, "Drittland: Auftrag #" + auftragsnummer + " - Signaturvorgang abgeschlossen", drittlandtext, mergeresultbytevw, auftragsnummer, site);
                                        }
                                        //Löschen des PDFs für VW aus lokalem Ordner - NICHT MEHR NÖTIG, da der Temp-Ordner wöchentlich aufgeräumt wird. Deßhalb können beide Dateien aus Troubleshooting-Gründen aufgehoben werden.
                                        //File.Delete(pdfpath + mergefilenamevw);
                                        //Löschen des temporären Ordners in Bibliothek "Temp"
                                        tempfolder.Delete();
                                    }
                                }
                            }
                        }
                    }
                });
            }
        }
示例#9
0
        public static string GetFieldValueAsTextOrHtml(this SPFieldCalculated calcField, object value, bool asHtml)
        {
            if (value == null)
            {
                return(string.Empty);
            }


            string strType = string.Empty;
            string str2    = string.Empty;
            string str3    = value as string;

            if (str3 == null)
            {
                throw new ArgumentOutOfRangeException();
            }
            str2 = str3;
            int length = StsBinaryCompareIndexOf(str2, ";#");

            if (length < 0)
            {
                throw new ArgumentOutOfRangeException();
            }
            strType = str2.Substring(0, length).ToUpper(CultureInfo.InvariantCulture);
            str2    = str2.Substring(length + ";#".Length);
            if (((calcField.OutputType == SPFieldType.Invalid) || (calcField.OutputType == SPFieldType.Error)) || (strType == "ERROR"))
            {
                string formattedErrorValue = GetFormattedErrorValue(strType, str2);
                if (asHtml)
                {
                    return(SPHttpUtility.HtmlEncode(formattedErrorValue));
                }
                return(formattedErrorValue);
            }
            try
            {
                bool flag = false;;
                switch (strType)
                {
                case "FLOAT":
                {
                    //double data = Convert.ToDouble(str2, CultureInfo.InvariantCulture);
                    //CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture;
                    //if (calcField.OutputType == SPFieldType.Currency)
                    //{
                    //    string valueToEncode = FormatValue(data, calcField.Currency..DisplayFormat);
                    //    if (asHtml)
                    //    {
                    //        valueToEncode = SPHttpUtility.HtmlEncode(valueToEncode);
                    //    }
                    //    return valueToEncode;
                    //}
                    //if (asHtml)
                    //{
                    //    return SPFieldNumber.GetFieldValueAsHtml(data, currentCulture, calcField.ShowAsPercentage, calcField.DisplayFormat);
                    //}
                    //return SPFieldNumber.GetFieldValueAsText(data, currentCulture, calcField.ShowAsPercentage, calcField.DisplayFormat);
                }
                break;

                case "DATETIME":
                {
                    //SPDateFormat dateTime;
                    //if (base.IsXLVWPConnection)
                    //{
                    //    return str2;
                    //}
                    //DateTime time = SPUtility.CreateSystemDateTimeFromXmlDataDateTimeFormat(str2);
                    //if (this.DateFormat == SPDateTimeFieldFormatType.DateTime)
                    //{
                    //    dateTime = SPDateFormat.DateTime;
                    //}
                    //else
                    //{
                    //    dateTime = SPDateFormat.DateOnly;
                    //}
                    //if (asHtml)
                    //{
                    //    return SPFieldDateTime.GetFieldValueAsHtml(time, base.Fields.Web, dateTime);
                    //}
                    //return SPFieldDateTime.GetFieldValueAsText(time, base.Fields.Web, dateTime);
                }
                break;

                default:
                    if (!(strType == "BOOLEAN"))
                    {
                        goto Label_01FA;
                    }
                    switch (str2)
                    {
                    case "TRUE":
                    case "-1":
                    case "1":
                        flag = true;
                        break;
                    }
                    flag = false;
                    break;
                }
                //if (asHtml)
                //{
                //    return SPFieldBoolean.GetFieldValueAsHtml(flag);
                //}
                return(SPFieldBoolean.GetFieldValueAsText(flag));

Label_01FA:
                if (asHtml)
                {
                    return(SPHttpUtility.HtmlEncode(str2));
                }
                return(str2);
            }
            catch (ArgumentOutOfRangeException)
            {
                if (asHtml)
                {
                    return(SPHttpUtility.HtmlEncode(str2));
                }
                return(str2);
            }

            //return string.Empty;
        }