using System.Runtime.Serialization;

namespace TINK.Repository.Response
{
	[DataContract]
	public class ResponseBase : CopriVersion
	{
		[DataMember]
		public string response_state { get; private set; }

		[DataMember]
		public string response { get; private set; }

		[DataMember]
		public string response_text { get; private set; }

		[DataMember]
		public string authcookie { get; private set; }

		/// <summary> Message shown to user.</summary>
		[DataMember]
		public string merchant_message { get; private set; }

		/// <summary> Initial map display area.</summary>
		[DataMember]
		public MapSpan init_map { get; private set; }

		/// <summary> Url of page holding agb info. </summary>
		[DataMember]
		public string agb_html { get; private set; }

		/// <summary> Url of page holding instructions how to rent bikes. </summary>
		[DataMember]
		public string bike_info_html { get; private set; }

		/// <summary> Url of page holding privacy info. </summary>
		[DataMember]
		public string privacy_html { get; private set; }

		/// <summary> Url of page holding impress info. </summary>
		[DataMember]
		public string impress_html { get; private set; }

		/// <summary> Url of page holding tariff info. </summary>
		[DataMember]
		public string tariff_info_html { get; private set; }

		/// <summary> Textual description of response. </summary>
		public new string ToString()
		{
			return $"Response state is \"{response_state ?? string.Empty}\", " +
				$"auth cookie is \"{authcookie ?? string.Empty}\" and response is \"{response_text ?? string.Empty}\", " +
				$"code \"{response ?? string.Empty}\"" +
				$"response text \"{response_text ?? string.Empty}\".";
		}
	}
}