/// <summary> /// Initilize the CurentEditingItem /// </summary> /// <param name="basic1"></param> /// <param name="basic2"></param> public void ImportBasicTraffic(TrafficProxy basic1, TrafficProxy basic2, bool hasNextItem) { IsInited = true; // basic1.Used = true; edingTrafficPair.IsFilled = true; if (basic2.ID == 0) { edingTrafficPair.IsFilled = false; } edingTrafficPair.Precard = basic1.Precard; edingTrafficPair.From = basic1.Time; edingTrafficPair.BasicTrafficIdFromDate = basic1.Date; edingTrafficPair.BasicTrafficIdFrom = basic1.ID; if (basic1.IsPermit) { edingTrafficPair.BasicTrafficIdFrom = 0; edingTrafficPair.PermitIdFrom = basic1.ID; } if (hasNextItem) { edingTrafficPair.To = basic2.Time; edingTrafficPair.BasicTrafficIdToDate = basic2.Date; edingTrafficPair.BasicTrafficIdTo = basic2.ID; if (basic2.IsPermit) { edingTrafficPair.BasicTrafficIdTo = 0; edingTrafficPair.PermitIdTo = basic2.ID; } } else { edingTrafficPair.To = -1000; edingTrafficPair.BasicTrafficIdTo = 0; } }
/// <summary> /// /// </summary> /// <param name="trafficList">یک لیست از ترددها که میخواهیم آنرا پردازش کنیم</param> public BasicTrafficController(List <BasicTraffic> trafficList, IList <Permit> permitList, bool checkEnterExitOnRequest) { IList <Permit> localPermitList = permitList.Where(x => x.Pairs.Where(y => !y.IsApplyedOnTraffic && y.PreCardID == 8832).Count() > 0) .OrderBy(x => x.FromDate).ToList(); if (trafficList != null) { IList <BasicTraffic> localTrafficList = trafficList.Where(x => x.Active).OrderBy(x => x.Date).ThenBy(x => x.Time).ToList(); for (int i = 0; i < localTrafficList.Count(); i++) { if (localTrafficList[i].Used == false) { for (int j = i; j < localTrafficList.Count; j++) { trafficProxyList.Add(new TrafficProxy(localTrafficList[j])); } break; } } } if (localPermitList != null) { foreach (Permit permit in localPermitList) { foreach (PermitPair permitPair in permit.Pairs) { ///در حالتی که ورود و خروج در یک درخواست باشند جهت کار با آیدی یکسان در ترافیک مپر مجبوریم ورود خروج لحاظ کنیم if (checkEnterExitOnRequest || (permitPair.From > 0 && permitPair.To > 0)) { if (permitPair.From != NotPaired && !permitPair.IsApplyedOnTraffic && trafficList.Where(x => x.Time == permitPair.From && x.Date == permit.FromDate && x.Active).Count() == 0) { TrafficProxy proxyFrom = new TrafficProxy(permit.FromDate, permitPair.From, Precards.Enter, permitPair); trafficProxyList.Add(proxyFrom); } if (permitPair.To != NotPaired && !permitPair.IsApplyedOnTraffic && trafficList.Where(x => x.Time == permitPair.To && x.Date == permit.FromDate && x.Active).Count() == 0) { TrafficProxy proxyTo = new TrafficProxy(permit.FromDate, permitPair.To, Precards.Exit, permitPair); trafficProxyList.Add(proxyTo); } } else { if (permitPair.From != NotPaired && !permitPair.IsApplyedOnTraffic && trafficList.Where(x => x.Active && x.Time == permitPair.From && x.Date == permit.FromDate).Count() == 0) { TrafficProxy proxyFrom = new TrafficProxy(permit.FromDate, permitPair.From, Precards.Usual, permitPair); trafficProxyList.Add(proxyFrom); } if (permitPair.To != NotPaired && !permitPair.IsApplyedOnTraffic && trafficList.Where(x => x.Active && x.Time == permitPair.To && x.Date == permit.FromDate).Count() == 0) { TrafficProxy proxyTo = new TrafficProxy(permit.FromDate, permitPair.To, Precards.Usual, permitPair); trafficProxyList.Add(proxyTo); } } } } } /*if (trafficList != null) * { * basicTrafficList = trafficList.Where(x => x.Active).ToList(); * for (int i = 0; i < basicTrafficList.Count; i++) * { * if (basicTrafficList[i].Used == false) * { * curentIndex = i; * break; * } * } * } * else * { * basicTrafficList = new List<BasicTraffic>(); * }*/ if (trafficProxyList != null) { trafficProxyList = trafficProxyList.OrderBy(x => x.Date).ThenBy(x => x.Time).ToList(); curentIndex = 0; } }