public static ZaakDocumentAttributes ChooseDocumentType(XmlNode zaaktype, ZaakDocumentAttributes result)
        {
            var documenten = zaaktype.SelectNodes("document");

            foreach (System.Xml.XmlNode document in documenten)
            {
                if (document.Attributes["matchfield"] != null && document.Attributes["matchfield"].Value == "naam")
                {
                    throw new Exception("matchfield='naam' mag niet langer gebruikt worden, gebruik nu: matchfield='bestandsnaam' in de mapping.xml");
                }

                if (document.Attributes["matchfield"] == null ||
                    document.Attributes["matchfield"] != null &&
                    document.Attributes["matchvalue"] != null &&
                    document.Attributes["matchfield"].Value == "bestandsnaam" &&
                    result.Bestandsnaam.ToLower().Contains(document.Attributes["matchvalue"].Value.ToLower()))
                {
                    var titelnode = document.SelectSingleNode("titel");
                    if (titelnode != null)
                    {
                        if (titelnode.Attributes["bestandsnaam"] != null && titelnode.Attributes["bestandsnaam"].Value == "true")
                        {
                            result.Titel = result.Bestandsnaam;
                        }
                        else
                        {
                            result.Titel = titelnode.InnerText;
                        }
                    }
                    var typenode = document.SelectSingleNode("type");
                    if (typenode == null)
                    {
                        throw new Exception("fout in mapping.xml: type is verplicht bij alle document elementen (bij zaaktype:" + result.ZaaktypeCode + ")");
                    }
                    result.Documenttype = typenode.InnerText;
                    var vertrouwelijkheidnode = document.SelectSingleNode("vertrouwelijkheid");
                    if (vertrouwelijkheidnode != null)
                    {
                        result.Vertrouwelijkheid = vertrouwelijkheidnode.InnerText.ToUpper();
                    }

                    return(result);
                }
            }
            throw new Exception("Aan het zaaktype met code: " + result.ZaaktypeCode + " kon niet een document met bestandsnaam:" + result.Bestandsnaam + " worden toegevoegd, omdat dit niets kon worden gevonden in de mapping.xml");
        }
        public static ZaakDocumentAttributes ExtractDocumentAttributes(string zaaktypecode, string documentfilename, string mimetype, DateTime creationdate)
        {
            var result = new ZaakDocumentAttributes();

            result.ZaaktypeCode = zaaktypecode;

            result.Mimetype     = mimetype;
            result.Documenttype = "documenttype";
            result.CreationTime = creationdate;

            result.Taal = "nld";
            result.Vertrouwelijkheid = "VERTROUWELIJK";

            result.Titel        = documentfilename.Contains(".") ? documentfilename.Substring(0, documentfilename.IndexOf(".")) : documentfilename;
            result.Bestandsnaam = documentfilename;
            result.Formaat      = documentfilename.Contains(".") ? documentfilename.Substring(documentfilename.IndexOf(".") + 1) : documentfilename;

            var config = new System.Xml.XmlDocument();

            config.Load("mapping.xml");

            var zaaktypes = config.SelectNodes("//zaaktype");

            foreach (System.Xml.XmlNode zt in zaaktypes)
            {
                if (zt.Attributes["matchfield"] == null ||
                    (zt.Attributes["matchvalue"] != null &&
                     zt.Attributes["matchfield"] != null &&
                     zt.Attributes["matchfield"].Value == "code" &&
                     result.ZaaktypeCode.ToLower().Contains(zt.Attributes["matchvalue"].Value.ToLower())))
                {
                    ChooseDocumentType(zt, result);
                    return(result);
                }
            }
            throw new Exception("Aan het zaaktype met code: " + zaaktypecode + " kunnen geen documenten worden toegevoegd, omdat dit niet is ingesteld");
        }