/// <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); }
/// <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; }
/// <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; }
/// <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); }