示例#1
0
        /// <summary>
        /// Methos to validate if xml is valid.
        /// </summary>
        /// <param name="value">String value base 64.</param>
        /// <param name="response">Response Object.</param>
        /// <returns>Boolean validator.</returns>
        public Response XmlProcessor(string value)
        {
            Response response = new Response();

            try
            {
                if (XmlIsNull(value, response))
                {
                    return(response);
                }

                response = XmlHaveCorruptContent(value, response);
                return(response);
            }
            catch (Exception ex)
            {
                HeaderResponseDto headerResponse = new HeaderResponseDto
                {
                    EchoToken = "abc-123",
                    TimeStamp = TimeStamp,
                    Version   = "1.0"
                };

                ErrorDto error = new ErrorDto
                {
                    Code    = "392",
                    Message = ex.Message,
                    Type    = "6"
                };

                errorList.Add(error);

                return(CreateErrorMessages(headerResponse, errorList, (int)HttpStatusCode.BadRequest));
            }
        }
示例#2
0
        private Response CreateWarningMessages(HeaderResponseDto headerResponse, List <WarningsDto> warningsList, List <HotelReservationDto> reservationsList, int statusCode)
        {
            Response response            = new Response();
            string   warnings            = string.Empty;
            string   reservations        = string.Empty;
            string   hotelReservationIds = string.Empty;
            string   hotelReservations   = string.Empty;

            foreach (var warning in warningsList)
            {
                warnings = warnings + string.Format(Resources.XmlWarningContenWarning, warning.Type, warning.Code, warning.RecordID, warning.Message);
            }

            foreach (var reservation in reservationsList)
            {
                foreach (var hotelReservationId in reservation.HotelReservationIDs)
                {
                    hotelReservationIds = hotelReservationIds + string.Format(Resources.XmlWarningHotelReservationId, hotelReservationId.ResID_Type, hotelReservationId.ResID_Value);
                }

                hotelReservations   = hotelReservations + string.Format(Resources.XmlWarningHotelReservation, reservation.UniqueID_Type, reservation.UniqueID_Id, hotelReservationIds);
                hotelReservationIds = string.Empty;
            }

            response.Xml  = Convert.ToBase64String(Encoding.UTF8.GetBytes(string.Format(Resources.XmlWarning, headerResponse.EchoToken, headerResponse.TimeStamp, headerResponse.Version, headerResponse.ResResponseType, warnings, hotelReservations)));
            response.Code = statusCode;

            return(response);
        }
示例#3
0
        private Response CreateErrorMessages(HeaderResponseDto headerResponse, List <ErrorDto> errorsList, int statusCode)
        {
            Response response = new Response();
            string   errors   = string.Empty;

            foreach (var error in errorsList)
            {
                errors = errors + string.Format(Resources.XmlErrorContent, error.Type, error.Code, error.Message);
            }

            response.Xml  = Convert.ToBase64String(Encoding.UTF8.GetBytes(string.Format(Resources.XmlError, headerResponse.Version, headerResponse.TimeStamp, headerResponse.EchoToken, errors)));
            response.Code = statusCode;

            return(response);
        }
示例#4
0
        private Response CreateSuccessMessages(HeaderResponseDto headerResponse, List <HotelReservationDto> reservationsList, int statusCode)
        {
            Response response            = new Response();
            string   reservations        = string.Empty;
            string   hotelReservationIds = string.Empty;
            string   hotelReservations   = string.Empty;


            foreach (var reservation in reservationsList)
            {
                foreach (var hotelReservationId in reservation.HotelReservationIDs)
                {
                    hotelReservationIds = hotelReservationIds + string.Format(Resources.XmlSuccessHotelReservation, hotelReservationId.ResID_Type, hotelReservationId.ResID_Value);
                }

                hotelReservations   = hotelReservations + string.Format(Resources.XmlSuccessBody, reservation.UniqueID_Type, reservation.UniqueID_Id, hotelReservationIds);
                hotelReservationIds = string.Empty;
            }

            response.Xml  = Convert.ToBase64String(Encoding.UTF8.GetBytes(string.Format(Resources.XmlSuccess, headerResponse.EchoToken, headerResponse.TimeStamp, headerResponse.Version, headerResponse.ResResponseType, hotelReservations)));
            response.Code = statusCode;

            return(response);
        }
示例#5
0
        private Response XmlHaveCorruptContent(string value, Response response)
        {
            string                       xmlString           = Encoding.UTF8.GetString(Convert.FromBase64String(value));
            dynamic                      OTA_HotelResNotifRQ = DynamicXml.Parse(xmlString);
            HeaderResponseDto            headerResponse      = new HeaderResponseDto();
            List <WarningsDto>           warningsList        = new List <WarningsDto>();
            List <HotelReservationDto>   reservationsList    = new List <HotelReservationDto>();
            List <HotelReservationIDDto> HotelReservationIDs = new List <HotelReservationIDDto>();
            bool haveErrorsOrWarnings = false;

            //Ejemplo llamado warning y success
            if (OTA_HotelResNotifRQ.HotelReservations != null)
            {
                headerResponse = new HeaderResponseDto
                {
                    EchoToken = "abc-123",
                    TimeStamp = TimeStamp,
                    Version   = "1.0"
                };

                HotelReservationIDs.Add(new HotelReservationIDDto
                {
                    ResID_Type  = "18",
                    ResID_Value = "82329987"
                });

                reservationsList.Add(new HotelReservationDto
                {
                    UniqueID_Id         = "3741",
                    UniqueID_Type       = "14",
                    HotelReservationIDs = HotelReservationIDs
                });


                if (OTA_HotelResNotifRQ.HotelReservations.HotelReservation.Count == null)
                {
                    haveErrorsOrWarnings = ReservationValidation(warningsList, haveErrorsOrWarnings, OTA_HotelResNotifRQ.HotelReservations.HotelReservation);
                }
                else
                {
                    foreach (var hotelReservation in OTA_HotelResNotifRQ.HotelReservations.HotelReservation)
                    {
                        haveErrorsOrWarnings = ReservationValidation(warningsList, haveErrorsOrWarnings, hotelReservation);
                    }
                }

                if (haveErrorsOrWarnings)
                {
                    response = CreateWarningMessages(headerResponse, warningsList, reservationsList, (int)HttpStatusCode.PartialContent);
                }
                else
                {
                    //ejemplo success
                    response = CreateSuccessMessages(headerResponse, reservationsList, (int)HttpStatusCode.OK);
                }

                return(response);
            }
            else
            {
                //ejemplo llamar a error
            }


            return(new Response());
        }