Light12306/TrainInfomationProviderService/TrainInfo/Entities/TrainTransitOnceResult.cs
2014-11-27 23:25:36 +08:00

88 lines
2.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TrainInfomationProviderService.TrainInfo.Entities
{
public class TrainTransitOnceResult
{
public TrainLineSegment First { get; private set; }
public TrainLineSegment Second { get; private set; }
/// <summary>
/// 不推荐车次
/// </summary>
public bool NotRecommand { get; private set; }
/// <summary>
/// 创建 <see cref="TrainTransitOnceResult" /> 的新实例(TrainTransitOnceResult)
/// </summary>
/// <param name="first"></param>
/// <param name="second"></param>
public TrainTransitOnceResult(TrainLineSegment first, TrainLineSegment second, DateTime date, bool notRecommand=false)
{
First = first;
Second = second;
InitTimeInfo(date);
NotRecommand = notRecommand;
}
void InitTimeInfo(DateTime date)
{
FirstTrainLeftDate = date.Add(First.From.Left.Value.AddDays(-First.From.Left.Value.Days));
FirstTrainArriveDate = FirstTrainLeftDate.Add(First.ElapsedTime);
SecondTrainLeftDate = FirstTrainArriveDate.Date.Add(Second.From.Left.Value.AddDays(-Second.From.Left.Value.Days));
if (SecondTrainLeftDate < FirstTrainArriveDate)
SecondTrainLeftDate = SecondTrainLeftDate.AddDays(1);
SecondTrainArriveDate = SecondTrainLeftDate.Add(Second.ElapsedTime);
WaitElaspsedTime = SecondTrainLeftDate - FirstTrainArriveDate;
TotalElapsedTime = SecondTrainArriveDate - FirstTrainLeftDate;
}
/// <summary>
/// 前车出发时间
/// </summary>
public DateTime FirstTrainLeftDate { get; private set; }
/// <summary>
/// 前车到达时间
/// </summary>
public DateTime FirstTrainArriveDate { get; private set; }
/// <summary>
/// 后车出发时间
/// </summary>
public DateTime SecondTrainLeftDate { get; private set; }
/// <summary>
/// 后车到达时间
/// </summary>
public DateTime SecondTrainArriveDate { get; private set; }
/// <summary>
/// 前车历时
/// </summary>
public TimeSpan FirstElapsedTime { get { return First.ElapsedTime; } }
/// <summary>
/// 后车历时
/// </summary>
public TimeSpan SecondElapsedTime { get { return Second.ElapsedTime; } }
/// <summary>
/// 等待耗时
/// </summary>
public TimeSpan WaitElaspsedTime { get; private set; }
/// <summary>
/// 总时间
/// </summary>
public TimeSpan TotalElapsedTime { get; private set; }
}
}