Ejemplo n.º 1
0
        void FindEqualsByData()
        {
            if (_list != null)
            {
                _list.Sort(new TimeRangeComparer());


                _HwgrToWorld first = null, second = null;

                for (int i = 0; i < _list.Count; i++)
                {
                    if (_list[i].IsDeleted)
                    {
                        continue;
                    }

                    if (first == null)
                    {
                        first = _list[i];
                        continue;
                    }
                    if (second == null)
                    {
                        second = _list[i];
                        if (first.IsEqualByData(second))
                        {
                            second.BeginTime = first.BeginTime;
                            first.Delete();
                        }

                        first  = second;
                        second = null;
                    }
                }
            }
        }
Ejemplo n.º 2
0
 public bool IsEqualByData(_HwgrToWorld a)
 {
     return(a.StoreID == StoreID &&
            a.WorldID == WorldID &&
            a.HwgrID == HwgrID);
 }
Ejemplo n.º 3
0
 public bool IsIncludeRange(_HwgrToWorld newitem)
 {
     return((BeginTime <= newitem.BeginTime) && (newitem.EndTime <= EndTime));
 }
Ejemplo n.º 4
0
 public bool IsIntersectRanges(_HwgrToWorld newitem)
 {
     return(!((EndTime < newitem.BeginTime) || (newitem.EndTime < BeginTime)));
 }
Ejemplo n.º 5
0
        public void Execute()
        {
            LoadEntities();

            if (_list.Count > 0)
            {
                _list.Sort(new TimeRangeComparer());
                _HwgrToWorld newItem     = new _HwgrToWorld(_entity);
                _HwgrToWorld currentItem = null;
                for (int i = 0; i < _list.Count; i++)
                {
                    currentItem = _list[i];
                    if (currentItem.IsIntersectRanges(newItem))
                    {
                        if (currentItem.IsIncludeRange(newItem))
                        {
                            _HwgrToWorld n = currentItem.CreateCopy();

                            currentItem.EndTime = newItem.BeginTime.AddDays(-1);
                            n.BeginTime         = newItem.EndTime.AddDays(1);

                            if (!currentItem.IsValid)
                            {
                                currentItem.Delete();
                            }

                            _list.Add(newItem);
                            if (n.IsValid)
                            {
                                _list.Add(n);
                            }

                            break;
                        }
                        else
                        {
                            currentItem.EndTime = newItem.BeginTime.AddDays(-1);

                            if (currentItem.IsValid)
                            {
                                currentItem.Delete();
                            }

                            for (int j = i + 1; j < _list.Count; j++)
                            {
                                currentItem = _list[j];
                                if (currentItem.IsIncludeDate(newItem.EndTime))
                                {
                                    currentItem.BeginTime = newItem.EndTime.AddDays(1);
                                    if (currentItem.IsValid)
                                    {
                                        currentItem.Delete();
                                    }
                                }
                                else
                                {
                                    currentItem.Delete();
                                }
                            }
                            _list.Add(newItem);
                            break;
                        }
                    }
                }

                FindEqualsByData();


                InsertOrUpdateOrDelete();
            }
        }