Click or drag to resize
Introduction

Documentation for https://fram-ws-v3-test.bussgods.se/Service1.svc.

Example
using System;
using System.Collections.Generic;
using System.Linq;
using Bussgods.WcfService.Example.BussgodsReference;

namespace Bussgods.WcfService.Example
{
    class Program
    {
        public static byte COUNTY_CODE = 53;
        public static string USERNAME = "user@domain.xyx";
        public static string PASSWORD = "password";
        public static string URL = "http://web-test.bussgods.se/internetfraktsedel/Copy/{0}";

        public static Service1Client _bussgods = new Service1Client();

        static void Main(string[] args)
        {
            if (args.Contains("bussgodsnumbers"))
                BussgodsSeries();

            if (args.Contains("ownnumbers"))
                OwnSeries();

            if (args.Contains("getprice"))
                GetPrice();

            Console.WriteLine("Press Any Key...");
            Console.ReadKey();
        }

        /// <summary>
        /// Shipment/Parcel numbers from Bussgods.
        /// </summary>
        static void BussgodsSeries()
        {
            // Ping
            Console.WriteLine("Ping?: {0}", _bussgods.Ping());
            Console.WriteLine("");

            // Login
            var user = _bussgods.Login(USERNAME, PASSWORD);

            if (user != null)
            {
                // AuthTicket
                var authTicket = new AuthTicket
                {
                    CountyCode = COUNTY_CODE,
                    Token = user.Token,
                    Username = USERNAME
                };

                // Cities
                var cities = _bussgods.GetCities(authTicket);

                var fromCity = cities.FirstOrDefault(c => c.Name == "GÄVLE");
                var toCity = cities.FirstOrDefault(c => c.Name == "TROSA");
                //var toCity = cities.FirstOrDefault(c => c.Name == "Finland"); /* For Finland */

                Console.WriteLine("From City: {0} ({1})", fromCity.Name, fromCity.CityCode);
                Console.WriteLine("To City: {0} ({1})", toCity.Name, toCity.CityCode);
                Console.WriteLine("");

                // Stations
                var fromStation = _bussgods.GetClosestPublicStation(authTicket, 80434);
                var toStation = _bussgods.GetClosestPublicStation(authTicket, 61935);
                //var toStation = _bussgods.GetStation(authTicket, 5301); /* For Finland */

                Console.WriteLine("From Station: {0} ({1} / City: {2} ({3})", fromStation.Name, fromStation.StationNumber, fromStation.CityName, fromStation.CityCode);
                Console.WriteLine("To Station: {0} ({1}) / City: {2} ({3})", toStation.Name, toStation.StationNumber, toStation.CityName, toStation.CityCode);
                Console.WriteLine("");

                // InternetWaybill
                var internetWaybill = new InternetWaybillModel
                {
                    //AccountNumber = "8412041234",
                    //AccountType = "KTO",
                    //Bankgiro = "1234567",
                    //ClearingNumber = "3300",
                    COD = false,
                    //CODReference = "Kalle",
                    CODSum = 0,
                    Contents = "Stones",
                    CustomerNumber = 1,
                    DateCreated = DateTime.Now,
                    Delivery = false,
                    DeliveryInstructions = "Leave the package on the stairs.",
                    FreeText = "Very nice stones.",
                    InsurancePriceID = null,
                    LastAltered = DateTime.Now,
                    NumberOfParcels = 1,
                    ParcelType = "Övrigt",
                    //Plusgiro = "12345678",
                    Product = 1,
                    ReceiverAddress = "Gatan 1",
                    ReceiverCity = "Ankeborg",
                    //ReceiverCustomerNumber = 9000,
                    ReceiverCityCode = toCity.CityCode,
                    ReceiverStationNumber = toStation.StationNumber,
                    ReceiverEmail = "musse@pigg.nu",
                    ReceiverName = "Musse Pigg",
                    ReceiverPhone = "012121212",
                    ReceiverReference = "Musse",
                    ReceiverZipCode = "54321",
                    SenderCityCode = fromCity.CityCode,
                    SenderStationNumber = fromStation.StationNumber,
                    SenderAddress = "Gatan 2",
                    SenderCity = "Ankeborg",
                    SenderEmail = "kalle@anka.nu",
                    SenderName = "Kalle Anka",
                    SenderPhone = "013131313",
                    SenderReference = "Kalle",
                    SenderZipCode = "12345",
                    ShipmentNumber = "1234567890",
                    TotalWeight = 1,
                    TotalVolume = 0.0024f,
                };

                // Parcels
                var parcels = new List<InternetWaybillParcelModel>();

                for (int packageNumber = 1; packageNumber <= internetWaybill.NumberOfParcels; packageNumber++)
                {
                    var internetWaybillParcel = new InternetWaybillParcelModel
                    {
                        PackageNumber = packageNumber,
                        ShipmentNumber = internetWaybill.ShipmentNumber
                    };

                    parcels.Add(internetWaybillParcel);
                }

                internetWaybill.InternetWaybillParcels = parcels.ToArray();

                // Result
                string shipmentNumber = _bussgods.SaveInternetWaybillWithParcelsWithoutOwnNumbers(authTicket, internetWaybill);

                if (!string.IsNullOrWhiteSpace(shipmentNumber))
                {
                    string url = string.Format(URL, shipmentNumber);

                    Console.WriteLine("ShipmentNumber: {0}, Url: {1}", shipmentNumber, url);
                    Console.WriteLine("");
                }
            }
        }

