Beispiel #1
0
        public async Task <ActionResult <TripDTO> > Create(CreatingTripDTO dto)
        {
            try {
                PathDTO path = await this.pathService.GetById(new PathId (dto.pathID));

                var nodePassageList = new List <CreatingNodePassageDTO> ();

                int departTime = TimeUtils.fromTimeToSec(new Time(dto.tripDepartureTime));

                int passageTime = 0;

                for (int i = 0; i < path.segments.Count; i++)
                {
                    var segment = path.segments[i];
                    CreatingNodePassageDTO nodePassage;

                    if (i == 0)
                    {
                        nodePassage  = new CreatingNodePassageDTO(segment.firstNodeID.code, dto.tripDepartureTime);
                        passageTime += TimeUtils.fromTimeToSec(new Time(dto.tripDepartureTime));

                        nodePassageList.Add(nodePassage);
                    }
                    else
                    {
                        var previousSegment = path.segments[i - 1];

                        int nodePassageSec = passageTime + previousSegment.travelTimeBetweenNodes;

                        passageTime = nodePassageSec;

                        string nodePassageString = TimeUtils.fromSecToString(nodePassageSec);

                        nodePassage = new CreatingNodePassageDTO(segment.firstNodeID.code, nodePassageString);

                        nodePassageList.Add(nodePassage);

                        if (i == path.segments.Count - 1)
                        {
                            nodePassageSec    = passageTime + segment.travelTimeBetweenNodes;
                            nodePassageString = TimeUtils.fromSecToString(nodePassageSec);
                            CreatingNodePassageDTO lastNodePassage = new CreatingNodePassageDTO(segment.secondNodeID.code, nodePassageString);

                            nodePassageList.Add(lastNodePassage);
                        }
                    }
                }

                var trip = await tripService.AddTrip(dto, nodePassageList);

                var a = CreatedAtAction(
                    nameof(GetById),
                    new { id = trip.Id },
                    trip
                    );
                return(a);
            } catch (BusinessRuleValidationException ex) {
                return(BadRequest(new { Message = ex.Message }));
            }
        }
Beispiel #2
0
        private async Task <List <ImportedTripDTO> > ImportTrips(XmlDocument doc)
        {
            var importedTripsList = new List <ImportedTripDTO>();

            XmlNodeList trips = doc.GetElementsByTagName("Trip");

            foreach (XmlNode trip in trips)
            {
                List <CreatingNodePassageDTO> nodePassages = new List <CreatingNodePassageDTO> ();

                string tripKey = trip.Attributes["key"].InnerText;

                string tripPath = trip.Attributes["Path"].InnerText;

                string tripLine;
                if (trip.Attributes["Line"] == null)
                {
                    tripLine = await this._lineService.GetLineOfPath(tripPath);
                }
                else
                {
                    tripLine = trip.Attributes["Line"].InnerText;
                }

                string      tripDepartureTime = null;
                XmlNodeList passingTimes      = trip.FirstChild.ChildNodes;

                for (int i = 0; i < passingTimes.Count; i++)
                {
                    XmlNode passingTime = passingTimes[i];

                    int    nodePassageTimeSec = Int32.Parse(passingTime.Attributes["Time"].InnerText);
                    string nodePassageNode    = passingTime.Attributes["Node"].InnerText;

                    string nodePassageTime = TimeUtils.fromSecToString(nodePassageTimeSec);

                    if (i == 0)
                    {
                        tripDepartureTime = nodePassageTime;
                    }

                    CreatingNodePassageDTO nodePassageDTO = new CreatingNodePassageDTO(nodePassageNode, nodePassageTime);
                    nodePassages.Add(nodePassageDTO);
                }

                CreatingTripDTO creatingTrip = new CreatingTripDTO(tripLine, tripPath, tripDepartureTime);
                var             tripDTO      = await _tripService.AddTrip(creatingTrip, nodePassages);

                ImportedTripDTO importedTrip = new ImportedTripDTO(tripKey, tripDTO.Id, tripDTO.lineID, tripDTO.pathID, tripDTO.tripDepartureTime, tripDTO.nodePassageListDTO);
                importedTripsList.Add(importedTrip);
            }
            return(importedTripsList);
        }