//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.18449
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace ThirdPartyBookingMockFeature.ThirdPartyBookingServiceReference {
    using System.Runtime.Serialization;
    using System;
    
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="AvailabilityRequest", Namespace="http://schemas.datacontract.org/2004/07/BookingMockService.Entity")]
    [System.SerializableAttribute()]
    public partial class AvailabilityRequest : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
        
        [System.NonSerializedAttribute()]
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private System.DateTime DepartureDateField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string DestinationField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string OriginField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private System.DateTime ReturnDateField;
        
        [global::System.ComponentModel.BrowsableAttribute(false)]
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
            get {
                return this.extensionDataField;
            }
            set {
                this.extensionDataField = value;
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public System.DateTime DepartureDate {
            get {
                return this.DepartureDateField;
            }
            set {
                if ((this.DepartureDateField.Equals(value) != true)) {
                    this.DepartureDateField = value;
                    this.RaisePropertyChanged("DepartureDate");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string Destination {
            get {
                return this.DestinationField;
            }
            set {
                if ((object.ReferenceEquals(this.DestinationField, value) != true)) {
                    this.DestinationField = value;
                    this.RaisePropertyChanged("Destination");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string Origin {
            get {
                return this.OriginField;
            }
            set {
                if ((object.ReferenceEquals(this.OriginField, value) != true)) {
                    this.OriginField = value;
                    this.RaisePropertyChanged("Origin");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public System.DateTime ReturnDate {
            get {
                return this.ReturnDateField;
            }
            set {
                if ((this.ReturnDateField.Equals(value) != true)) {
                    this.ReturnDateField = value;
                    this.RaisePropertyChanged("ReturnDate");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="AvailabilityResponse", Namespace="http://schemas.datacontract.org/2004/07/BookingMockService.Entity")]
    [System.SerializableAttribute()]
    public partial class AvailabilityResponse : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
        
        [System.NonSerializedAttribute()]
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private System.Collections.Generic.List<ThirdPartyBookingMockFeature.ThirdPartyBookingServiceReference.Journey> InboundJourneysField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private System.Collections.Generic.List<ThirdPartyBookingMockFeature.ThirdPartyBookingServiceReference.Journey> OutoundJourneysField;
        
        [global::System.ComponentModel.BrowsableAttribute(false)]
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
            get {
                return this.extensionDataField;
            }
            set {
                this.extensionDataField = value;
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public System.Collections.Generic.List<ThirdPartyBookingMockFeature.ThirdPartyBookingServiceReference.Journey> InboundJourneys {
            get {
                return this.InboundJourneysField;
            }
            set {
                if ((object.ReferenceEquals(this.InboundJourneysField, value) != true)) {
                    this.InboundJourneysField = value;
                    this.RaisePropertyChanged("InboundJourneys");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public System.Collections.Generic.List<ThirdPartyBookingMockFeature.ThirdPartyBookingServiceReference.Journey> OutoundJourneys {
            get {
                return this.OutoundJourneysField;
            }
            set {
                if ((object.ReferenceEquals(this.OutoundJourneysField, value) != true)) {
                    this.OutoundJourneysField = value;
                    this.RaisePropertyChanged("OutoundJourneys");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="Journey", Namespace="http://schemas.datacontract.org/2004/07/BookingMockService.Entity")]
    [System.SerializableAttribute()]
    public partial class Journey : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
        
        [System.NonSerializedAttribute()]
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private ThirdPartyBookingMockFeature.ThirdPartyBookingServiceReference.Location ArrivalStationField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private System.DateTime ArrivalTimeField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string CarrierField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private ThirdPartyBookingMockFeature.ThirdPartyBookingServiceReference.Location DepartureStationField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private System.DateTime DepartureTimeField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string KeyField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string NumberField;
        
        [global::System.ComponentModel.BrowsableAttribute(false)]
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
            get {
                return this.extensionDataField;
            }
            set {
                this.extensionDataField = value;
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public ThirdPartyBookingMockFeature.ThirdPartyBookingServiceReference.Location ArrivalStation {
            get {
                return this.ArrivalStationField;
            }
            set {
                if ((object.ReferenceEquals(this.ArrivalStationField, value) != true)) {
                    this.ArrivalStationField = value;
                    this.RaisePropertyChanged("ArrivalStation");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public System.DateTime ArrivalTime {
            get {
                return this.ArrivalTimeField;
            }
            set {
                if ((this.ArrivalTimeField.Equals(value) != true)) {
                    this.ArrivalTimeField = value;
                    this.RaisePropertyChanged("ArrivalTime");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string Carrier {
            get {
                return this.CarrierField;
            }
            set {
                if ((object.ReferenceEquals(this.CarrierField, value) != true)) {
                    this.CarrierField = value;
                    this.RaisePropertyChanged("Carrier");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public ThirdPartyBookingMockFeature.ThirdPartyBookingServiceReference.Location DepartureStation {
            get {
                return this.DepartureStationField;
            }
            set {
                if ((object.ReferenceEquals(this.DepartureStationField, value) != true)) {
                    this.DepartureStationField = value;
                    this.RaisePropertyChanged("DepartureStation");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public System.DateTime DepartureTime {
            get {
                return this.DepartureTimeField;
            }
            set {
                if ((this.DepartureTimeField.Equals(value) != true)) {
                    this.DepartureTimeField = value;
                    this.RaisePropertyChanged("DepartureTime");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string Key {
            get {
                return this.KeyField;
            }
            set {
                if ((object.ReferenceEquals(this.KeyField, value) != true)) {
                    this.KeyField = value;
                    this.RaisePropertyChanged("Key");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string Number {
            get {
                return this.NumberField;
            }
            set {
                if ((object.ReferenceEquals(this.NumberField, value) != true)) {
                    this.NumberField = value;
                    this.RaisePropertyChanged("Number");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="Location", Namespace="http://schemas.datacontract.org/2004/07/BookingMockService.Entity")]
    [System.SerializableAttribute()]
    public partial class Location : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
        
        [System.NonSerializedAttribute()]
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string CodeField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string NameField;
        
        [global::System.ComponentModel.BrowsableAttribute(false)]
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
            get {
                return this.extensionDataField;
            }
            set {
                this.extensionDataField = value;
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string Code {
            get {
                return this.CodeField;
            }
            set {
                if ((object.ReferenceEquals(this.CodeField, value) != true)) {
                    this.CodeField = value;
                    this.RaisePropertyChanged("Code");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string Name {
            get {
                return this.NameField;
            }
            set {
                if ((object.ReferenceEquals(this.NameField, value) != true)) {
                    this.NameField = value;
                    this.RaisePropertyChanged("Name");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    [System.ServiceModel.ServiceContractAttribute(ConfigurationName="ThirdPartyBookingServiceReference.IBookingService")]
    public interface IBookingService {
        
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IBookingService/GetAvailability", ReplyAction="http://tempuri.org/IBookingService/GetAvailabilityResponse")]
        ThirdPartyBookingMockFeature.ThirdPartyBookingServiceReference.AvailabilityResponse GetAvailability(ThirdPartyBookingMockFeature.ThirdPartyBookingServiceReference.AvailabilityRequest request);
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    public interface IBookingServiceChannel : ThirdPartyBookingMockFeature.ThirdPartyBookingServiceReference.IBookingService, System.ServiceModel.IClientChannel {
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    public partial class BookingServiceClient : System.ServiceModel.ClientBase<ThirdPartyBookingMockFeature.ThirdPartyBookingServiceReference.IBookingService>, ThirdPartyBookingMockFeature.ThirdPartyBookingServiceReference.IBookingService {
        
        public BookingServiceClient() {
        }
        
        public BookingServiceClient(string endpointConfigurationName) : 
                base(endpointConfigurationName) {
        }
        
        public BookingServiceClient(string endpointConfigurationName, string remoteAddress) : 
                base(endpointConfigurationName, remoteAddress) {
        }
        
        public BookingServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
                base(endpointConfigurationName, remoteAddress) {
        }
        
        public BookingServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
                base(binding, remoteAddress) {
        }
        
        public ThirdPartyBookingMockFeature.ThirdPartyBookingServiceReference.AvailabilityResponse GetAvailability(ThirdPartyBookingMockFeature.ThirdPartyBookingServiceReference.AvailabilityRequest request) {
            return base.Channel.GetAvailability(request);
        }
    }
}
