/// <summary> /// Create URI for quering /// </summary> /// <returns></returns> public override Uri ToUri() { var qsb = new Internal.QueryStringBuilder() .Append("origins", WaypointsToUri(_waypointsOrigin)) .Append("destinations", WaypointsToUri(_waypointsDestination)) .Append("mode", Mode.ToString()) .Append("language", Language) .Append("units", Units.ToString()) .Append("avoid", AvoidHelper.MakeAvoidString(Avoid)) .Append("departure_time", DepartureTime.ToString()); if (DepartureTime == null) { qsb.Append("arrival_time", ArrivalTime.ToString()); } if (DepartureTime != null && Mode.Equals(TravelMode.driving)) { qsb.Append("traffic_model ", TrafficModel.ToString()); } if (Mode.Equals(TravelMode.transit)) { qsb.Append("transit_mode", TransitMode.ToString()); qsb.Append("transit_routing_preference ", TransitRoutingPreference.ToString()); } var url = "json?" + qsb.ToString(); return(new Uri(url, UriKind.Relative)); }
public string ToURIString() { string uri = "origins="; foreach (var orig in Origins) { if (orig != Origins.First()) { uri += "|"; } uri += orig.ToLocationString(); } uri += "&destinations="; foreach (var orig in Destinations) { if (orig != Destinations.First()) { uri += "|"; } uri += orig.ToLocationString(); } if (string.IsNullOrEmpty(Language)) { uri += "&language=" + Language; } if (Mode != null) { uri += "&mode=" + Mode.ToString(); } if (Avoid != null) { uri += "&avoid=" + Avoid.ToString(); } if (string.IsNullOrWhiteSpace(Region)) { uri += "®ion=" + Region; } if (TrafficModel != null) { uri += "&trafficmodel=" + TrafficModel.ToString(); } if (TransitMode != null) { uri += "&transit=" + TransitMode.ToString(); } if (preference != null) { uri += "&transit_routing_preference=" + preference.ToString(); } return(uri); }
public async Task ShouldGetTrafficForRegionWithEmptyCacheSuccessfully() { TrafficModel cachedValue = null; var trafficCache = new Mock <ITrafficCache>(); trafficCache.Setup(p => p.GetByRegionCode(_region1.Code)).Returns(() => { return(cachedValue); }); trafficCache.Setup(p => p.Save(_traffic1)).Callback((TrafficModel traffic) => { cachedValue = traffic; }); var trafficProvider = new Mock <ITrafficProvider>(); trafficProvider.Setup(p => p.GetTrafficAsync(_region1.Code)).Returns(Task.Run(() => _traffic1)); var regionService = new Mock <IRegionService>(); var service = new CachedTrafficService(trafficCache.Object, trafficProvider.Object, regionService.Object); var result = await service.GetTrafficForRegionAsync(_region1); Assert.IsNotNull(result); Assert.AreEqual(_traffic1.RegionCode, result.RegionCode); Assert.AreEqual(_traffic1.Level, result.Level); Assert.AreEqual(_traffic1.Hint, result.Hint); trafficCache.Verify(tc => tc.Save(It.IsAny <TrafficModel>()), Times.Once()); trafficProvider.Verify(tc => tc.GetTrafficAsync(_region1.Code), Times.Once()); }
public static TrafficWithRegionDto GetTrafficWithRegionDto(TrafficModel traffic, RegionModel region) { return(new TrafficWithRegionDto { Region = GetRegionDto(region), Traffic = GetTrafficDto(traffic) }); }
private bool IsCachedValueActual(TrafficModel traffic) { if (traffic == null) { return(false); } var age = DateTime.Now - traffic.UpdatedAt; return(age <= TimeSpan.FromSeconds(CachedValueActualInSeconds)); ; }
public async Task Repo_GetEntity_Called_Once() { // Arrange mockRepo.Setup(x => x.GetTrafficInfoAsync( It.IsAny <string>(), It.IsAny <string>())) .ReturnsAsync(GetMockEntity()); // Act TrafficModel model = await _service.GetTrafficModelAsync(Origin, Destination); // Assert mockRepo.Verify(x => x.GetTrafficInfoAsync(It.IsAny <string>(), It.IsAny <string>()), Times.Once); }
public static TrafficDto GetTrafficDto(TrafficModel trafficModel) { if (trafficModel.IsEmpty()) { return(null); } return(new TrafficDto { Level = trafficModel.Level, Hint = trafficModel.Hint }); }
public void Can_Map_From_Entity() { // Arrange TrafficEntity entity = GetMockEntity(); // Act _model = _service.MapFromEntity(entity); // Assert Assert.Equal(Distance, _model.Distance); Assert.Equal(Duration, _model.Duration); Assert.Equal(Destination, _model.Destination); Assert.Equal(Origin, _model.Origin); }
public async Task Calculate_Values_Correctly() { // Arrange TrafficEntity entity = GetMockEntity(); DateTime timeOfArrival = DateTime.Now.AddSeconds(Duration); // Act TrafficModel model = await _service.GetTrafficModelAsync(Origin, Destination); model.InitializeModel(); // Assert Assert.Equal(122.31, model.Distance); Assert.Equal(timeOfArrival.Hour, model.TimeOfArrival.Hour); Assert.Equal(timeOfArrival.Minute, model.TimeOfArrival.Minute); }
private async Task <TrafficModel> GetTrafficModelAsync(string origin, string destination) { if (string.IsNullOrEmpty(origin)) { throw new ArgumentNullException(nameof(origin)); } if (string.IsNullOrEmpty(destination)) { throw new ArgumentNullException(nameof(destination)); } TrafficModel model = await _trafficService.GetTrafficModelAsync(origin, destination); return(model); }
public async Task Calculate_Values_Correctly() { // Arrange mockRepo.Setup(x => x.GetTrafficInfoAsync( It.IsAny <string>(), It.IsAny <string>())) .ReturnsAsync(GetMockEntity()); DateTime timeOfArrival = DateTime.Now.AddSeconds(Duration); // Act TrafficModel model = await _service.GetTrafficModelAsync(Origin, Destination); // Assert Assert.Equal(122.31, model.Distance); Assert.Equal(DistanceUom.Metric, model.DistanceUom); Assert.Equal(timeOfArrival.Hour, model.TimeOfArrival.Hour); Assert.Equal(timeOfArrival.Minute, model.TimeOfArrival.Minute); }
private static async Task <MagicMirrorDto> GenerateDto(UserSettings criteria) { _weatherService = new WeatherService(); _trafficService = new TrafficService(criteria); WeatherModel weatherModel = await _weatherService.GetModelAsync(); TrafficModel trafficModel = await _trafficService.GetModelAsync(); var dto = new MagicMirrorDto { UserName = criteria.UserName, DegreesCelsius = weatherModel.TemperatureCelsius, TravelTime = trafficModel.MinutesText, TrafficDensity = trafficModel.TrafficDensity, WeatherType = weatherModel.WeatherType }; return(dto); }
public virtual void Save(TrafficModel model) { lock (_context) { var original = _context.Traffics.SingleOrDefault(t => t.RegionCode == model.RegionCode); if (original == null) { model.UpdatedAt = DateTime.Now; _context.Traffics.Add(model); } else { original.UpdatedAt = DateTime.Now; original.Hint = model.Hint; original.Level = model.Level; _context.Traffics.Update(original); } _context.SaveChangesAsync(); } }
private static void setData() { Console.WriteLine("reading csv"); string filePath = @".\Resources\combined_csv.csv"; StreamReader sr = new StreamReader(filePath); var lines = new List <string[]>(); int Row = 0; while (!sr.EndOfStream) { string[] Line = sr.ReadLine().Split(','); lines.Add(Line); Row++; } var data = lines.ToArray(); _TrafficData = TrafficModel.TrafficModelParser(data); Console.WriteLine("csv loaded"); }
private async void GetTrafficInfo(object sender, object e) { try { var settings = App.UserSettings; TrafficModel trafficModel = await _trafficService.GetModelAsync(settings.HomeAddress, settings.HomeCity, settings.WorkAddress); TravelDuration = trafficModel.Summary; if (!trafficTimer.IsEnabled) { trafficTimer.Start(); } } catch (HttpRequestException) { TrafficModel trafficModel = _trafficService.GetOfflineModel(localFolder); TravelDuration = trafficModel.Summary; int minutes = 5; await Task.Delay((minutes * 60) * 10000); GetTrafficInfo(null, null); } catch (Exception) { if (trafficTimer.IsEnabled) { trafficTimer.Stop(); } int minutes = 5; await Task.Delay((minutes * 60) * 10000); GetTrafficInfo(null, null); } }
public override Uri ToUri() { if (Origin == null) { throw new InvalidOperationException("Origin is required"); } var qsb = new Google.Maps.Internal.QueryStringBuilder() .Append("origin", (Origin == null ? (string)null : Origin.GetAsUrlParameter())) .Append("destination", (Destination == null ? (string)null : Destination.GetAsUrlParameter())) .Append("mode", (Mode != TravelMode.driving ? Mode.ToString() : (string)null)) .Append("traffic_model", (TrafficModel != TrafficModel.best_guess ? TrafficModel.ToString():(string)null)) .Append("departure_time", (DepartureTime == null ? null : DepartureTime.Value.ToString())) .Append("arrival_time", (ArrivalTime == null ? null : ArrivalTime.Value.ToString())) .Append("waypoints", WaypointsToUri()) .Append("region", Region) .Append("language", Language) .Append("avoid", AvoidHelper.MakeAvoidString(Avoid)) .Append("alternatives", Alternatives.HasValue ? (Alternatives.Value ? "true" : "false") : (string)null); var url = "json?" + qsb.ToString(); return(new Uri(url, UriKind.Relative)); }
protected override QueryStringParametersList GetQueryStringParameters() { if (Origins == null || !Origins.Any()) { throw new ArgumentException("Must specify an Origins"); } if (Destinations == null || !Destinations.Any()) { throw new ArgumentException("Must specify a Destinations"); } if (DepartureTime != null && ArrivalTime != null) { throw new ArgumentException("Must not specify both an ArrivalTime and a DepartureTime"); } if (Mode != DistanceMatrixTravelModes.transit && ArrivalTime != null) { throw new ArgumentException("Must not specify ArrivalTime for modes other than Transit"); } if (Mode != DistanceMatrixTravelModes.transit && TransitRoutingPreference != null) { throw new ArgumentException("Must not specify TransitRoutingPreference for modes other than Transit"); } if (Mode != DistanceMatrixTravelModes.transit && TransitModes != null && TransitModes.Length > 0) { throw new ArgumentException("Must not specify TransitModes for modes other than Transit"); } if ((!(Mode == null || Mode == DistanceMatrixTravelModes.driving) || DepartureTime == null) && TrafficModel != null) { throw new ArgumentException("A TrafficModel must not be specified unless the Mode is Driving and a DepartureTime is provided"); } var parameters = base.GetQueryStringParameters(); parameters.Add("origins", string.Join("|", Origins)); parameters.Add("destinations", string.Join("|", Destinations)); if (DepartureTime != null) { parameters.Add("departure_time", DepartureTime.ToString()); } if (ArrivalTime != null) { parameters.Add("arrival_time", ArrivalTime.ToString()); } if (Mode != null) { parameters.Add("mode", Mode.ToString()); } if (TrafficModel != null) { parameters.Add("traffic_model", TrafficModel.ToString()); } if (TransitRoutingPreference != null) { parameters.Add("transit_routing_preference", TransitRoutingPreference.ToString()); } if (TransitModes != null && TransitModes.Length > 0) { parameters.Add("transit_mode", string.Join("|", TransitModes.Select(a => a.ToString()))); } if (Avoid != null) { parameters.Add("avoid", Avoid.ToString()); } if (Units != null) { parameters.Add("units", Units.ToString()); } if (!string.IsNullOrWhiteSpace(Language)) { parameters.Add("language", Language); } return(parameters); }
public override string ToString() { Dictionary <string, string> parameters = new Dictionary <string, string>(); //adding required parrameters if (Origins != null) { parameters.Add("origins", string.Join("|", Origins.Select(d => d.ToString()))); } if (Destinations != null) { parameters.Add("destinations", string.Join("|", Destinations.Select(d => d.ToString()))); } if (!string.IsNullOrEmpty(Key)) { parameters.Add("key", Key); } //adding optional parametres if (TravelMode != null) { parameters.Add("mode", TravelMode.Value.ToString()); } if (Avoid != null) { parameters.Add("avoid", string.Join("|", Avoid.Distinct().Select(d => d.ToString()))); } if (string.IsNullOrEmpty(Language)) { parameters.Add("language", Language); } if (Units is UnitSystem.imperial) { parameters.Add("units", Units.ToString()); } if (string.IsNullOrEmpty(Region)) { parameters.Add("region", Region); } if (ArrivalTime != null) { parameters.Add("arrival_time", ArrivalTime - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc) != null ? (ArrivalTime.Value - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).Seconds.ToString() : null); } if (DepartureTime != null) { parameters.Add("departure_time", DepartureTime - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc) != null ? (DepartureTime.Value - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).Seconds.ToString() : null); } if (TrafficModel != null) { parameters.Add("traffic_model", TrafficModel.ToString()); } if (TransitMode != null) { parameters.Add("transit_mode", string.Join("|", TransitMode.Distinct().Select(d => d.ToString()))); } if (TransitRoutingPreference != null) { parameters.Add("transit_routing_preference", TransitRoutingPreference.ToString()); } return(string.Join("&", parameters.Select(d => d.Key + "=" + d.Value))); }
//過濾交通限制 public static bool FilterTraffic(DateTime S_Date, string S_Time, string Fly_No, TrafficModel sec_item, DataTable dt) { bool date_chk = false; bool chk = false; foreach (DataRow dtl_dr in dt.Rows) { string Forward_Flag = dtl_dr.ToStringEx("FORWARD_FLAG"); //判斷禁搭日期 if (Forward_Flag != "" && Forward_Flag == sec_item.FORWARD_FLAG) { DateTime emgargo_s_date = DateTime.ParseExact(dtl_dr.ToStringEx("S_DATE"), "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture); //禁搭日起 DateTime emgargo_e_date = DateTime.ParseExact(dtl_dr.ToStringEx("E_DATE"), "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture); //禁搭日迄 if (S_Date >= emgargo_s_date && S_Date <= emgargo_e_date) { date_chk = false; break; } else { date_chk = true; } } else { date_chk = true; } //判斷禁搭航班、時間 if (date_chk == true) { IFormatProvider culture = new System.Globalization.CultureInfo("zh-TW", true); string go_limit_flight_no = dtl_dr.ToStringEx("GO_LIMIT_FLIGHT_NO"); string go_embargo_flight_no = dtl_dr.ToStringEx("GO_EMBARGO_FLIGHT_NO"); string back_limit_flight_no = dtl_dr.ToStringEx("BACK_LIMIT_FLIGHT_NO"); string back_embargo_flight_no = dtl_dr.ToStringEx("BACK_EMBARGO_FLIGHT_NO"); DateTime s_time = DateTime.ParseExact(S_Time, "HHmm", culture); //出發時間 if (sec_item.FORWARD_FLAG == "1") //1-->去程 { //去程限搭航班 if (go_limit_flight_no != "") { foreach (string s in go_limit_flight_no.Split(',')) { if (s == Fly_No) { chk = true; break; } else { chk = false; } } } //去程禁搭航班 else if (go_embargo_flight_no != "") { foreach (string s in go_embargo_flight_no.Split(',')) { if (s == Fly_No) { chk = false; break; } else { chk = true; } } } else { chk = true; } DateTime go_limit_s_time; DateTime go_limit_e_time; DateTime go_embargo_s_time; DateTime go_embargo_e_time; if (chk == true) { //去程限搭時段起 迄 if (dtl_dr.ToStringEx("GO_LIMIT_FLIGHT_S_TIME") != "" && dtl_dr.ToStringEx("GO_LIMIT_FLIGHT_E_TIME") != "") { go_limit_s_time = DateTime.ParseExact(dtl_dr.ToStringEx("GO_LIMIT_FLIGHT_S_TIME"), "HHmm", culture); go_limit_e_time = DateTime.ParseExact(dtl_dr.ToStringEx("GO_LIMIT_FLIGHT_E_TIME"), "HHmm", culture); if (s_time >= go_limit_s_time && s_time <= go_limit_e_time) { chk = true; } else { chk = false; } } else if (dtl_dr.ToStringEx("GO_LIMIT_FLIGHT_S_TIME") != "" && dtl_dr.ToStringEx("GO_LIMIT_FLIGHT_E_TIME") == "") { go_limit_s_time = DateTime.ParseExact(dtl_dr.ToStringEx("GO_LIMIT_FLIGHT_S_TIME"), "HHmm", culture); if (s_time >= go_limit_s_time) { chk = true; } else { chk = false; } } else if (dtl_dr.ToStringEx("GO_LIMIT_FLIGHT_S_TIME") == "" && dtl_dr.ToStringEx("GO_LIMIT_FLIGHT_E_TIME") != "") { go_limit_e_time = DateTime.ParseExact(dtl_dr.ToStringEx("GO_LIMIT_FLIGHT_E_TIME"), "HHmm", culture); if (s_time <= go_limit_e_time) { chk = true; } else { chk = false; } } //去程禁搭時段起 迄 else if (dtl_dr.ToStringEx("GO_EMBARGO_FLIGHT_S_TIME") != "" && dtl_dr.ToStringEx("GO_EMBARGO_FLIGHT_E_TIME") != "") { go_embargo_s_time = DateTime.ParseExact(dtl_dr.ToStringEx("GO_EMBARGO_FLIGHT_S_TIME"), "HHmm", culture); go_embargo_e_time = DateTime.ParseExact(dtl_dr.ToStringEx("GO_EMBARGO_FLIGHT_E_TIME"), "HHmm", culture); if (!((s_time >= go_embargo_s_time) && (s_time <= go_embargo_e_time))) { chk = true; } else { chk = false; } } else if (dtl_dr.ToStringEx("GO_EMBARGO_FLIGHT_S_TIME") != "" && dtl_dr.ToStringEx("GO_EMBARGO_FLIGHT_E_TIME") == "") { go_embargo_s_time = DateTime.ParseExact(dtl_dr.ToStringEx("GO_EMBARGO_FLIGHT_S_TIME"), "HHmm", culture); if (!(s_time >= go_embargo_s_time)) { chk = true; } else { chk = false; } } else if (dtl_dr.ToStringEx("GO_EMBARGO_FLIGHT_S_TIME") == "" && dtl_dr.ToStringEx("GO_EMBARGO_FLIGHT_E_TIME") != "") { go_embargo_e_time = DateTime.ParseExact(dtl_dr.ToStringEx("GO_EMBARGO_FLIGHT_E_TIME"), "HHmm", culture); if (!(s_time <= go_embargo_e_time)) { chk = true; } else { chk = false; } } } } else //2-->回程 { //回程限搭航班 if (back_limit_flight_no != "") { foreach (string s in back_limit_flight_no.Split(',')) { if (s == Fly_No) { chk = true; break; } else { chk = false; } } } //回程禁搭航班 else if (back_embargo_flight_no != "") { foreach (string s in back_embargo_flight_no.Split(',')) { if (s == Fly_No) { chk = false; break; } else { chk = true; } } } else { chk = true; } DateTime back_limit_s_time; DateTime back_limit_e_time; DateTime back_embargo_s_time; DateTime back_embargo_e_time; if (chk == true) { //回程限搭時段起 迄 if (dtl_dr.ToStringEx("BACK_LIMIT_FLIGHT_S_TIME") != "" && dtl_dr.ToStringEx("BACK_LIMIT_FLIGHT_E_TIME") != "") { back_limit_s_time = DateTime.ParseExact(dtl_dr.ToStringEx("BACK_LIMIT_FLIGHT_S_TIME"), "HHmm", culture); back_limit_e_time = DateTime.ParseExact(dtl_dr.ToStringEx("BACK_LIMIT_FLIGHT_E_TIME"), "HHmm", culture); if (s_time >= back_limit_s_time && s_time <= back_limit_e_time) { chk = true; } else { chk = false; } } else if (dtl_dr.ToStringEx("BACK_LIMIT_FLIGHT_S_TIME") != "" && dtl_dr.ToStringEx("BACK_LIMIT_FLIGHT_E_TIME") == "") { back_limit_s_time = DateTime.ParseExact(dtl_dr.ToStringEx("BACK_LIMIT_FLIGHT_S_TIME"), "HHmm", culture); if (s_time >= back_limit_s_time) { chk = true; } else { chk = false; } } else if (dtl_dr.ToStringEx("BACK_LIMIT_FLIGHT_S_TIME") == "" && dtl_dr.ToStringEx("BACK_LIMIT_FLIGHT_E_TIME") != "") { back_limit_e_time = DateTime.ParseExact(dtl_dr.ToStringEx("BACK_LIMIT_FLIGHT_E_TIME"), "HHmm", culture); if (s_time <= back_limit_e_time) { chk = true; } else { chk = false; } } //回程禁搭時段起 迄 else if (dtl_dr.ToStringEx("BACK_EMBARGO_FLIGHT_S_TIME") != "" && dtl_dr.ToStringEx("BACK_EMBARGO_FLIGHT_E_TIME") != "") { back_embargo_s_time = DateTime.ParseExact(dtl_dr.ToStringEx("BACK_EMBARGO_FLIGHT_S_TIME"), "HHmm", culture); back_embargo_e_time = DateTime.ParseExact(dtl_dr.ToStringEx("BACK_EMBARGO_FLIGHT_E_TIME"), "HHmm", culture); if (!((s_time >= back_embargo_s_time) && (s_time <= back_embargo_e_time))) { chk = true; } else { chk = false; } } else if (dtl_dr.ToStringEx("BACK_EMBARGO_FLIGHT_S_TIME") != "" && dtl_dr.ToStringEx("BACK_EMBARGO_FLIGHT_E_TIME") == "") { back_embargo_s_time = DateTime.ParseExact(dtl_dr.ToStringEx("BACK_EMBARGO_FLIGHT_S_TIME"), "HHmm", culture); if (!(s_time >= back_embargo_s_time)) { chk = true; } else { chk = false; } } else if (dtl_dr.ToStringEx("BACK_EMBARGO_FLIGHT_S_TIME") == "" && dtl_dr.ToStringEx("BACK_EMBARGO_FLIGHT_E_TIME") != "") { back_embargo_e_time = DateTime.ParseExact(dtl_dr.ToStringEx("BACK_EMBARGO_FLIGHT_E_TIME"), "HHmm", culture); if (!(s_time <= back_embargo_e_time)) { chk = true; } else { chk = false; } } } } } } return(chk); }
// 取得交通航段 public static List <TrafficModel> GetTrafficSectors(ProdDetailRQModel req) { List <TrafficModel> sectors = new List <TrafficModel>(); try { // 區段 SECTOR DataSet sec_ds = TrafficDAL.GetTrafficSectors(req.PRODNO, req.SDATE, req.EDATE); var fw_flag = ""; var accum_add_day = 0; var total_psg = req.ADULT + req.CHILD + req.CHILDNB + req.SENIOR; foreach (DataRow dr in sec_ds.Tables[0].Rows) { // 檢查去/回程國定假日 var AddPriceWeeks = string.IsNullOrEmpty(dr.ToStringEx("ADD_PRICE_WEEKS")) ? "0000000" : dr.ToStringEx("ADD_PRICE_WEEKS"); var s_is_holiday = AddPriceWeeks.Substring(Convert.ToInt32(Convert.ToDateTime(req.SDATE).DayOfWeek), 1); // 出發日是否為假日 var e_is_holiday = AddPriceWeeks.Substring(Convert.ToInt32(Convert.ToDateTime(req.EDATE).DayOfWeek), 1); // 回程日是否為假日 s_is_holiday = (s_is_holiday.Equals("1") || NationalHolidayDAL.ChkNationalHoliday(req.SDATE)) ? "1" : "0"; e_is_holiday = (e_is_holiday.Equals("1") || NationalHolidayDAL.ChkNationalHoliday(req.EDATE)) ? "1" : "0"; var IsTripInHoliday = (dr.ToStringEx("FORWARD_FLAG").Equals("1") ? s_is_holiday : e_is_holiday).Equals("1") ? true : false; var dept_date = dr.ToStringEx("FORWARD_FLAG").Equals("1") ? req.SDATE : req.EDATE; // 各段交通累積日數, 當去回程切換數值應該歸零重計 if (fw_flag != dr.ToStringEx("FORWARD_FLAG")) { accum_add_day = 0; fw_flag = dr.ToStringEx("FORWARD_FLAG"); } accum_add_day += dr.ToInt32("ADD_DAY"); try { // 航段使用交通成本 TrafficSectorCostModel SectorCost = GetTrafficCost(req.PRODNO, dr.ToStringEx("DEP_FROM"), dr.ToStringEx("ARR_TO"), Convert.ToDateTime(dept_date), dr.ToInt64("TRAFFIC_XID"), dr.ToInt64("TRAFFIC_COST_XID"), IsTripInHoliday); // 跳過無成本的交通段 if (SectorCost == null) { throw new Exception(string.Format("PROD_NO={0}, FORWARD_FLAG={1}, DATE={2}, TRAFFIC_XID={3}, TRAFFIC_COST_XID={4} 交通成本為 NULL", req.PRODNO, dr.ToStringEx("FORWARD_FLAG"), dept_date, dr.ToInt64("TRAFFIC_XID"), dr.ToInt64("TRAFFIC_COST_XID"))); } // 若承運商為B7, 帶入預設成本與行程代碼 if (dr.ToStringEx("CARRIER_CODE").Equals("B7")) { SectorCost.ADULT_TOURCODE = IsTripInHoliday ? dr.ToStringEx("ADT_TOURCODE_H") : dr.ToStringEx("ADT_TOURCODE"); SectorCost.CHILD_TOURCODE = IsTripInHoliday ? dr.ToStringEx("CHD_TOURCODE_H") : dr.ToStringEx("CHD_TOURCODE"); SectorCost.SENIOR_TOURCODE = IsTripInHoliday ? dr.ToStringEx("SEN_TOURCODE_H") : dr.ToStringEx("SEN_TOURCODE"); SectorCost.ADULT_FAREBASIS = IsTripInHoliday ? dr.ToStringEx("ADT_FAREBASIS_H") : dr.ToStringEx("ADT_FAREBASIS"); SectorCost.CHILD_FAREBASIS = IsTripInHoliday ? dr.ToStringEx("CHD_FAREBASIS_H") : dr.ToStringEx("CHD_FAREBASIS"); SectorCost.SENIOR_FAREBASIS = IsTripInHoliday ? dr.ToStringEx("SEN_FAREBASIS_H") : dr.ToStringEx("SEN_FAREBASIS"); } #region 建構交通航段Model var sec_item = new TrafficSectorModel() { PROD_NO = dr.ToStringEx("PROD_NO"), TRAFFIC_XID = dr.ToStringEx("TRAFFIC_XID"), TRAFFIC_COST_XID = dr.ToStringEx("TRAFFIC_COST_XID"), TRAFFIC_COST_PRICE_XID = dr.ToStringEx("TRAFFIC_COST_PRICE_XID"), TRIP_WAY = dr.ToStringEx("TRIP_WAY"), FORWARD_FLAG = dr.ToStringEx("FORWARD_FLAG"), SECTOR = dr.ToInt32("SEC"), TRAFFIC_TYPE = dr.ToStringEx("TRAFFIC_TYPE"), CARRIER_CODE = dr.ToStringEx("CARRIER_CODE"), DEP_FROM = dr.ToStringEx("DEP_FROM"), ARR_TO = dr.ToStringEx("ARR_TO"), FLY_HL_FLAG = dr.ToStringEx("FLY_HL_FLAG"), SUP_NO = dr.ToStringEx("SUP_NO"), FARE_BASIS = dr.ToStringEx("FARE_BASIS"), ARNK_FLAG = dr.ToStringEx("ARNK_FLAG"), // 票規 RULE_TYPE = dr.ToStringEx("RULE_TYPE"), // 交通成本 TRAFFIC_COST = SectorCost, }; var timetable = QueryCrsTimeTable(dr.ToDateTime("S_DATE"), dr.ToDateTime("E_DATE"), sec_item, total_psg); #endregion 建構交通航段Model var sector = new TrafficModel() { PROD_NO = dr.ToStringEx("PROD_NO"), TRAFFIC_XID = dr.ToStringEx("TRAFFIC_XID"), TRIP_WAY = dr.ToStringEx("TRIP_WAY"), SECTOR = dr.ToStringEx("SEC"), TRAFFIC_TYPE = dr.ToStringEx("TRAFFIC_TYPE"), TRAFFIC_NAME = dr.ToStringEx("CARRIER_CODE_NAME"), SUP_NO = dr.ToStringEx("SUP_NO"), RETURN_FEE = dr.ToStringEx("RETURN_FEE"), RETURN_FEE_PERCENT = Convert.ToDouble(string.IsNullOrEmpty(dr.ToStringEx("RETURN_FEE_PERCENT")) ? "0" : dr.ToStringEx("RETURN_FEE_PERCENT")), // 票規 RULE_TYPE = dr.ToStringEx("RULE_TYPE"), // 交通位控 //TRAFFIC_QTYS = Qty, // 交通時刻表 //TRAFFIC_TIMETBS = timetable }; sectors.Add(sector); } catch (Exception ex2) { Website.Instance.logger.FatalFormat("{0},{1}", ex2.Message, ex2.StackTrace); } } } catch (Exception ex) { //Website.Instance.logger.FatalFormat("{0},{1}", ex.Message, ex.StackTrace); throw ex; } return(sectors); }
public override string ToString() { Dictionary <string, string> parameters = new Dictionary <string, string>(); //adding required parrameters if (Origin != null) { parameters.Add("origin", Origin.ToString()); } if (Destination != null) { parameters.Add("destination", value: Destination.ToString()); } if (!string.IsNullOrEmpty(Key)) { parameters.Add("key", Key); } //adding optional parametres if (TravelMode != null) { parameters.Add("mode", TravelMode.Value.ToString()); } if (WayPoints != null && WayPoints.Count > 0) { parameters.Add("waypoints", string.Join("|", WayPoints.Distinct().Select(d => d.ToString()))); } if (Alternatives) { parameters.Add("alternatives", Alternatives.ToString()); } if (Avoid != null) { parameters.Add("avoid", string.Join("|", Avoid.Distinct().Select(d => d.ToString()))); } if (!string.IsNullOrEmpty(Language)) { parameters.Add("language", Language); } if (Units is UnitSystem.imperial) { parameters.Add("units", Units.ToString()); } if (!string.IsNullOrEmpty(Region)) { parameters.Add("region", Region); } if (!string.IsNullOrEmpty(ArrivalTime)) { parameters.Add("arrival_time", _ArrivalTime - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc) != null ? Math.Floor((_ArrivalTime.Value.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds).ToString(CultureInfo.InvariantCulture) : null); } if (!string.IsNullOrEmpty(DepartureTime)) { parameters.Add("departure_time", _DepartureTime != null ?Math.Floor((_DepartureTime.Value.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)) .TotalSeconds).ToString(CultureInfo.InvariantCulture) : null); } if (TrafficModel != null) { parameters.Add("traffic_model", TrafficModel.ToString()); } if (TransitMode != null) { parameters.Add("transit_mode", string.Join("|", TransitMode.Distinct().Select(d => d.ToString()))); } if (TransitRoutingPreferences != null) { parameters.Add("transit_routing_preference", TransitRoutingPreferences.ToString()); } return(string.Join("&", parameters.Select(d => d.Key + "=" + d.Value))); }
public void TestInitialize() { _region1 = ModelsFactory.NewRegionModel(1, "First Region"); _traffic1 = ModelsFactory.NewTrafficModel(_region1.Code, 2, "No jams"); }