        /// <summary>
        /// Has its own Shipment/Parcel numbers.
        /// </summary>
        static void OwnSeries()
        {
            // Ping
            Console.WriteLine("Ping?: {0}", _bussgods.Ping());
            Console.WriteLine("");

            // Login
            var user = _bussgods.Login(USERNAME, PASSWORD);

            if (user != null)
            {
                // AuthTicket
                var authTicket = new AuthTicket
                {
                    CountyCode = COUNTY_CODE,
                    Token = user.Token,
                    Username = USERNAME
                };

                // Cities
                var cities = _bussgods.GetCities(authTicket);

                var fromCity = cities.FirstOrDefault(c => c.Name == "GÄVLE");
                var toCity = cities.FirstOrDefault(c => c.Name == "TROSA");
                //var toCity = cities.FirstOrDefault(c => c.Name == "Finland"); /* For Finland */

                Console.WriteLine("From City: {0} ({1})", fromCity.Name, fromCity.CityCode);
                Console.WriteLine("To City: {0} ({1})", toCity.Name, toCity.CityCode);
                Console.WriteLine("");

                // Stations
                var fromStation = _bussgods.GetClosestPublicStation(authTicket, 80434);
                var toStation = _bussgods.GetClosestPublicStation(authTicket, 61935);
                //var toStation = _bussgods.GetStation(authTicket, 5301); /* For Finland */

                Console.WriteLine("From Station: {0} ({1} / City: {2} ({3})", fromStation.Name, fromStation.StationNumber, fromStation.CityName, fromStation.CityCode);
                Console.WriteLine("To Station: {0} ({1}) / City: {2} ({3})", toStation.Name, toStation.StationNumber, toStation.CityName, toStation.CityCode);
                Console.WriteLine("");

                // InternetWaybill
                var internetWaybill = new InternetWaybillModel
                {
                    //AccountNumber = "8412041234",
                    //AccountType = "KTO",
                    //Bankgiro = "1234567",
                    //ClearingNumber = "3300",
                    COD = false,
                    //CODReference = "Kalle",
                    CODSum = 0,
                    Contents = "Stones",
                    CustomerNumber = 1,
                    DateCreated = DateTime.Now,
                    Delivery = false,
                    DeliveryInstructions = "Leave the package on the stairs.",
                    FreeText = "Very nice stones.",
                    InsurancePriceID = null,
                    LastAltered = DateTime.Now,
                    NumberOfParcels = 1,
                    ParcelType = "Övrigt",
                    //Plusgiro = "12345678",
                    Product = 1,
                    ReceiverAddress = "Gatan 1",
                    ReceiverCity = "Ankeborg",
                    //ReceiverCustomerNumber = 9000,
                    ReceiverCityCode = toCity.CityCode,
                    ReceiverStationNumber = toStation.StationNumber,
                    ReceiverEmail = "musse@pigg.nu",
                    ReceiverName = "Musse Pigg",
                    ReceiverPhone = "012121212",
                    ReceiverReference = "Musse",
                    ReceiverZipCode = "54321",
                    SenderCityCode = fromCity.CityCode,
                    SenderStationNumber = fromStation.StationNumber,
                    SenderAddress = "Gatan 2",
                    SenderCity = "Ankeborg",
                    SenderEmail = "kalle@anka.nu",
                    SenderName = "Kalle Anka",
                    SenderPhone = "013131313",
                    SenderReference = "Kalle",
                    SenderZipCode = "12345",
                    ShipmentNumber = "1234567890",
                    TotalWeight = 1,
                    TotalVolume = 0.0024f,
                };

                // Parcels
                var parcels = new List<InternetWaybillParcelModel>();

                for (int packageNumber = 1; packageNumber <= internetWaybill.NumberOfParcels; packageNumber++)
                {
                    var internetWaybillParcel = new InternetWaybillParcelModel
                    {
                        PackageNumber = packageNumber,
                    };

                    parcels.Add(internetWaybillParcel);
                }

                internetWaybill.InternetWaybillParcels = parcels.ToArray();

                // Result
                Console.WriteLine("Result: {0}", _bussgods.SaveInternetWaybillWithParcels(authTicket, internetWaybill));
                Console.WriteLine("");
            }
        }

