public async Task <Dictionary <CoachType, IEnumerable <int> > > GetAvaliablePlaces(CoachType coachType = CoachType.Any) { var trainSet = await _dataContext.GetTrains(); var coachSets = new List <UZCoachSet>(); foreach (var train in trainSet.Trains) { var coachSetsPart = await _dataContext.GetCoaches(train, coachType); coachSets.AddRange(coachSetsPart); } foreach (var coachSet in coachSets) { var placesSetPart = await _dataContext.GetPlaces(coachSet); _placesSets.AddRange(placesSetPart); } var placesPerCoach = _placesSets.GroupBy(set => set.OwnerRequest.CoachTypeId) .ToDictionary(gset => UZCoachTypeMapper.GetCoachType(gset.Key), gset => gset .SelectMany(set => set.Places.AvaliablePlaceNumbers.Values .SelectMany(placeArray => placeArray)) .Distinct()); return(placesPerCoach); }
public async Task <List <UZCoachSet> > GetCoaches(UZTrain train, CoachType coachType) { var coaches = coachType != CoachType.Any ? train.AvaliableCoaches.Where(it => it.TypeLetter.Equals(UZCoachTypeMapper.GetCoachLetter(coachType))) : train.AvaliableCoaches; var coachSets = new List <UZCoachSet>(); foreach (var coach in coaches) { var requestConfig = _translator.GetCoachesRequest(train, coach); var coachesSet = await _gateway.GetCoaches(requestConfig); coachSets.Add(coachesSet); } return(coachSets); }
public UZCardRequest GetCardRequest(int placeNumber, UZPlacesSet placesSet) { return(new UZCardRequest { StationFromId = _ticket.StartingPointId, StationTillId = _ticket.DestinationPointId, TrainNumber = placesSet.OwnerRequest.TrainNumber, DepartureDate = DateTime.Parse(_ticket.DepartureDate).ToString("yyyy-MM-dd"), Charline = placesSet.Places.AvaliablePlaceNumbers.First().Key, CoachNumber = placesSet.OwnerRequest.CoachNumber, CoachClass = placesSet.OwnerRequest.CoachClass, CoachType = UZCoachTypeMapper.GetCoachLetter(placesSet.OwnerRequest.CoachTypeId), FirstName = _ticket.FirstName, LastName = _ticket.LastName, IsTransp = "0", IsBedding = "1", PlaceNumber = placeNumber }); }