/// <summary>
        /// Добавить этап после этапа с заданным порядковым номером
        /// </summary>
        /// <param name="stage">Этап</param>
        /// <param name="position">Порядковый номер этапа, после которого осуществляется вставка</param>
        public virtual void AddStage(ProductionOrderBatchLifeCycleTemplateStage stage, short position)
        {
            if (position < 1 || position > StageCount - 2)
            {
                throw new Exception("Невозможно вставить этап на заданную позицию.");
            }

            RecalculateOrdinalNumbers();

            var stageList = new List <ProductionOrderBatchLifeCycleTemplateStage>(Stages.OrderBy(x => x.OrdinalNumber));

            foreach (var productionOrderBatchLifeCycleTemplateStage in stageList)
            {
                if (productionOrderBatchLifeCycleTemplateStage.OrdinalNumber > position)
                {
                    productionOrderBatchLifeCycleTemplateStage.OrdinalNumber++;
                }
            }

            stages.Add(stage);
            stage.Template      = this;
            stage.OrdinalNumber = (short)(position + 1);

            CheckStageOrder();
        }
        /// <summary>
        /// Перерасчет порядковых номеров этапов
        /// </summary>
        private void RecalculateOrdinalNumbers()
        {
            var stageList = new List <ProductionOrderBatchLifeCycleTemplateStage>(Stages.OrderBy(x => x.OrdinalNumber));

            short number = 1;

            foreach (var stage in stageList)
            {
                stage.OrdinalNumber = number;
                number++;
            }
        }
Exemplo n.º 3
0
        public void NewStage()
        {
            var stage = new NewConversationStage();

            stage.associatedConvo = this;
            if (Stages.Count() > 0)
            {
                stage.txtId.Text = (this.Stages.Select(a => a.StageId).Max() + 10).ToString();
            }
            else
            {
                stage.txtId.Text = "10";
            }
            stage.ShowDialog();
            if (stage.DialogResult == true)
            {
                var res = new ConversationStage();
                res.StageId   = Convert.ToInt32(stage.txtId.Text);
                res.StageName = stage.txtFriendlyName.Text;
                Stages.Add(res);
                Stages        = new ObservableCollection <ConversationStage>(Stages.OrderBy(a => a.StageId));
                SelectedStage = res;
            }
        }