public void Load(ORM.ProjectInfoView project) { if (_dc != null) { _dc.Dispose(); } ; _dc = new FPMDataContext(); Stages.Clear(); var mainStage = new ProjectStageTile() { ID = -1, Name = "Основные данные", SortIndex = 0, IsPublic = true, RowState = 0, }; Stages.Add(mainStage); FocusedStage = mainStage; _project = project; _originalProject = project.ToProject(); if (_project.ID > 0) { var stages = _dc.ProjectStage .Where(x => x.RowState == Convert.ToInt16(ERowState.Active) && x.ProjectID == _project.ID && (x.IsPublic || (UserSettings.ProfileRole == ERole.Administrator) || x.ResponsibleRole == Convert.ToInt16(UserSettings.ProfileRole))) .OrderBy(x => x.SortIndex); foreach (var stage in stages) { Stages.Add(new ProjectStageTile(stage)); } ; } else { Stages.Add(new ProjectStageTile(EStageTemplate.Sketch, 1)); Stages.Add(new ProjectStageTile(EStageTemplate.Contract, 2)); Stages.Add(new ProjectStageTile(EStageTemplate.Payment, 3)); Stages.Add(new ProjectStageTile(EStageTemplate.Shipment, 4)); }; Stages.Where(x => x.Project == null).ToList().ForEach(x => x.Project = _originalProject); OnStageChanged(); isLoaded = true; }
/// <summary> /// Запуск программы на выполнение /// </summary> public void Exec() { Logger.WriteToTrace($"Запуск закачки \"{ID}\".", TraceMessageKind.Information); Logger.Indent(); try { Logger.WriteToTrace($"Общие параметры закачки: \n\t{string.Join(";\n\t", commonParams.Select(p => $"{p.Key}: {p.Value}"))}.", TraceMessageKind.Information); // Обход всех этапов закачки foreach (Stage stage in Stages.Where(s => s.Enabled)) { Logger.WriteToTrace($"Запуск этапа закачки \"{stage.Name}\"."); Logger.Indent(); curStage = stage; if (stage.Parameters.Count > 0) { Logger.WriteToTrace($"Параметры этапа \"{stage.Name}\": \n\t{string.Join(";\n\t", stage.Parameters.Select(p => $"{p.Key}: {p.Value}"))}.", TraceMessageKind.Information); } // Формирование набора доступных параметров для этапа UserParams = commonParams .Union(curStage.Parameters.Where(p => !commonParams.ContainsKey(p.Key))) .ToDictionary(p => p.Key, p => p.Value); curStage.Exec(); Logger.Unindent(); } Logger.WriteToTrace($"Результат выполнения этапов: \n\t{ string.Join("\n\t", Stages.Where(s => s.Enabled).Select(s => $"{s.Name}: {s.Status.GetDescription()}")) }", TraceMessageKind.Information); } catch (Exception ex) { Logger.WriteToTrace($"Ошибка при выполнении закачки: {ex}", TraceMessageKind.Error); } Logger.Unindent(); }