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 })); } }
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); }