예제 #1
0
        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;
        }
예제 #2
0
        /// <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();
        }