/// <summary> /// This method creates a new reservation record for the customer, created by the CreateCustomer method. /// </summary> /// <param name="customer"></param> /// <returns></returns> private static FleetRental CreateReservation(FleetCustomer customer) { Random rnd = new Random(); DataServiceCollection <FleetRental> reservations = new DataServiceCollection <FleetRental>(context); FleetRental reservation = new FleetRental(); reservations.Add(reservation); //Create a new Reservation object with the details for new customer. reservation.CustomerFirstName = customer.FirstName; reservation.CustomerLastName = customer.LastName; reservation.CustomerDriverLicense = customer.DriverLicense; reservation.State = 0; //Limitation of OData, no client-side Enum support reservation.RentalId = "OData_" + rnd.Next(500).ToString(); reservation.Comments = "New customer"; reservation.VehicleId = "Adatum_Four_2"; reservation.VehicleVIN = "WAUXL58E15A104563"; reservation.EndDate = DateTime.Today.AddDays(5); reservation.StartDate = DateTime.Today; Microsoft.OData.Client.DataServiceResponse response = null; try { response = context.SaveChanges(SaveChangesOptions.PostOnlySetProperties); } catch (DataServiceRequestException e) { Console.WriteLine("Error occured while saving. Error Details: " + e.InnerException.Message); } //the following code retrieves the location header which represents the newly created entity Console.ForegroundColor = ConsoleColor.Cyan; foreach (ChangeOperationResponse r in response) { if (r.Headers.ContainsKey("Location")) { Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine("New reservation created: "); Console.WriteLine(r.Headers["Location"]); } } Console.ForegroundColor = ConsoleColor.White; return(reservation); }
static void Main(string[] args) { //the following BaseUri needs to be updated to your org string dynamicsBaseUri = "https://usnconeboxax1aos.cloud.onebox.dynamics.com/"; string ODataServiceEndpoint = dynamicsBaseUri + "data"; Uri dynODataURI = new Uri(ODataServiceEndpoint, UriKind.Absolute); //Creates a DataServiceContext class which encapsulates operations that are supported by the OData endpoint context = new Resources(dynODataURI); //Authenticate the user AuthenticationHelper.PerformAuthentication(context, dynamicsBaseUri); Console.WriteLine("-------------------------------------------------------------------"); Console.WriteLine("Query all the customers in Fleet Management. Enter to start ..."); Console.WriteLine("-------------------------------------------------------------------"); Console.ReadLine(); GetAllCustomers(); Console.WriteLine(); Console.WriteLine("-------------------------------------"); Console.WriteLine("Create a new customer. Enter to start"); Console.WriteLine("-------------------------------------"); Console.ReadLine(); FleetCustomer newCustomer = CreateCustomer(); Console.WriteLine(); Console.WriteLine("--------------------------------------------------------------------"); Console.WriteLine("Create a new reservation for the customer. Enter to start ..."); Console.WriteLine("--------------------------------------------------------------------"); Console.ReadLine(); FleetRental newRental = CreateReservation(newCustomer); Console.WriteLine(); Console.WriteLine("--------------------------------------------------------------------"); Console.WriteLine("Call action on the reservation ..."); Console.WriteLine("--------------------------------------------------------------------"); Console.ReadLine(); UriBuilder buildUri = new UriBuilder(ODataServiceEndpoint); buildUri.Path = String.Format("data/FleetRentals('{0}')/Microsoft.Dynamics.DataEntities.ReturnRental", newRental.RentalId); //following code invokes the action by sending an HTTPPost request for the buildUri var returnValue = context.Execute <string>(new Uri(buildUri.ToString()), "POST", true); Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine("Invoked ReturnRental action, response is: \n" + returnValue.Single()); Console.ForegroundColor = ConsoleColor.White; Console.BackgroundColor = ConsoleColor.Black; Console.WriteLine(); Console.WriteLine("***************************************************"); Console.WriteLine("* *"); Console.WriteLine("You have successfully completed, \t\t\n 1. Creating a new customer \t\t\t\n 2. Creating a new reservation for that customer. \n " + "Please refer back to Hands on Lab documentation to continue \n Press Enter to close this application \t"); Console.WriteLine("* *"); Console.WriteLine("***************************************************"); Console.ReadLine(); }