Example #1
0
        /// <summary>
        /// Skapa en fråga från ett personId som är antigen ett personnummer eller samordningsnummer
        /// </summary>
        /// <param name="identifieringsInformation">Identifierar frågeställaren</param>
        /// <param name="personId">Personnummer eller samordningsnummer</param>
        /// <returns>PersonSokRequest</returns>
        public static PersonSokRequest CreatePersonIdRequest(IdentifieringsinformationTYPE identifieringsInformation, string personId)
        {
            if (!PersonsokValidator.IsPersonIdValid(personId))
            {
                throw new ArgumentException("PersonId är i fel format");
            }

            List <object> items = new List <object>();

            items.Add(personId);

            List <ItemsChoiceType> itemsChoiceTypes = new List <ItemsChoiceType>();

            itemsChoiceTypes.Add(ItemsChoiceType.IdNummer);

            PersonSokRequest request = new PersonSokRequest();

            request.Identifieringsinformation = identifieringsInformation;
            request.PersonsokningFraga        = new PersonsokningFragaTYPE
            {
                Items            = items.ToArray(),
                ItemsElementName = itemsChoiceTypes.ToArray()
            };

            return(request);
        }
        /// <summary>
        /// Kopierar requestmeddelandet och anropar validering,
        /// om meddelandet är ej giltigt med xml-scheman så avbryts förfrågningen till personsök.
        /// </summary>
        /// <returns>object</returns>
        public object BeforeSendRequest(ref Message request, IClientChannel channel)
        {
            MessageBuffer buffer = request.CreateBufferedCopy(int.MaxValue);
            Message       copy   = buffer.CreateMessage();

            Logger.LogInformation("Validating request");
            bool isRequestValid = PersonsokValidator.ValidateXml(copy.GetReaderAtBodyContents());

            if (!isRequestValid)
            {
                Logger.LogError("Request is not valid, aborting!");
                channel.Abort();
            }
            else
            {
                Logger.LogInformation("Sending request");
                request = buffer.CreateMessage();
            }

            return(request);
        }