Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion Digipost.Api.Client.Common/DataTransferObjectConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using Digipost.Api.Client.Common.Print;
using Digipost.Api.Client.Common.Recipient;
using Digipost.Api.Client.Common.Search;
using Digipost.Api.Client.Send;
using V8;
using Identification = V8.Identification;
using Link = Digipost.Api.Client.Common.Entrypoint.Link;
Expand Down Expand Up @@ -187,7 +188,7 @@ private static Message_Recipient RecipientDataTransferObjectFromRecipientByNameA
};
}

public static Print_Details ToDataTransferObject(IPrintDetails printDetails)
internal static Print_Details ToDataTransferObject(this IPrintDetails printDetails)
{
if (printDetails == null)
return null;
Expand Down Expand Up @@ -241,6 +242,17 @@ public static Print_If_Unread ToDataTransferObject(IPrintIfUnread printIfUnread)
return printIfUnreadDataTransferObject;
}

internal static Request_For_Registration ToDataTransferObject(this RequestForRegistration requestForRegistration)
{
return new Request_For_Registration
{
Registration_Deadline = requestForRegistration.RegistrationDeadline,
Phone_Number = requestForRegistration.PhoneNumber,
Email_Address = requestForRegistration.EmailAddress,
Print_Details = requestForRegistration.PrintDetails.ToDataTransferObject()
};
}

private static Print_Recipient ToDataTransferObject(IPrint recipient)
{
var printRecipientDto = new Print_Recipient
Expand Down
7 changes: 6 additions & 1 deletion Digipost.Api.Client.Common/Enums/DeliveryMethod.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@ public enum DeliveryMethod
/// <summary>
/// Delivered to email
/// </summary>
EPOST
EPOST,

/// <summary>
/// Pending delivery
/// </summary>
PENDING
}
}
2 changes: 2 additions & 0 deletions Digipost.Api.Client.Common/Extensions/EnumExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ public static DeliveryMethod ToDeliveryMethod(this V8.Channel deliveryMethod)
return DeliveryMethod.PEPPOL;
case V8.Channel.EPOST:
return DeliveryMethod.EPOST;
case V8.Channel.PENDING:
return DeliveryMethod.PENDING;
default:
throw new ArgumentOutOfRangeException(nameof(deliveryMethod), deliveryMethod, null);
}
Expand Down
46 changes: 46 additions & 0 deletions Digipost.Api.Client.Common/Generated/Apidomain/V8.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1244,6 +1244,8 @@ public enum Channel
PEPPOL,

EPOST,

PENDING,
}

[System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.0.594.0")]
Expand Down Expand Up @@ -1722,6 +1724,9 @@ public Message()
[System.Xml.Serialization.XmlElementAttribute("print-if-unread")]
public Print_If_Unread Print_If_Unread { get; set; }

[System.Xml.Serialization.XmlElementAttribute("request-for-registration")]
public Request_For_Registration Request_For_Registration { get; set; }

[System.Xml.Serialization.XmlElementAttribute("batch")]
public Batch Batch { get; set; }
}
Expand Down Expand Up @@ -1774,6 +1779,28 @@ public partial class Print_If_Unread
public Print_Details Print_Details { get; set; }
}

