using System;
using System.Runtime.Serialization;
using Newtonsoft.Json;
namespace ShareeBike.Model.State
{
///
/// Manages state booked.
///
[DataContract]
public sealed class StateOccupiedInfo : BaseState, IBaseState, INotAvailableState
{
///
/// Prevents an invalid instance to be created.
///
private StateOccupiedInfo() : base(InUseStateEnum.Booked)
{
}
///
/// Constructs an object holding booked state info.
///
/// Date time when bike was booked
///
///
public StateOccupiedInfo(
DateTime p_oFrom,
string p_strMailAddress,
string p_strCode) : base(InUseStateEnum.Booked)
{
From = p_oFrom;
MailAddress = p_strMailAddress;
Code = p_strCode;
}
/// Constructor for Json serialization.
/// Unused value.
/// Date time when bike was booked
///
///
[JsonConstructor]
private StateOccupiedInfo(
InUseStateEnum Value,
DateTime From,
string MailAddress,
string Code) : this(From, MailAddress, Code)
{
}
///
/// Gets the info that state is reserved.
/// Setter exists only for serialization purposes.
///
public override InUseStateEnum Value
{
get
{
return InUseStateEnum.Booked;
}
}
///
/// Prevents an invalid instance to be created.
///
[DataMember]
public DateTime From { get; }
///
/// Mail address of user who bookec the bike.
///
[DataMember]
public string MailAddress { get; }
///
/// Booking code.
///
[DataMember]
public string Code { get; }
}
}