Advertisement
Guest User

Untitled

a guest
Jun 25th, 2015
301
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.24 KB | None | 0 0
  1. class BookReservation < ActiveRecord::Base
  2.   attr_reader :confirmation_number, :reservation_id
  3.  
  4.   validates :partner_code,
  5.             :restaurant_location_id,
  6.             :session_id,
  7.             :dining_date_and_time,
  8.             :size,
  9.             :first_name,
  10.             :last_name,
  11.             :email,
  12.             :guest_accepts_email_marketing,
  13.             :confirmation_number,
  14.             :reservation_id,
  15.             presence: :true
  16.  
  17.   before_create :send_reservation_request
  18.  
  19.   def client
  20.     Savon.client(wsdl: "http://example-wsdl-link", follow_redirects: :follow_redirects)
  21.   end
  22.  
  23.   def send_reservation_request
  24.     message = {'PartnerCode' => partner_code, 'RestaurantLocationId' => restaurant_location_id, 'SessionId' => session_id, 'DiningDateAndTime' => dining_date_and_time, 'Size' => size}
  25.     message.merge!('Booker' => {'UserWithoutALogin' => {'FirstName' => first_name, 'LastName' => last_name, 'EMail' => email, 'GuestAcceptsEmailMarketingFromPartner' => guest_accepts_email_marketing}})
  26.  
  27.     response = client.call(:book_reservation, message: message)
  28.     if response.success?
  29.       data = response.to_array(:book_reservation_response).first
  30.       if data
  31.         @confirmation_number = data[:confirmation_number]
  32.         @reservation_id = data[:reservation_id]
  33.       end
  34.     else
  35.       errors.add "Failed to do the stuff you wanted to do with SOAP request"
  36.     end
  37.   end
  38.  
  39. end
  40.  
  41. class BookReservationsController < ApplicationController
  42.  
  43.   before_filter :concatenate_date, only: :index
  44.  
  45.   def index
  46.     reservation = BookReservation.new(book_reservation_params)
  47.     if reservation.save
  48.       #put your logics here
  49.       render :nothing
  50.     else
  51.       flash[:error] = reservation.errors.full_messages
  52.       redirect_to book_reservation_path
  53.     end
  54.   end
  55.  
  56.   private
  57.  
  58.   def book_reservation_params
  59.     params.require(:book_reservation).permit(:partner_code, :restaurant_location_id, :session_id, :dining_date_and_time, :size, :first_name, :last_name, :email, :guest_accepts_email_marketing, :confirmation_number, :reservation_id)
  60.   end
  61.  
  62.   def concatenate_date
  63.     params[:dining_date_and_time] = "#{(params[:dining_date] + ' ' + params[:dining_time]).to_datetime.strftime("%Y-%m-%dT%H:%M:%S")}"
  64.   end
  65.  
  66. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement