package Opals::SIF::ZIS_ackMsg;

# Version number
$VERSION   = 0.01;


use warnings;
use strict;
use XML::Simple;
use XML::XPath;

sub new {
    my ($class,$xmlMsg) = @_;
    #my $ack = XMLin($xmlMsg);
    #my $self->{"ack"} =$ack->{"SIF_Ack"};
    my $self={};
    $self->{"ackMsg"}=XML::XPath->new(xml=>$xmlMsg);
    bless $self, $class;
    return $self;
}

#################################################################
sub getHeader{
    my ($self)=@_;
    my $hCont=$self->{"ackMsg"}->context();
    my $header={};
    if($self->{"ackMsg"}->exists("/SIF_Message/SIF_Ack/SIF_Message/SIF_Header")){
        $header={
            msgId       => $self->{"ackMsg"}->getNodeText("/SIF_Message/SIF_Ack/SIF_Header/SIF_MsgId"),
            sourceId    => $self->{"ackMsg"}->getNodeText("/SIF_Message/SIF_Ack/SIF_Header/SIF_SourceId"),
            timestamp   => $self->{"ackMsg"}->getNodeText("/SIF_Message/SIF_AckSIF_Header/SIF_Timestampe")
        } ;
    }

    return $header;
}
#################################################################
sub getOriginalMsgId{
    my ($self)=@_;
    return $self->{"ackMsg"}->getNodeText("/SIF_Message/SIF_Ack/SIF_OriginalMsgId");
}
#################################################################

sub getOriginalSourceId{
    my ($self)=@_;
    return $self->{"ackMsg"}->od("/SIF_Message/SIF_Ack/SIF_OriginalSourceId");
}
#################################################################

sub getStatusCode{
    my ($self)=@_;
    my $statusCode=undef;
    if($self->{"ackMsg"}->exists("/SIF_Message/SIF_Ack/SIF_Status")){
        $statusCode =$self->{"ackMsg"}->getNodeText("/SIF_Message/SIF_Ack/SIF_Status/SIF_Code");
    }
    return $statusCode;
}

#################################################################


sub getError{
    my ($self)=@_;
    my $error= undef;
    if($self->{"ackMsg"}->exists("/SIF_Message/SIF_Ack/SIF_Error")){
        $error = {
            category    =>$self->{"ackMsg"}->getNodeText("/SIF_Message/SIF_Ack/SIF_Error/SIF_Category"),
            code        =>$self->{"ackMsg"}->getNodeText("/SIF_Message/SIF_Ack/SIF_Error/SIF_Ccode"),
            desc        =>$self->{"ackMsg"}->getNodeText("/SIF_Message/SIF_Ack/SIF_Error/SIF_Desc"),
            extendedDesc=>$self->{"ackMsg"}->getNodeText("/SIF_Message/SIF_Ack/SIF_Error/SIF_ExtendedDesc")
        }
    }
    return $error;
}
#################################################################


1;

