/// <summary>
        /// Vraća sve greške iz XML dokumenta koji sadrži odgovor.</summary>
        /// <param name="dokument">XML dokument primljen kao odgovor iz CIS-a.</param>
        /// <returns>
        /// Vraća poruku greške (Pogledati poglavlje 2.4. Šifrarnik grešaka u Tehničkoj specifikaciji).</returns>
        public static string DohvatiGreskuRezultataZahtjeva(XmlDocument OdgovorGreska)
        {
            // prema sugestiji hebos: http://fiskalizacija.codeplex.com/workitem/672

            XmlNamespaceManager nsmgr;

            TipDokumentaEnum tipDokumenta = XmlDokumenti.OdrediTipDokumenta(OdgovorGreska);

            XmlDokumenti.DodajNamespace(OdgovorGreska, out nsmgr);
            XmlElement root         = OdgovorGreska.DocumentElement;
            XmlNode    bodyNode     = root.SelectSingleNode("soap:Body", nsmgr);
            XmlNode    documentNode = null;

            if (bodyNode.HasChildNodes)
            {
                if (tipDokumenta == TipDokumentaEnum.EchoOdgovor)
                {
                    documentNode = bodyNode.SelectSingleNode("tns:EchoResponse", nsmgr);
                }
                else if (tipDokumenta == TipDokumentaEnum.RacunOdgovor)
                {
                    documentNode = bodyNode.SelectSingleNode("tns:RacunOdgovor", nsmgr);
                }
                else if (tipDokumenta == TipDokumentaEnum.PoslovniProstorOdgovor)
                {
                    documentNode = bodyNode.SelectSingleNode("tns:PoslovniProstorOdgovor", nsmgr);
                }
                else if (tipDokumenta == TipDokumentaEnum.ProvjeraOdgovor)
                {
                    documentNode = bodyNode.SelectSingleNode("tns:ProvjeraOdgovor", nsmgr);
                }
            }

            string ErrorCollection = "";

            if (documentNode != null)
            {
                XmlNodeList ErrorList = documentNode.SelectNodes("tns:Greske", nsmgr);

                foreach (XmlNode NextError in ErrorList)
                {
                    ErrorCollection += String.Format("{0} Šifra greške: {1}\n", NextError.FirstChild.SelectSingleNode("tns:PorukaGreske", nsmgr).InnerText, NextError.FirstChild.SelectSingleNode("tns:SifraGreske", nsmgr).InnerText);
                }

                return(ErrorCollection);
            }
            else
            {
                return("Nepoznata greška");
            }
        }
Example #2
0
        /// <summary>
        /// Pomoćna metoda koja određuje tip XML dokumenta
        /// </summary>
        /// <param name="dokument">XML dokument prema XSD schemi, zajedno sa SOAP omotnicom</param>
        /// <returns>Tip dokumenta</returns>
        public static TipDokumentaEnum OdrediTipDokumenta(XmlDocument dokument)
        {
            TipDokumentaEnum tipDokumenta = TipDokumentaEnum.Nepoznato;

            if (dokument != null)
            {
                XmlNamespaceManager nsmgr;
                XmlDokumenti.DodajNamespace(dokument, out nsmgr);

                if (dokument.DocumentElement != null)
                {
                    XmlElement root = dokument.DocumentElement;
                    XmlNode    node = root.SelectSingleNode("soap:Body", nsmgr);

                    if (node != null && node.HasChildNodes)
                    {
                        switch (node.FirstChild.Name)
                        {
                        case "tns:EchoRequest":
                            tipDokumenta = TipDokumentaEnum.EchoZahtjev;
                            break;

                        case "tns:EchoResponse":
                            tipDokumenta = TipDokumentaEnum.EchoOdgovor;
                            break;

                        case "tns:RacunZahtjev":
                            tipDokumenta = TipDokumentaEnum.RacunZahtjev;
                            break;

                        case "tns:RacunOdgovor":
                            tipDokumenta = TipDokumentaEnum.RacunOdgovor;
                            break;

                        case "tns:PoslovniProstorZahtjev":
                            tipDokumenta = TipDokumentaEnum.PoslovniProstorZahtjev;
                            break;

                        case "tns:PoslovniProstorOdgovor":
                            tipDokumenta = TipDokumentaEnum.PoslovniProstorOdgovor;
                            break;

                        default:
                            break;
                        }
                    }
                }
            }

            return(tipDokumenta);
        }