Beispiel #1
0
        public ActionResult Create(RequestTrip req)
        {
            int numOfNodes = 0;

            Trip trip = new Trip();

            trip.Name         = req.Name;
            trip.Duration     = Convert.ToInt32(req.Duration);
            trip.PhotoUrl     = req.PhotoUrl;
            trip.CreationDate = DateTime.Now;
            foreach (StringPoint[] route in req.Routes)
            {
                numOfNodes += route.Length;
            }
            trip.NumOfNodes = numOfNodes;

            if (ModelState.IsValid)
            {
                db.Trips.Add(trip);
                db.SaveChanges();

                Users_Trips ut     = new Users_Trips();
                string      userId = User.Identity.GetUserId();
                ut.AspNetUser = db.AspNetUsers.Where(u => u.Id == userId).FirstOrDefault();
                ut.Trip       = trip;
                ut.Author     = true;
                if (ModelState.IsValid)
                {
                    db.Users_Trips.Add(ut);
                    db.SaveChanges();
                }

                CreateRoutesAndNodes(req, trip);
            }

            return(Json(trip.TripId, JsonRequestBehavior.AllowGet));
        }
Beispiel #2
0
        //создает узлы маршоута разбивая их по дням
        private void CreateRoutesAndNodes(RequestTrip req, Trip trip)
        {
            int i = 0, j = 0;

            Node startNode = new Node();

            startNode.Lat     = double.Parse(req.StartPoint.Lat, CultureInfo.InvariantCulture);
            startNode.Lng     = double.Parse(req.StartPoint.Lng, CultureInfo.InvariantCulture);
            startNode.PlaceId = null;
            startNode.Address = req.StartPoint.Address;

            Node endNode = new Node();

            if (req.StartPoint == req.EndPoint)
            {
                endNode = startNode;
            }
            else
            {
                endNode.Lat     = double.Parse(req.EndPoint.Lat, CultureInfo.InvariantCulture);
                endNode.Lng     = double.Parse(req.EndPoint.Lng, CultureInfo.InvariantCulture);
                endNode.PlaceId = null;
                endNode.Address = req.EndPoint.Address;
            }


            if (ModelState.IsValid)
            {
                db.Nodes.Add(startNode);
                db.Nodes.Add(endNode);
                db.SaveChanges();
            }

            for (i = 0; i < req.Routes.Length; i++)
            {
                Route route = new Route();
                route.Trip   = trip;
                route.DayNum = i + 1;

                if (ModelState.IsValid)
                {
                    db.Routes.Add(route);
                    db.SaveChanges();

                    for (j = 0; j < req.Routes[i].Length; j++)
                    {
                        Node node = new Node();
                        //node.Lat = double.Parse(req.Routes[i][j].Lat, CultureInfo.InvariantCulture);
                        //node.Lng = double.Parse(req.Routes[i][j].Lng, CultureInfo.InvariantCulture);
                        node.Lat = GetDouble(req.Routes[i][j].Lat);
                        node.Lng = GetDouble(req.Routes[i][j].Lng);

                        node.PlaceId = req.Routes[i][j].PlaceId;
                        node.Address = null;

                        if (ModelState.IsValid)
                        {
                            db.Nodes.Add(node);
                            db.SaveChanges();

                            Routes_Nodes rn = new Routes_Nodes();
                            rn.Node     = node;
                            rn.Route    = route;
                            rn.IndexNum = j + 1;

                            db.Routes_Nodes.Add(rn);
                        }
                    }

                    Routes_Nodes rnStart = new Routes_Nodes();
                    rnStart.Node     = startNode;
                    rnStart.Route    = route;
                    rnStart.IndexNum = 0;

                    db.Routes_Nodes.Add(rnStart);

                    Routes_Nodes rnEnd = new Routes_Nodes();
                    rnEnd.Node     = endNode;
                    rnEnd.Route    = route;
                    rnEnd.IndexNum = req.Routes[i].Length + 1;

                    db.Routes_Nodes.Add(rnEnd);
                    db.SaveChanges();
                }
            }
        }