예제 #1
0
        static async Task Run(Parser.PassRzdRuClient client)
        {
            try
            {
                var loginResult = await client.CreateSession("your_login_here", "your_password_here");

                var request = new Layer5827.Request("2000000", "2030000", DateTime.Now.AddDays(14));

                var trains = await client.GetTrainsAsync(loginResult, request);

                var train = trains.Tp[0]?.List[0];

                var cars = await client.GetCarsAsync(loginResult, new Layer5764.Request(0, request.From, request.To, request.DepartDate.ToString("dd.MM.yyyy"), train.Number, train.BEntire));

                var car = cars.Lst[0]?.Cars[0];

                var docs = await client.GetDocumentTypesAsync(); // "ru" / "en"

                var policy = await client.MedicalPolicyCostAsync(loginResult, new Layer5887.Request {
                    BirthDate = "31.07.1985", StationCode = trains.Tp[0].WhereCode, ForwardDepartureDate = train.Date0, ForwardArrivalDate = train.Date1, BackwardDepartureDate = request.DepartDate.AddDays(5).ToString("dd.MM.yyyy"), BackwardArrivalDate = request.DepartDate.AddDays(5).ToString("dd.MM.yyyy")
                });

                var reserve = await client.ReserveTicketAsync(loginResult, GetReserveRequest(request, train, car, policy.Response));

                var cancel = await client.CancelReserveAsync(loginResult, new Layer5769.Request {
                    OrderId = reserve.SaleOrderId
                });
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
예제 #2
0
 /// <summary>
 /// Trains list
 /// </summary>
 /// <param name="session">Authentication session</param>
 /// <param name="request">Trains list request</param>
 /// <returns>Trains list</returns>
 public Task <Layer5827> GetTrainsAsync(Session session, Layer5827.Request request)
 => PostRidDictionary <Layer5827>("https://pass.rzd.ru/timetable/public/ru?layer_id=5827", session, _config.Polling.TrainList, request.ToDictionary());
예제 #3
0
        private static Layer5705.Request GetReserveRequest(Layer5827.Request request, Layer5827.TpItem.TpTrain train, Layer5764.LstItem.Car car, Layer5887.MedicalPolicy policy)
        {
            if (request == null || train == null || car == null)
            {
                throw new ArgumentNullException();
            }

            return(new Layer5705.Request
            {
                Orders = new Layer5705.RequestOrder[]
                {
                    new Layer5705.RequestOrder
                    {
                        Range0 = 1,
                        Range1 = 30,
                        PlBedding = true,
                        PlUpdown = "01",
                        Dir = 1,
                        Code0 = int.Parse(request.From),
                        Code1 = int.Parse(request.To),
                        Route0 = train.Route0,
                        Route1 = train.Route1,
                        Number = train.Number,
                        Number2 = train.Number2,
                        Brand = train.Brand,
                        Letter = Char.IsLetter(train.Number2.Last()) ? train.Number2.Last().ToString() : "",
                        Ctype = car.CType,
                        Cnumber = car.CNumber,
                        ClsType = car.ClsType,
                        ElReg = car.ElReg,
                        Ferry = false,
                        SeatType = null,
                        TicketPriceInPoints = 0,
                        TrainType = "",
                        ConferenceRoomFlag = false,
                        CarrierGroupId = 1,
                        Datetime0 = $"{train.Date0} {train.Time0}",
                        Teema = 0,
                        CarVipFlag = 0
                    }
                },
                Passengers = new Layer5705.RequestPassenger[]
                {
                    new Layer5705.RequestPassenger
                    {
                        Id = 0,
                        FirstName = "Иван",
                        MidName = "Иванович",
                        LastName = "Иванов",
                        Birthdate = new DateTime(1985, 7, 31).ToString("dd.MM.yyyy"),
                        Gender = Layer5705.Gender.MALE,
                        DocType = Layer5705.DocumentTypes.PN,
                        DocNumber = "1511151115",
                        Country = 114,  // RU
                        Tariff = "Adult",
                        Insurance = 10, // Росгосстрах
                        PolicyDate = policy.FinishDate
                    }
                }
            });
        }