/// <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;
            }
        }
Ejemplo n.º 2
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;
            }
        }