[System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.0.594.0")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute("request-for-registration", Namespace="http://api.digipost.no/schema/v8")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class Request_For_Registration
{

[System.ComponentModel.DataAnnotations.RequiredAttribute()]
[System.Xml.Serialization.XmlElementAttribute("registration-deadline", DataType="dateTime")]
public System.DateTime Registration_Deadline { get; set; }

[System.Xml.Serialization.XmlElementAttribute("phone-number")]
public string Phone_Number { get; set; }

[System.Xml.Serialization.XmlElementAttribute("email-address")]
public string Email_Address { get; set; }

[System.Xml.Serialization.XmlElementAttribute("print-details")]
public Print_Details Print_Details { get; set; }
}

[System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.0.594.0")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute("batch", Namespace="http://api.digipost.no/schema/v8")]
Expand Down Expand Up @@ -2339,6 +2366,7 @@ public partial class Event
[System.Xml.Serialization.XmlIncludeAttribute(typeof(Failed_Print_Metadata))]
[System.Xml.Serialization.XmlIncludeAttribute(typeof(Move_Files_From_Public_Sector_Metadata))]
[System.Xml.Serialization.XmlIncludeAttribute(typeof(Postmarked_Metadata))]
[System.Xml.Serialization.XmlIncludeAttribute(typeof(Request_For_Registration_Expired_Metadata))]
[System.Xml.Serialization.XmlIncludeAttribute(typeof(Sms_Notification_Failed_Metadata))]
public abstract partial class Event_Metadata
{
Expand Down Expand Up @@ -2371,6 +2399,12 @@ public enum Event_Type
PEPPOL_DELIVERED,

PEPPOL_FAILED,

REQUEST_FOR_REGISTRATION_EXPIRED,

REQUEST_FOR_REGISTRATION_DELIVERED_DIGIPOST,

REQUEST_FOR_REGISTRATION_FAILED,
}

[System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.0.594.0")]
Expand Down Expand Up @@ -2584,6 +2618,18 @@ public partial class Postmarked_Metadata : Event_Metadata
public System.DateTime Postmarked_Date { get; set; }
}

[System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.0.594.0")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute("request-for-registration-expired-metadata", Namespace="http://api.digipost.no/schema/v8")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class Request_For_Registration_Expired_Metadata : Event_Metadata
{

[System.Xml.Serialization.XmlAttributeAttribute("fallback-channel")]
public string Fallback_Channel { get; set; }
}

[System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.0.594.0")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute("inbox", Namespace="http://api.digipost.no/schema/v8")]
Expand Down
29 changes: 29 additions & 0 deletions Digipost.Api.Client.Common/RequestForRegistration.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
using System;
using Digipost.Api.Client.Common.Print;

namespace Digipost.Api.Client.Send
{
public class RequestForRegistration
{
public RequestForRegistration(
DateTime registrationDeadline,
String phoneNumber,
String emailAddress,
IPrintDetails printDetails
)
{
RegistrationDeadline = registrationDeadline;
PhoneNumber = phoneNumber;
EmailAddress = emailAddress;
PrintDetails = printDetails;
}

public DateTime RegistrationDeadline { get; }

public string PhoneNumber { get; }

public string EmailAddress { get; }

public IPrintDetails PrintDetails { get; }
}
}
30 changes: 30 additions & 0 deletions Digipost.Api.Client.Docs/SendExamples.cs
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,35 @@ public void SendLetterWithPrintIfUnread()
var result = client.SendMessage(messageWithPrintIfUnread);
}

public void SendLetterWithRequestForRegistration()
{
var recipient = new RecipientById(identificationType: IdentificationType.PersonalIdentificationNumber, id: "311084xxxx");

var requestForRegistration = new RequestForRegistration(
DateTime.Now.AddDays(3),
"+4711223344",
null,
new PrintDetails(
printRecipient: new PrintRecipient(
"Ola Nordmann",
new NorwegianAddress("0460", "Oslo", "Prinsensveien 123")),
printReturnRecipient: new PrintReturnRecipient(
"Kari Nordmann",
new NorwegianAddress("0400", "Oslo", "Akers Àle 2"))
)
);

var primaryDocument = new Document(subject: "document subject", fileType: "pdf", path: @"c:\...\document.pdf");

var messageWithPrintIfUnread = new Message(sender, recipient, primaryDocument)
{
Id = "Reg-12345",
RequestForRegistration = requestForRegistration
};

var result = client.SendMessage(messageWithPrintIfUnread);
}

public void SendLetterWithHigherSecurityLevel()
{
var primaryDocument = new Document(subject: "Primary document", fileType: "pdf", path: @"c:\...\document.pdf")
Expand Down Expand Up @@ -256,6 +285,7 @@ public void SendInvoice()

var result = client.SendMessage(message);
}

public void SendInkasso()
{
var inkasso = new Inkasso();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@ public class FromDataTransferObject : DataTransferObjectConverterTests
public void InboxDocument()
{
const string contentType = "txt";
const string content = "http://contenturi.no";
const string deleteUri = "http://deletecontenturi.no";
var firstAccessed = DateTime.Today.AddDays(2);
var deliveryTime = DateTime.Today;
const int id = 123456789;
Expand Down
22 changes: 22 additions & 0 deletions Digipost.Api.Client.Resources/Xsd/Data/api_v8.xsd
Original file line number Diff line number Diff line change
Expand Up @@ -722,6 +722,7 @@
<xsd:element name="primary-document" type="document" minOccurs="1" maxOccurs="1" nillable="false"/>
<xsd:element name="attachment" type="document" minOccurs="0" maxOccurs="201" nillable="false"/>
<xsd:element name="print-if-unread" type="print-if-unread" minOccurs="0"/>
<xsd:element name="request-for-registration" type="request-for-registration" minOccurs="0"/>
<xsd:element name="batch" type="batch" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
Expand Down Expand Up @@ -964,6 +965,7 @@
<xsd:enumeration value="DIGIPOST" />
<xsd:enumeration value="PEPPOL" />
<xsd:enumeration value="EPOST" />
<xsd:enumeration value="PENDING" />
</xsd:restriction>
</xsd:simpleType>

Expand Down Expand Up @@ -1084,6 +1086,14 @@
</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="request-for-registration-expired-metadata">
<xsd:complexContent>
<xsd:extension base="event-metadata">
<xsd:attribute name="fallback-channel" type="xsd:string" />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="document-metadata">
<xsd:sequence>
<xsd:element name="link" type="link" minOccurs="0" maxOccurs="unbounded" />
Expand All @@ -1105,6 +1115,9 @@
<xsd:enumeration value="SHREDDED" />
<xsd:enumeration value="PEPPOL_DELIVERED" />
<xsd:enumeration value="PEPPOL_FAILED" />
<xsd:enumeration value="REQUEST_FOR_REGISTRATION_EXPIRED" />
<xsd:enumeration value="REQUEST_FOR_REGISTRATION_DELIVERED_DIGIPOST" />
<xsd:enumeration value="REQUEST_FOR_REGISTRATION_FAILED" />
</xsd:restriction>
</xsd:simpleType>

Expand Down Expand Up @@ -1214,6 +1227,15 @@
</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="request-for-registration">
<xsd:sequence>
<xsd:element name="registration-deadline" type="xsd:dateTime"/>
<xsd:element name="phone-number" type="xsd:string" minOccurs="0" maxOccurs="1" />
<xsd:element name="email-address" type="xsd:string" minOccurs="0" maxOccurs="1" />
<xsd:element name="print-details" type="print-details" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>

<xsd:element name="archives" type="archives" />

<xsd:complexType name="archives">
Expand Down
17 changes: 15 additions & 2 deletions Digipost.Api.Client.Send/IMessage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -55,16 +55,29 @@ public interface IMessage : IRequestContent
/// then fallback to print will start.
/// </summary>
IPrintDetails PrintDetails { get; set; }

/// <summary>
/// Specifies print-if-unread-after deadline for the current message. If the message is not read within the
/// deadline, it is sent to print with the contained printdetails.
/// </summary>
IPrintIfUnread PrintIfUnread { get; set; }

/// <summary>
/// True if print-if-unread-after is specified for the message. Otherwise false.
/// </summary>
bool PrintIfUnreadAfterSpecified { get; }

/// <summary>
/// Specifies request-for-registraton. If the receiver is not registrered user of Digipost
/// they will be notified that a waiting document is being processed. They can, within the specified
/// deadline, register and receive the document in Digipost. They dont register, the document CAN
/// be sent to Print.
/// </summary>
RequestForRegistration RequestForRegistration { get; set; }

/// <summary>
/// true request-for-registraton is specified for the message. Otherwise false.
/// </summary>
bool RequestForRegistrationSpecified { get; }
}
}
4 changes: 4 additions & 0 deletions Digipost.Api.Client.Send/Message.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ public Message(Sender sender, IDigipostRecipient digipostRecipient, IDocument pr

public bool PrintIfUnreadAfterSpecified => PrintIfUnread != null;

public RequestForRegistration RequestForRegistration { get; set; }

public bool RequestForRegistrationSpecified => RequestForRegistration != null;

public Sender Sender { get; set; }

public DateTime? DeliveryTime { get; set; }
Expand Down
9 changes: 7 additions & 2 deletions Digipost.Api.Client.Send/SendDataTransferObjectConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,13 @@ public static V8.Message ToDataTransferObject(IMessage message)
{
messageDto.Recipient = new Message_Recipient()
{
Print_Details = DataTransferObjectConverter.ToDataTransferObject(message.PrintDetails)
Print_Details = message.PrintDetails.ToDataTransferObject()
};
}
else
{
messageDto.Recipient = DataTransferObjectConverter.ToDataTransferObject(message.DigipostRecipient);
messageDto.Recipient.Print_Details = DataTransferObjectConverter.ToDataTransferObject(message.PrintDetails);
messageDto.Recipient.Print_Details = message.PrintDetails.ToDataTransferObject();
}

foreach (var document in message.Attachments.Select(ToDataTransferObject))
Expand All @@ -51,6 +51,11 @@ public static V8.Message ToDataTransferObject(IMessage message)
messageDto.Print_If_Unread = DataTransferObjectConverter.ToDataTransferObject(message.PrintIfUnread);
}

if (message.RequestForRegistrationSpecified)
{
messageDto.Request_For_Registration = message.RequestForRegistration.ToDataTransferObject();
}

return messageDto;
}

Expand Down
Loading