Ejemplo n.º 1
0
        /// <summary>
        /// Проверяет корректность введенных параметров.
        /// </summary>
        /// <param name="parameters">Параметры для построения диаграммы, которые нужно проверить на правильность.</param>
        /// <returns></returns>
        bool CheckParametersValid(ParametersContainer parameters)
        {
            if (parameters == null)
            {
                return(false);
            }

            if (!parameters.HasTimeLimit && !parameters.HasClientLimit)
            {
                CallbackUi.ShowError("Моделирование процесса СМО", "Система не имеет ограничений ни по времени, ни по заявкам.");
                return(false);
            }

            if (parameters.ChannelCount == 0)
            {
                CallbackUi.ShowWarning("Моделирование процесса СМО", "Система не имеет мест обслуживания.\nСледовательно, все заявки будут отклонены.");
            }

            if (parameters.ChannelCount < 0 || parameters.QueueCapacity < 0)
            {
                CallbackUi.ShowError("Эта ошибка никогда не вылезет", "Надо было юзать uint");
                return(false);
            }

            return(true);
        }
Ejemplo n.º 2
0
        public static void CompareParameters(ParametersContainer parametersContainer, params Param[] parameters)
        {
            var list = parametersContainer.GetParametersList();

            Assert.Equal(list.Count, parameters.Length);

            for (var i = 0; i < parameters.Length; i++)
            {
                object expected = parameters[i].Value;

                if (expected.GetType().IsArray)
                {
                    var expectedList = ReflectionUtils.CreateListInstance(expected.GetType().GetElementType());
                    foreach (var item in (Array)expected)
                    {
                        expectedList.Add(item);
                    }
                    expected = expectedList;
                }

                var actual = list[i].Item1;
                Assert.Equal(expected, actual);
                Assert.Equal(parameters[i].Type, list[i].Item2);
            }
        }
