-
Notifications
You must be signed in to change notification settings - Fork 3
/
FatturaElettronicaSchema.cs
94 lines (71 loc) · 3.7 KB
/
FatturaElettronicaSchema.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
//-----------------------------------------------------------------------
// <copyright file="FatturaElettronicaSchema.cs" company="Studio A&T s.r.l.">
// Author: nicogis
// Copyright (c) Studio A&T s.r.l. All rights reserved.
// </copyright>
//-----------------------------------------------------------------------
namespace FatturazioneElettronica
{
using System;
using System.Linq;
using System.Reflection;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;
public abstract class FatturaElettronicaSchema : IFatturaElettronicaType
{
[XmlIgnore]
protected string FileNameStylePA { get; private set; }
[XmlIgnore]
protected string FileNameStyleOrdinaria { get; private set; }
[XmlIgnore]
protected string XsdFatturaHttp { get; private set; }
[XmlIgnore]
protected string XsdFileFatturaVersione { get; private set; }
[XmlIgnore]
public string XsdFileFatturaVersioneXsd { get; private set; }
[XmlIgnore]
public string Namespace { get; private set; }
[XmlIgnore]
public string DsNamespace { get; private set; }
[XmlIgnore]
public string XsiNamespace { get; private set; }
[XmlIgnore]
public abstract string FileStyle { get; }
[XmlIgnore]
public string VersioneFatturaSchema{ get; private set; }
[XmlIgnore]
public string VersioneSpecifiche { get; private set; }
/// <summary>
/// xsi:schemaLocation
/// </summary>
[XmlAttribute("schemaLocation", AttributeName = "schemaLocation", Namespace = FatturaElettronicaReferences.XsiNamespace)]
public string SchemaLocation;
protected void Init(string versioneXsd, string versioneSpecifiche)
{
string schema = null;
if (string.Compare(versioneXsd, Versioni.Versione1_0, StringComparison.Ordinal) == 0)
{
schema = Globals.PrefixSchemaXsdV1_0;
}
else
{
schema = Globals.PrefixSchemaXsd;
}
this.XsdFileFatturaVersioneXsd = $"{Globals.FolderSchemi}.{schema}{versioneXsd}.{Enum.GetName(typeof(EstensioniFile), EstensioniFile.xsd)}";
using (XmlReader reader = new XmlTextReader(Assembly.GetExecutingAssembly().GetManifestResourceStream($"{typeof(FatturaElettronica).Namespace}.{this.XsdFileFatturaVersioneXsd}")))
{
XmlSchema xmlSchema = XmlSchema.Read(reader, null);
this.VersioneFatturaSchema = xmlSchema.Version;
this.Namespace = xmlSchema.TargetNamespace;
this.DsNamespace = xmlSchema.Namespaces.ToArray().First(n => string.Compare(n.Name, FatturaElettronicaReferences.prefixDigitalSignatures, StringComparison.Ordinal) == 0).Namespace;
}
this.VersioneSpecifiche = versioneSpecifiche;
this.FileNameStylePA = $"{Globals.FolderStili}.{Globals.PrefixStilePA}{this.VersioneFatturaSchema}.{Enum.GetName(typeof(EstensioniFile), EstensioniFile.xsl)}";
this.FileNameStyleOrdinaria = $"{Globals.FolderStili}.{Globals.PrefixStilePA}{this.VersioneFatturaSchema}.{Enum.GetName(typeof(EstensioniFile), EstensioniFile.xsl)}";
this.XsdFileFatturaVersione = $"{schema}{this.VersioneFatturaSchema}.{Enum.GetName(typeof(EstensioniFile), EstensioniFile.xsd)}";
this.XsdFatturaHttp = new Uri(FatturaElettronicaReferences.PathSchemaLocation).Combine($"v{this.VersioneSpecifiche}", this.XsdFileFatturaVersione).AbsoluteUri;
this.SchemaLocation = $"{this.Namespace} {this.XsdFatturaHttp}";
}
}
}