Esempio n. 1
0
        public List <PointViewModel> GetPoints()
        {
            List <Point>          points          = repository.GetItems();
            List <PointViewModel> pointViewModels = _mapper.Map <List <PointViewModel> >(points);

            return(pointViewModels);
        }
        public IActionResult Index()
        {
            DistanceRepository distanceRepository = new DistanceRepository();
            List <Distance>    distances          = distanceRepository.GetItems();

            PointRepository pointRepository = new PointRepository();
            List <Point>    points          = pointRepository.GetItems();

            List <JoinViewModel> joined = new List <JoinViewModel>();

            foreach (var distance in distances)
            {
                joined.Add(new JoinViewModel
                {
                    Id          = distance.Id,
                    FromPointId = distance.FromPointId,
                    NameFrom    = points.First(i => i.Id == distance.FromPointId).Name,
                    ToPointId   = distance.ToPointId,
                    NameTo      = points.First(i => i.Id == distance.ToPointId).Name,
                    Weight      = distance.Weight,
                    UserId      = distance.UserId
                });
            }

            return(View(joined));
        }
        private void CreateGraphs()
        {
            List <Map>      maps      = _mapRepository.GetItems();
            List <Distance> distances = repository.GetItems();
            List <Point>    points    = _pointRepository.GetItems();

            List <DistanceViewModel> distanceViewModels = _mapper.Map <List <DistanceViewModel> >(distances);
            List <PointViewModel>    pointViewModels    = _mapper.Map <List <PointViewModel> >(points);
            List <MapViewModel>      mapViewModels      = _mapper.Map <List <MapViewModel> >(maps);

            allIndexes = new Dictionary <int, Dictionary <int, int> >();
            graphs     = new Dictionary <int, double[, ]>();
            algorithms = new Dictionary <int, DijkstrasAlgorithm>();

            foreach (var map in mapViewModels)
            {
                List <PointViewModel> currentPoints = pointViewModels.Where(p => p.MapId == map.Id).ToList();
                if (currentPoints.Count == 0)
                {
                    return;
                }
                List <int>            pointsId = currentPoints.Select(p => p.Id).ToList();
                Dictionary <int, int> indexes  = new Dictionary <int, int>();

                for (int i = 0; i < pointsId.Count; ++i)
                {
                    indexes.Add(i, pointsId[i]);
                }

                allIndexes.Add(map.Id, indexes);

                int n = currentPoints.Count;

                double[,] graph = new double[n, n];

                foreach (DistanceViewModel distance in distanceViewModels)
                {
                    int i = indexes.FirstOrDefault(k => k.Value == distance.FromPointId).Key;
                    int j = indexes.FirstOrDefault(k => k.Value == distance.ToPointId).Key;

                    graph[i, j] = distance.Weight;
                    graph[j, i] = distance.Weight;
                }

                graphs.Add(map.Id, graph);

                algorithms.Add(map.Id, new DijkstrasAlgorithm(graph));
            }
        }
        public IActionResult Index()
        {
            FavouriteRepository favouriteRepository = new FavouriteRepository();
            List <Favourite>    favourites          = favouriteRepository.GetItems().Where(f => f.User_Id == _userManager.GetUserId(User)).ToList();

            PointRepository pointRepository = new PointRepository();
            List <Point>    points          = pointRepository.GetItems();

            List <JoinViewModel> joined = new List <JoinViewModel>();

            foreach (var el in favourites)
            {
                joined.Add(new JoinViewModel()
                {
                    Id       = el.Id,
                    NameFrom = points.First(p => p.Id == el.PointA_Id).Name,
                    NameTo   = points.First(p => p.Id == el.PointB_Id).Name
                });
            }

            return(View(joined));
        }