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