Ejemplo n.º 3
0
        public JsonResult GetDistrictENodebsStat(ParametersContainer container, string cityName)
        {
            if (container.TownENodebStats == null)
            {
                container.ImportTownENodebStats(_townRepository, _eNodebRepository, _regionRepository);
            }

            return(Json(container.GetENodebsByDistrict(cityName).Select(
                            x => new { D = x.Key, N = x.Value }), JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 4
0
        public ActionResult CollegeCoverage(int id)
        {
            CollegeInfo info = _repository.Get(id);

            if (info == null)
            {
                return(View(new InfrastructureCoverageViewModel(id)));
            }

            ParametersContainer.UpdateCollegeInfos(this, info);
            FileRecordsRepository.UpdateCoverageInfos(ParametersContainer.QueryENodebs, 0.03);
            return(View(new InfrastructureCoverageViewModel(id, info.Name)));
        }
Ejemplo n.º 5
0
        public object BindModel(ControllerContext controllerContext,
                                ModelBindingContext bindingContext)
        {
            ParametersContainer container
                = (ParametersContainer)controllerContext.HttpContext.Session[sessionKey];

            if (container == null)
            {
                container = new ParametersContainer();
                controllerContext.HttpContext.Session[sessionKey] = container;
            }
            // return the cart
            return(container);
        }
Ejemplo n.º 6
0
        public ProcessModeller(ParametersContainer parameters)
        {
            Parameters       = parameters;
            channelIdleTimes = new double[Parameters.ChannelCount];
            queueIdleTimes   = new double[parameters.QueueCapacity];

            for (int i = 0; i < Parameters.ChannelCount; i++)
            {
                channelIdleTimes[i] = -1;
            }

            for (int i = 0; i < Parameters.QueueCapacity; i++)
            {
                queueIdleTimes[i] = -1;
            }
        }
Ejemplo n.º 7
0
        public void TestList()
        {
            ParametersContainer          container  = new ParametersContainer();
            ViewResult                   viewResult = controller.List(container);
            IEnumerable <TownENodebStat> stats      = viewResult.Model as IEnumerable <TownENodebStat>;

            Assert.IsNotNull(stats);
            Assert.AreEqual(stats.Count(), 7);
            Assert.AreEqual(container.TownENodebStats.Count(), 7);
            Assert.AreEqual(container.TownENodebStats.ElementAt(0).TotalENodebs, 2);
            Assert.AreEqual(container.TownENodebStats.ElementAt(1).TotalENodebs, 1);
            Assert.AreEqual(container.TownENodebStats.ElementAt(2).TotalENodebs, 1);
            Assert.AreEqual(container.TownENodebStats.ElementAt(3).TotalENodebs, 0);
            Assert.AreEqual(container.TownENodebStats.ElementAt(4).TotalENodebs, 2);
            Assert.AreEqual(container.TownENodebStats.ElementAt(5).TotalENodebs, 1);
            Assert.AreEqual(container.TownENodebStats.ElementAt(6).TotalENodebs, 2);
        }
Ejemplo n.º 8
0
        public ActionResult CollegeCells(int id)
        {
            CollegeInfo info = _repository.Get(id);

            if (info == null)
            {
                return(View(new InfrastructureInfoViewModel(id)));
            }

            ParametersContainer.UpdateCollegeInfos(this, info);

            return(View(new InfrastructureInfoViewModel(id, info.Name)
            {
                StartDate = DateTime.Today.AddDays(-7),
                EndDate = DateTime.Today
            }));
        }
Ejemplo n.º 9
0
        public ActionResult Login()
        {
            ParametersContainer args = RequestArgs <ParametersContainer>();

            if (args == null)
            {
                return(FailedResult("参数无效。"));
            }

            NormalResult <UserContext> result = _userContextManager.Login(args.GetValue("Account"), args.GetValue("Password"));

            if (result.Successful)
            {
                ShellUserContext userContext = Mapper.Map <ShellUserContext>(result.Data);
                userContext.User = UserManager.Instance.GetUser(userContext.UserId);
                SessionContainer.SetUserContext(HttpContext, userContext);

                return(DataResult(result.Data));
            }
            else
            {
                return(FailedResult(result.Message));
            }
        }
Ejemplo n.º 10
0
 public ViewResult List(ParametersContainer container)
 {
     container.ImportTownENodebStats(_townRepository, _eNodebRepository, _regionRepository);
     return(View(container.TownENodebStats));
 }
Ejemplo n.º 11
0
        /// <summary>
        /// Вызывает создание диаграммы по заданным значениям. Результатом является отображение диграммы на главной панели.
        /// </summary>
        /// <param name="parameters">Параметры диграммы, заданные пользователем</param>
        public void MakeDiagram()
        {
            ParametersContainer parameters = CallbackUi.GetDiagramParameters();

            if (!CheckParametersValid(parameters))
            {
                return;
            }

            TimeDiagram timeDiagram;

            bool useGraphics = true;

            var timeToCl = (int)parameters.TimeLimit * parameters.ThreadIntencity;

            int min;

            if (!parameters.HasTimeLimit)
            {
                min = parameters.ClientLimit;
            }
            else if (!parameters.HasClientLimit)
            {
                min = timeToCl;
            }
            else
            {
                min = Math.Min(timeToCl, parameters.ClientLimit);
            }

            if (min > 200)
            {
                useGraphics = CallbackUi.YesNoDialog("Предупреждение", string.Format(@"Временная диаграмма будет содержать около {0} линий.
Ее отрисовка может вызвать замедление работы компьютера.
Отрисовать диаграмму?
(анализ диаграммы возможен при любом выборе)", min));
            }

            ProcessModeller modeller = new ProcessModeller(parameters);

            InteractiveDiagram intDiag = null;

            try
            {
                timeDiagram = useGraphics ? modeller.CreateDiagram(GraphicsFactory, out intDiag) : modeller.CreateDiagram();
            }
            catch
            {
                CallbackUi.ShowError("Создать диаграмму", "При моделировании процесса возникло исключение." /* + ex.StackTrace*/);
                return;
            }

            CallbackUi.InteractiveDiagram = intDiag;

            analyzeText = MakeReport(parameters, timeDiagram);

            if (intDiag != null)
            {
                CallbackUi.HideText();
                intDiag.ViewUpdated += CallbackUi.InvalidateDiagramView;
                intDiag.GoToEnd();
            }
            else
            {
                CallbackUi.ShowText("Отображение диграммы отключено.\nДля ее анализа, используйте Действия - Анализ диаграммы.");
            }
        }
Ejemplo n.º 12
0
 static string MakeReport(ParametersContainer diagramParameters, TimeDiagram timeDiagram)
 {
     return(diagramParameters.ToString() + "\r\n" + ReportTool.MakeReport(timeDiagram, clientMetrics, GetMetrics(timeDiagram.ChannelCount, timeDiagram.QueueCapacity)));
 }