        /// <summary>
        /// Calculates price for Shipment.
        /// </summary>
        static void GetPrice()
        {
            // Ping
            Console.WriteLine("Ping?: {0}", _bussgods.Ping());
            Console.WriteLine("");

            // Login
            var user = _bussgods.Login(USERNAME, PASSWORD);

            if (user != null)
            {
                // AuthTicket
                var authTicket = new AuthTicket
                {
                    CountyCode = COUNTY_CODE,
                    Token = user.Token,
                    Username = USERNAME
                };

                // Cities
                var cities = _bussgods.GetCities(authTicket);

                var fromCity = cities.FirstOrDefault(c => c.Name == "GÄVLE");
                var toCity = cities.FirstOrDefault(c => c.Name == "TROSA");
                //var toCity = cities.FirstOrDefault(c => c.Name == "Finland"); /* For Finland */

                Console.WriteLine("From City: {0} ({1})", fromCity.Name, fromCity.CityCode);
                Console.WriteLine("To City: {0} ({1})", toCity.Name, toCity.CityCode);
                Console.WriteLine("");

                // Stations
                var fromStation = _bussgods.GetClosestPublicStation(authTicket, 80434);
                var toStation = _bussgods.GetClosestPublicStation(authTicket, 61935);
                //var toStation = _bussgods.GetStation(authTicket, 5301); /* For Finland */

                Console.WriteLine("From Station: {0} ({1} / City: {2} ({3})", fromStation.Name, fromStation.StationNumber, fromStation.CityName, fromStation.CityCode);
                Console.WriteLine("To Station: {0} ({1}) / City: {2} ({3})", toStation.Name, toStation.StationNumber, toStation.CityName, toStation.CityCode);
                Console.WriteLine("");

                // Price Request
                var priceRequest = new PriceRequest
                {
                    COD = false,
                    CODSum = 0,
                    CustomerNumber = 1,
                    Delivery = false,
                    InsurancePriceID = null,
                    ParcelType = "Övrigt",
                    Product = 1,
                    ReceiverCityCode = toStation.CityCode,
                    SenderCityCode = fromStation.CityCode,
                    Weight = 10,
                    Volume = 0.10f
                };

                // Result
                var price = _bussgods.GetPrice(authTicket, priceRequest);

                Console.WriteLine("{0} -> {1} ({2} kg, {3} m³) @ {4:C} ({5:C} without VAT)", fromStation.CityName, toStation.CityName, priceRequest.Weight, priceRequest.Volume, price.TotalFeeWithVAT, price.TotalFee);
                Console.WriteLine("");
            }
        }
    }
}