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; }
///
/// 不推荐车次
///
public bool NotRecommand { get; private set; }
///
/// 创建 的新实例(TrainTransitOnceResult)
///
///
///
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;
}
///
/// 前车出发时间
///
public DateTime FirstTrainLeftDate { get; private set; }
///
/// 前车到达时间
///
public DateTime FirstTrainArriveDate { get; private set; }
///
/// 后车出发时间
///
public DateTime SecondTrainLeftDate { get; private set; }
///
/// 后车到达时间
///
public DateTime SecondTrainArriveDate { get; private set; }
///
/// 前车历时
///
public TimeSpan FirstElapsedTime { get { return First.ElapsedTime; } }
///
/// 后车历时
///
public TimeSpan SecondElapsedTime { get { return Second.ElapsedTime; } }
///
/// 等待耗时
///
public TimeSpan WaitElaspsedTime { get; private set; }
///
/// 总时间
///
public TimeSpan TotalElapsedTime { get; private set; }
}
}