03. Contractbeëindigingen verwerken

Uiteraard is het mogelijk dat een makelaar geen gegevens meer wilt delen met een Media Partner. Dit geeft de makelaar aan via de software van de Content Provider (b.v. Kolibri). De Media Partner zal met enige regelmaat (bijvoorbeeld 1x per dag) moeten controleren of er nog verzoeken voor Contractbeëindigingen voor hem zijn.

Bij de ontvangst van een verzoek voor een Contractbeëindiging zal de Media Partner de nodige administratieve handelingen door kunnen voeren om vervolgens aan de Connector te bevestigen dat het Contract is beëindigd.


Dit scenario is niet van toepassing indien 'Auto Accept Deactivation' op 'ja' staat ingesteld. In het geval dat 'Auto Accept Deactivation' op 'ja' staat gebeurt dit gehele proces namelijk automatisch en worden altijd alle Contract beëindigingsverzoeken automatisch direct geaccepteerd en afgerond.

Nadat een verzoek voor een Contractbeëindiging is bevestigd door de Media Partner kan de makelaar geen gegevens meer delen met de Media Partner.

In onderstaand sequence diagram wordt de workflow voor het verwerken van verzoeken voor een Contractbeëindigingen weergegeven.

Uit het bovenstaande diagram valt inderdaad af te leiden dat een Media Partner een verzoek tot een beëindiging niet kan/mag weigeren.

Nadat een Media Partner het verzoek voor beëindiging van het Contract heeft bevestigd ontvangt de Media Partner geen gedeelde gegevens (panden en/of relaties) meer van het betreffende makelaarskantoor. Vervolgens kan de makelaar wel via de software van de Content Provider (b.v. Kolibri) opnieuw een Contract voor de Media Partner indienen. En hiermee begint het proces dus weer helemaal van vooraf aan.


Stap A + B: Ophalen van beëindiging verzoeken

Als eerste haalt de Media Partner alle verzoeken voor beëindiging van Contracten op. Dit gaat met een HTTP GET request op alle MediaContracts met de status van het Contract 'pendingdeactivation'. De URL van dit GET request ziet er voor versie 16.0 van de connector en token ABCDEFG als volgt uit:

https://api.wazzupsoftware.com/ActivateService.svc/16/0/ABCDEFG/mediacontract/?state=pendingdeactivation

Hieronder een C# code voorbeeld:

public void AcceptDeactivation(int mediaContractID)
{
    var url = string.Format("{0}ActivateService.svc/16/0/{1}/mediacontract/?id={2}&action={3}",
        m_connectorURL, m_token, mediaContractID, "acceptdeactivation");
    postMessage(url);
}
private static void postMessage(string url)
{
    var request = WebRequest.Create(url);
    request.Method = "POST";
    using (var response = request.GetResponse())
    {
        var result = XmlLib.GetObject<DefaultResult>(response.GetResponseStream());
        if (!result.IsSuccess)
            throw new Exception(result.ErrorMessage);
    }
}
Stap C + D: Een beëindigingsverzoek accepteren

Na de ontvangst van één of meerdere beëindigingsverzoeken zal de Media Partner dit verzoek moeten accepteren.

Het accepteren gaat door een bericht te posten met als actie 'acceptdeactivation'. Het resultaat van de actie geeft aan of de actie gelukt of mislukt is. De URL van deze POST actie ziet er voor versie 16.0 van de Connector, token ABCDEFG en Contract 12 als volgt uit:

https://api.wazzupsoftware.com/ActivateService.svc/16/0/ABCDEFG/mediacontract/?id=12&action=acceptdeactivation

Hieronder een code voorbeeld waarin een verzoek tot beëindiging van een contract wordt geaccepteerd:

public void AcceptDeactivation(int mediaContractID)
{
    var url = string.Format("{0}ActivateService.svc/16/0/{1}/mediacontract/?id={2}&action={3}",
        m_connectorURL, m_token, mediaContractID, "acceptdeactivation");
    postMessage(url);
}
private static void postMessage(string url)
{
    var request = WebRequest.Create(url);
    request.Method = "POST";
    using (var response = request.GetResponse())
    {
        var result = XmlLib.GetObject<DefaultResult>(response.GetResponseStream());
        if (!result.IsSuccess)
            throw new Exception(result.ErrorMessage);
    }
}