public virtual ViewResult Index()
        {
            var viewModel = new PathFinderIndexViewModel
            {
                //FaaliatSelectListItems = _faaliatBLL.GetAllFaaliat(), //_pathFinderService.GetFaaliatSelectListItems(),
                ProviceSelectListItems = _placeTreeBLL.GetProvinceSelectListItems()
            };

            return(View(viewModel));
        }
Exemple #2
0
 public IEnumerable <PathGrid> GetListOfPathGrid(PathFinderIndexViewModel viewModel, List <PointCluster> pointClusters)
 {
     return(pointClusters.Select((p, index) =>
                                 new PathGrid
     {
         RowNumber = ++index,
         PathName = $"مسیر شماره - {index}",
         IdPlaceTree = p.IdPlaceTree,
         TemporaryId = Guid.NewGuid(),
         Checked = false,
         ToziZamaniPishfarz = viewModel.DefaultTimeDistribution,
         BazeZamaniTour = viewModel.TourTimeSpan,
         PointClusterCoordinates = p.PointClusterCoordinates,
         PointsPerCluster = p.PointClusterCoordinates.Count,
         GradeAvaliyeBazar = p.PointClusterCoordinates.Average(a => a.PotansielAvalie),
         Enheraf = viewModel.PointsOnPath - p.PointClusterCoordinates.Count,
         OriginDestinationDistance = Math.Round((KdTreeHelper.GetDistanceCoordinate(p.PointClusterCoordinates.First(), p.PointClusterCoordinates.Last()) / 1000), 2)    //convert to kilometer
     }));
 }
        public virtual JsonResult GetCoordinates(PathFinderIndexViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(Json(new { status = "FormIsNotValid" }));
            }

            var coordinates = _pathFinderService.GetCoordinatesByFaaliatGroup(viewModel.FaaliatGroupSelect, viewModel.CitySelect.Value);

            if (!coordinates.Any())
            {
                return(Json(new { status = "NoCoordinateFound" }));
            }

            var pointClusters = new KDTree <double, Coordinate>(2, coordinates.ToArrayOfDoubles(), coordinates, KdTreeHelper.L2Norm_Squared_Double)
                                .NearestNeighborClusterRadial(Radius.SuperSlowButAccurate, viewModel.PointsOnPath.Value, coordinates)
                                .ToPointClosters();

            var pathGrid = _pathFinderService.GetListOfPathGrid(viewModel, pointClusters);

            return(Json(new { pointClusters, pathGrid }));
        }