Exemplo n.º 1
0
        /// <summary>
        /// وظیفه این تابع کم کردن مقدار ورودی از اولین زوج مرتب های "مفهوم زوج مرتبی" می باشد
        /// </summary>
        /// <returns>مقادیری که حذف شده اند</returns>
        /// <param name="value"></param>
        public virtual IList <IPair> DecreasePairFromFirst(int value)
        {
            IList <IPair> pairList = new List <IPair>();

            if (value <= 0)
            {
                return(pairList);
            }
            foreach (IPair pair in this.Pairs.OrderBy(p => p.From))
            {
                if (pair.Value <= value)
                {
                    //مقداری که باید کم شود بزرگتر از اندازه زوج مرتب است بنابراین
                    //کل زوج مرتب را حذف می کنیم
                    pairList.Add(pair);
                    value -= pair.Value;
                    this.RemovePair(pair);
                }
                else
                {
                    //مقداری که باید کم شود کوچکتر از اندازه زوج مرتب است بنابراین
                    //از مقدار "تا" زوج مرتب کم کرده و به عملیات خاتمه می دهیم
                    IPair p = new PairableScndCnpValuePair(pair.To - value, pair.To);
                    pairList.Add(p);
                    pair.To -= value;
                    break;
                }
            }
            this.Value = this.PairValues;
            return(pairList);
        }
Exemplo n.º 2
0
        /// <summary>
        /// انتساب مقدار ارسالی به زوجهای مرتب
        /// </summary>
        /// <param name="Source"></param>
        public virtual void AssignValue(int value)
        {
            int from = 0;

            if (this.PairCount > 0)
            {
                from = this.Pairs.OrderBy(x => x.To).Last().To;
            }

            PairableScndCnpValuePair pair = new PairableScndCnpValuePair(from, from + value, this);

            this.ClearPairs();
            this.Pairs.Add(pair);
            this.Value = this.PairValues;
        }
Exemplo n.º 3
0
        /// <summary>
        /// اضافه کردن مقدار ارسالی از اولین زوجهای مرتب
        /// </summary>
        /// <param name="value"></param>
        /// <param name="from">ابتدای بازه شروع</param>
        public virtual void IncreaseValue(int value, int from)
        {
            int to = 17 * 60;//انتهای فرضی 5 بعد از ظهر

            if (this.PairCount > 0)
            {
                to = this.Pairs.OrderBy(x => x.From).Last().To;
            }
            else if (this.Person.GetShiftByDate(this.CalculationDate).Value > 0)
            {
                to = this.Person.GetShiftByDate(this.CalculationDate).PastedPairs.To;
            }

            PairableScndCnpValuePair pair = new PairableScndCnpValuePair(to, to + value, this);

            this.Pairs.Add(pair);
            this.Value = this.PairValues;
        }
Exemplo n.º 4
0
        /// <summary>
        /// وظیفه این تابع کم کردن مقدار ورودی از آخرین زوج مرتب های "مفهوم زوج مرتبی" می باشد
        /// </summary>
        /// <returns>مقادیری که حذف شده اند</returns>
        /// <param name="value"></param>
        public virtual PairableScndCnpValue DecreasePairFromLast(int value)
        {
            PairableScndCnpValue pairList = new PairableScndCnpValue();

            if (value <= 0)
            {
                return(pairList);
            }
            foreach (IPair pair in this.Pairs.OrderByDescending(p => p.From))
            {
                if (pair.Value <= value)
                {
                    //مقداری که باید کم شود بزرگتر از اندازه زوج مرتب است بنابراین
                    //کل زوج مرتب را حذف می کنیم
                    value -= pair.Value;
                    pairList.Pairs.Add(pair);
                    this.RemovePair(pair);
                }
                else
                {
                    //مقداری که باید کم شود کوچکتر از اندازه زوج مرتب است بنابراین
                    //از مقدار "تا" زوج مرتب کم کرده و به عملیات خاتمه می دهیم
                    IPair p = new PairableScndCnpValuePair(pair.To - value, pair.To);
                    pairList.Pairs.Add(p);
                    pair.To -= value;
                    value    = 0;
                    break;
                }
            }
            this.Value = this.PairValues;
            if (value > 0) //اضافه کار میتواند منفی شود.فلوچار قانون 92
            {
                this.Value = -1 * value;
            }
            return(pairList);
        }