bookingsync_portal 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +174 -0
  4. data/Rakefile +28 -0
  5. data/app/assets/config/manifest.js +3 -0
  6. data/app/assets/images/bookingsync_portal/bookingsync.png +0 -0
  7. data/app/assets/images/bookingsync_portal/help/connect.gif +0 -0
  8. data/app/assets/javascripts/bookingsync_portal/admin/application.js.coffee +83 -0
  9. data/app/assets/javascripts/bookingsync_portal/admin/connections.js.coffee +3 -0
  10. data/app/assets/javascripts/bookingsync_portal/admin/handle_remote_errors.js.coffee +3 -0
  11. data/app/assets/javascripts/bookingsync_portal/admin/lib/list-filter.js.coffee +28 -0
  12. data/app/assets/javascripts/bookingsync_portal/admin/live_updates.js.coffee +7 -0
  13. data/app/assets/javascripts/bookingsync_portal/admin/rentals.js.coffee +12 -0
  14. data/app/assets/javascripts/bookingsync_portal/admin/templates/filter_input.hbs +6 -0
  15. data/app/assets/javascripts/bookingsync_portal/admin/vendor/css-contains.js +29 -0
  16. data/app/assets/stylesheets/bookingsync_portal/admin/application.scss +241 -0
  17. data/app/controllers/bookingsync_portal/admin/base_controller.rb +25 -0
  18. data/app/controllers/bookingsync_portal/admin/connections_controller.rb +48 -0
  19. data/app/controllers/bookingsync_portal/admin/help_controller.rb +7 -0
  20. data/app/controllers/bookingsync_portal/admin/remote_accounts_controller.rb +27 -0
  21. data/app/controllers/bookingsync_portal/admin/rentals_controller.rb +36 -0
  22. data/app/controllers/bookingsync_portal/application_controller.rb +4 -0
  23. data/app/helpers/bookingsync_portal/admin/application_helper.rb +34 -0
  24. data/app/models/bookingsync_portal/account.rb +15 -0
  25. data/app/models/bookingsync_portal/connection.rb +29 -0
  26. data/app/models/bookingsync_portal/photo.rb +8 -0
  27. data/app/models/bookingsync_portal/rate.rb +6 -0
  28. data/app/models/bookingsync_portal/remote_account.rb +9 -0
  29. data/app/models/bookingsync_portal/remote_rental.rb +31 -0
  30. data/app/models/bookingsync_portal/rental.rb +26 -0
  31. data/app/synchronizers/bookingsync_portal/write/ensure_source_exists.rb +22 -0
  32. data/app/synchronizers/bookingsync_portal/write/source.rb +30 -0
  33. data/app/views/bookingsync_portal/admin/connections/create.js.coffee +6 -0
  34. data/app/views/bookingsync_portal/admin/connections/destroy.js.coffee +7 -0
  35. data/app/views/bookingsync_portal/admin/help/_help.html.erb +5 -0
  36. data/app/views/bookingsync_portal/admin/help/index.html.erb +7 -0
  37. data/app/views/bookingsync_portal/admin/remote_accounts/_form.html.erb +11 -0
  38. data/app/views/bookingsync_portal/admin/remote_accounts/_how_to_connect.html.erb +1 -0
  39. data/app/views/bookingsync_portal/admin/remote_accounts/new.html.erb +5 -0
  40. data/app/views/bookingsync_portal/admin/rentals/_connected_rental.html.erb +30 -0
  41. data/app/views/bookingsync_portal/admin/rentals/_new_remote_account.html.erb +3 -0
  42. data/app/views/bookingsync_portal/admin/rentals/_new_remote_rental.html.erb +6 -0
  43. data/app/views/bookingsync_portal/admin/rentals/_remote_rental.html.erb +11 -0
  44. data/app/views/bookingsync_portal/admin/rentals/_rental.html.erb +14 -0
  45. data/app/views/bookingsync_portal/admin/rentals/_rentals.html.erb +14 -0
  46. data/app/views/bookingsync_portal/admin/rentals/index.html.erb +56 -0
  47. data/app/views/bookingsync_portal/admin/rentals/show.js.erb +7 -0
  48. data/app/views/layouts/bookingsync_portal/_flash.html.erb +8 -0
  49. data/app/views/layouts/bookingsync_portal/_menu.html.erb +30 -0
  50. data/app/views/layouts/bookingsync_portal/admin.html.erb +21 -0
  51. data/app/views/layouts/bookingsync_portal/fullscreen/application.html.erb +19 -0
  52. data/config/locales/en.yml +85 -0
  53. data/config/routes.rb +9 -0
  54. data/db/migrate/20150222172825_create_accounts.rb +17 -0
  55. data/db/migrate/20150222173413_create_rentals.rb +14 -0
  56. data/db/migrate/20150222173711_create_remote_accounts.rb +10 -0
  57. data/db/migrate/20150222174023_create_remote_rentals.rb +12 -0
  58. data/db/migrate/20150222174234_create_connections.rb +10 -0
  59. data/db/migrate/20150520134912_create_photos.rb +13 -0
  60. data/db/migrate/20150521091056_create_rates.rb +12 -0
  61. data/db/migrate/20151210164752_add_synced_source_id_to_account.rb +5 -0
  62. data/db/migrate/20160301141356_create_bookings.rb +9 -0
  63. data/lib/bookingsync_portal.rb +77 -0
  64. data/lib/bookingsync_portal/booking_map.rb +109 -0
  65. data/lib/bookingsync_portal/engine.rb +18 -0
  66. data/lib/bookingsync_portal/mash_serializer.rb +9 -0
  67. data/lib/bookingsync_portal/version.rb +3 -0
  68. data/lib/generators/bookingsync_portal/install_generator.rb +22 -0
  69. data/lib/generators/templates/initializers/bookingsync_portal.rb +48 -0
  70. data/lib/generators/templates/models/account.rb +14 -0
  71. data/lib/generators/templates/models/connection.rb +2 -0
  72. data/lib/generators/templates/models/photo.rb +4 -0
  73. data/lib/generators/templates/models/rate.rb +3 -0
  74. data/lib/generators/templates/models/remote_account.rb +6 -0
  75. data/lib/generators/templates/models/remote_rental.rb +6 -0
  76. data/lib/generators/templates/models/rental.rb +11 -0
  77. data/lib/tasks/bookingsync_portal_tasks.rake +4 -0
  78. metadata +521 -0
@@ -0,0 +1,3 @@
1
+ <%= link_to new_admin_remote_account_path, class: "btn btn-default" do %>
2
+ <%= icon :plus %> <%= t '.connect_accounts' %>
3
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <div class="panel panel-remote"
2
+ data-remote-account-id="<%= remote_account.id %>">
3
+ <div class="panel-body-grid text-center">
4
+ <%=t ".drop_here", portal_name: BookingsyncPortal.portal_name %>
5
+ </div>
6
+ </div>
@@ -0,0 +1,11 @@
1
+ <div class="panel panel-remote" id="<%= dom_id remote_rental %>">
2
+ <div class="panel-body-grid">
3
+ <div class="panel-body-grid-photo">
4
+ </div>
5
+ <div class="panel-body-grid-text">
6
+ <h4 title="<%= RemoteRental.human_attribute_name(:uid) %>
7
+ <%= remote_rental.uid %>"><%= remote_rental.display_name %></h4>
8
+ <p class="text-overflow"></p>
9
+ </div>
10
+ </div>
11
+ </div>
@@ -0,0 +1,14 @@
1
+ <div class="panel panel-bookingsync bookingsync-rental"
2
+ id="<%= dom_id rental %>">
3
+ <div class="panel-body-grid">
4
+ <div class="panel-body-grid-photo">
5
+ <%- if rental.ordered_photos.first -%>
6
+ <%= image_tag rental.ordered_photos.first.thumb_url, class: "img-responsive" %>
7
+ <%- end -%>
8
+ </div>
9
+ <div class="panel-body-grid-text">
10
+ <h4><%= rental.name.presence || t('.no_name') %></h4>
11
+ <p class="text-overflow"><%= rental_details rental %></p>
12
+ </div>
13
+ </div>
14
+ </div>
@@ -0,0 +1,14 @@
1
+ <%- if visible_rentals.count == 0 -%>
2
+ <div class="lead text-center well">
3
+ <p><%= t('.no_published_rentals_html', id: current_account.synced_id) %></p>
4
+ </div>
5
+ <%- elsif not_connected_rentals.count > 0 -%>
6
+ <% not_connected_rentals.each do |rental| %>
7
+ <%= render rental %>
8
+ <% end %>
9
+ <%- else -%>
10
+ <div class="lead text-center well">
11
+ <p class=""><%= icon 'thumbs-up fa-lg' %></p>
12
+ <p><%=t '.all_synchronized' %></p>
13
+ </div>
14
+ <%- end -%>
@@ -0,0 +1,56 @@
1
+ <%- content_for :navbar_right do -%>
2
+ <ul class="nav navbar-nav">
3
+ <li><%= link_to icon("life-ring", t('.help')), admin_help_path %></li>
4
+ </ul>
5
+ <%- end -%>
6
+ <div class="rentals-container row">
7
+ <div class="col-xs-6">
8
+ <div class="bookingsync-rentals-list rentals-list">
9
+ <div class="rentals-list-header">
10
+ <legend class="text-center"><%= image_tag('bookingsync_portal/bookingsync.png', alt: 'BookingSync') %></legend>
11
+ </div>
12
+ <div class="rentals-list-scroll">
13
+ <%= render "rentals", visible_rentals: @visible_rentals,
14
+ not_connected_rentals: @not_connected_rentals %>
15
+ </div>
16
+ </div>
17
+ </div>
18
+ <div class="col-xs-6">
19
+ <div class="remote-rentals-list rentals-list"
20
+ data-connect-url="<%= BookingsyncPortal::Engine.routes.url_helpers.admin_connections_path %>">
21
+ <div class="rentals-list-header">
22
+ <legend class="text-center">
23
+ <%= image_tag("#{BookingsyncPortal.portal_name.parameterize}.png",
24
+ alt: BookingsyncPortal.portal_name) %>
25
+ </legend>
26
+ </div>
27
+
28
+ <div class="rentals-list-scroll">
29
+ <% @remote_accounts.each do |remote_account| %>
30
+ <h3><%=t '.remote_header', portal_name: BookingsyncPortal.portal_name,
31
+ account_name: remote_account.name %></h3>
32
+ <%- if Array(@remote_rentals_by_account[remote_account]).length > 0 -%>
33
+ <% Array(@remote_rentals_by_account[remote_account]).each do |remote_rental| %>
34
+ <% if remote_rental.connected? %>
35
+ <%= render "connected_rental", remote_rental: remote_rental, rental: remote_rental.rental %>
36
+ <% else %>
37
+ <%= render "remote_rental", remote_rental: remote_rental %>
38
+ <% end %>
39
+ <% end %>
40
+ <%- elsif !BookingsyncPortal.create_remote_rental -%>
41
+ <div class="lead text-center well">
42
+ <p class=""><%= icon 'info fa-lg' %></p>
43
+ <p><%=t '.create_listings_first', portal_name: BookingsyncPortal.portal_name %></p>
44
+ </div>
45
+ <%- end -%>
46
+ <%- if BookingsyncPortal.create_remote_rental -%>
47
+ <%= render "new_remote_rental", remote_account: remote_account %>
48
+ <%- end -%>
49
+ <% end %>
50
+ </div>
51
+ <div class="rentals-list-footer text-center">
52
+ <%= render partial: 'new_remote_account' %>
53
+ </div>
54
+ </div>
55
+ </div>
56
+ </div>
@@ -0,0 +1,7 @@
1
+ $("#<%= dom_id @rental %>").replaceWith(
2
+ <%- if @rental.connected? %>
3
+ "<%=j render 'connected_rental', rental: @rental, remote_rental: @rental.remote_rental,
4
+ disconnect_url: BookingsyncPortal::Engine.routes.url_helpers.admin_connection_path(@rental.connection) %>");
5
+ <%- else %>
6
+ "<%=j render 'rental', rental: @rental %>");
7
+ <%- end %>
@@ -0,0 +1,8 @@
1
+ <%- if flash[:error] -%>
2
+ <div id="flash">
3
+ <div class="alert alert-danger">
4
+ <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
5
+ <strong><%=t 'bookingsync_portal.admin.layout.flash.error.legend' %></strong> <%= flash[:error] %>
6
+ </div>
7
+ </div>
8
+ <%- end -%>
@@ -0,0 +1,30 @@
1
+ <nav class="navbar navbar-default navbar-fixed-top" role="navigation">
2
+ <div class="container container-fullscreen">
3
+ <div class="navbar-header">
4
+ <%- if yield(:navbar_right).present? -%>
5
+ <button type="button" class="navbar-toggle navbar-toggle-context" data-toggle="collapse"
6
+ data-target=".navbar-context1-collapse">
7
+ <span class="sr-only">
8
+ <%=t 'bookingsync_portal.admin.layout.menu.toggle_navigation' %>
9
+ </span>
10
+ <span class="icon-bar"></span>
11
+ <span class="icon-bar"></span>
12
+ <span class="icon-bar"></span>
13
+ </button>
14
+ <%- end -%>
15
+ <div>
16
+ <%= link_to icon("globe", BookingsyncPortal.portal_name), admin_root_path,
17
+ class: "navbar-brand h1",
18
+ data: { toggle: "dropdown" } %>
19
+ </a>
20
+ </div>
21
+ </div>
22
+ <%- if yield(:navbar_right).present? -%>
23
+ <div class="collapse navbar-collapse navbar-context1-collapse">
24
+ <div class="navbar-right">
25
+ <%= yield(:navbar_right) %>
26
+ </div>
27
+ </div>
28
+ <%- end -%>
29
+ </div>
30
+ </nav>
@@ -0,0 +1,21 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
6
+ <title><%=t 'bookingsync_portal.admin.layout.title',
7
+ portal_name: BookingsyncPortal.portal_name %></title>
8
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
9
+ <%= stylesheet_link_tag 'admin/application', media: 'all' %>
10
+ <%= csrf_meta_tags %>
11
+ </head>
12
+ <body data-messagebus-channel="<%= messagebus_channel %>">
13
+ <%= render partial: '/layouts/bookingsync_portal/menu' %>
14
+ <div class="container container-fullscreen">
15
+ <%= render '/layouts/bookingsync_portal/flash' %>
16
+ <%= yield %>
17
+ </div>
18
+ <%= javascript_include_tag 'admin/application' %>
19
+ <div class="footer"></div>
20
+ </body>
21
+ </html>
@@ -0,0 +1,19 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
6
+ <title><%=t 'bookingsync_portal.admin.layout.title',
7
+ portal_name: BookingsyncPortal.portal_name %></title>
8
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
9
+ <%= stylesheet_link_tag 'admin/application', media: 'all' %>
10
+ <%= csrf_meta_tags %>
11
+ </head>
12
+ <body class="fullscreen">
13
+ <div class="container">
14
+ <%= render '/layouts/bookingsync_portal/flash' %>
15
+ <%= yield %>
16
+ </div>
17
+ <%= javascript_include_tag 'admin/application' %>
18
+ </body>
19
+ </html>
@@ -0,0 +1,85 @@
1
+ en:
2
+ activerecord:
3
+ attributes:
4
+ remote_account:
5
+ uid: Remote account ID
6
+ errors:
7
+ messages:
8
+ not_matching_accounts: Different ownership of rental and remote_rental
9
+
10
+ bookingsync_portal:
11
+ admin:
12
+ help:
13
+ index:
14
+ title: What to do?
15
+ close: Close
16
+ help:
17
+ publish_rentals:
18
+ title: Publish rentals
19
+ description_html: 'Only rentals that are in the "Published" status can be connected to the portal. If you see the message "No published rentals present, please make sure to fill all your rentals details" on the left column, go back to the Rentals section to publish the ones you want to connect.'
20
+ connect:
21
+ title: Connect rentals
22
+ description_html: 'Drag the rentals from the left column and drop it to the corresponding listing on the right one.<br>You can filter the lists with the listings names.'
23
+ layout:
24
+ title: Connect BookingSync with %{portal_name}
25
+ flash:
26
+ error:
27
+ legend: Error
28
+ menu:
29
+ toggle_navigation: Toggle Navigation
30
+
31
+ remote_accounts:
32
+ new:
33
+ title: Connect with %{portal_name}
34
+ form:
35
+ submit_new: Connect with %{portal_name}
36
+
37
+ remote_rentals:
38
+ show:
39
+ listing_id: "Listing #%{id}"
40
+
41
+ rentals:
42
+ new_remote_account:
43
+ connect_accounts: Connect additional accounts
44
+ new_remote_rental:
45
+ drop_here: "Drop here to create a new rental on %{portal_name}"
46
+ index:
47
+ connect: Connect
48
+ bookingsync_header: "BookingSync: %{account_name}"
49
+ create_listings_first: "You must create your rentals on %{portal_name} before you can synchronize them automatically."
50
+ connect_accounts: Add External Portal Account
51
+ remote_header: "%{portal_name}: %{account_name}"
52
+ help: Help
53
+ rentals:
54
+ no_published_rentals_html: 'No published rentals present, please make sure to <a href="https://www.bookingsync.com/en/admin/v2/%{id}/rentals" target="_blank">fill all your rentals details</a>.'
55
+ all_synchronized: Perfect! All your rentals are synchronized.
56
+ rental:
57
+ bedrooms_html:
58
+ one: '<strong>1</strong> Bedroom'
59
+ other: '<strong>%{count}</strong> Bedrooms'
60
+ bathrooms_html:
61
+ one: '<strong>1</strong> Bathroom'
62
+ other: '<strong>%{count}</strong> Bathrooms'
63
+ sleeps_html:
64
+ one: '<strong>%{count}</strong> Person'
65
+ other: '<strong>%{count}</strong> People'
66
+ surface_html:
67
+ zero: ''
68
+ one: '<span>Surface</span> <strong>%{count}%{unit}</strong>'
69
+ other: '<span>Surface</span> <strong>%{count}%{unit}</strong>'
70
+ no_name: Unnamed rental
71
+ remote_rental:
72
+ no_name: Unnamed remote rental
73
+ connected_rental:
74
+ disconnect_rental: 'Disconnect'
75
+ disconnecting_rental: 'Disconnecting...'
76
+ synchronizing: 'Synchronizing...'
77
+
78
+ simple_form:
79
+ "yes": 'Yes'
80
+ "no": 'No'
81
+ required:
82
+ text: 'required'
83
+ mark: '*'
84
+ error_notification:
85
+ default_message: "Please review the problems below:"
@@ -0,0 +1,9 @@
1
+ BookingsyncPortal::Engine.routes.draw do
2
+ namespace :admin do
3
+ resources :rentals, only: [:index, :show]
4
+ resources :connections, only: [:create, :destroy]
5
+ resources :remote_accounts, only: [:new, :create]
6
+ get 'help', to: 'help#index'
7
+ root to: 'rentals#index'
8
+ end
9
+ end
@@ -0,0 +1,17 @@
1
+ class CreateAccounts < ActiveRecord::Migration[4.2]
2
+ def change
3
+ create_table :accounts do |t|
4
+ t.string :provider
5
+ t.integer :synced_id, index: true
6
+ t.string :name
7
+ t.string :oauth_access_token
8
+ t.string :oauth_refresh_token
9
+ t.datetime :oauth_expires_at
10
+ t.text :synced_data
11
+ t.datetime :synced_all_at
12
+ t.string :email
13
+
14
+ t.timestamps null: false
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,14 @@
1
+ class CreateRentals < ActiveRecord::Migration[4.2]
2
+ def change
3
+ create_table :rentals do |t|
4
+ t.belongs_to :account, index: true
5
+ t.integer :synced_id, index: true
6
+ t.text :synced_data
7
+ t.datetime :synced_all_at
8
+ t.integer :position
9
+ t.datetime :published_at
10
+
11
+ t.timestamps null: false
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,10 @@
1
+ class CreateRemoteAccounts < ActiveRecord::Migration[4.2]
2
+ def change
3
+ create_table :remote_accounts do |t|
4
+ t.belongs_to :account, index: true
5
+ t.integer :uid
6
+
7
+ t.timestamps null: false
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,12 @@
1
+ class CreateRemoteRentals < ActiveRecord::Migration[4.2]
2
+ def change
3
+ create_table :remote_rentals do |t|
4
+ t.belongs_to :remote_account, index: true
5
+ t.integer :uid
6
+ t.text :remote_data
7
+ t.datetime :synchronized_at
8
+
9
+ t.timestamps null: false
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,10 @@
1
+ class CreateConnections < ActiveRecord::Migration[4.2]
2
+ def change
3
+ create_table :connections do |t|
4
+ t.belongs_to :remote_rental, index: true
5
+ t.belongs_to :rental, index: true
6
+
7
+ t.timestamps null: false
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,13 @@
1
+ class CreatePhotos < ActiveRecord::Migration[4.2]
2
+ def change
3
+ create_table :photos do |t|
4
+ t.belongs_to :rental, index: true
5
+ t.integer :synced_id, index: true
6
+ t.text :synced_data
7
+ t.datetime :synced_all_at
8
+ t.integer :position
9
+
10
+ t.timestamps null: false
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ class CreateRates < ActiveRecord::Migration[4.2]
2
+ def change
3
+ create_table :rates do |t|
4
+ t.belongs_to :rental, index: true
5
+ t.integer :synced_id, index: true
6
+ t.text :synced_data
7
+ t.datetime :synced_all_at
8
+
9
+ t.timestamps null: false
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,5 @@
1
+ class AddSyncedSourceIdToAccount < ActiveRecord::Migration[4.2]
2
+ def change
3
+ add_column :accounts, :synced_source_id, :integer
4
+ end
5
+ end
@@ -0,0 +1,9 @@
1
+ class CreateBookings < ActiveRecord::Migration[4.2]
2
+ def change
3
+ create_table :bookings do |t|
4
+ t.datetime :start_at
5
+ t.datetime :end_at
6
+ t.string :status
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,77 @@
1
+ require 'bookingsync_application'
2
+ require 'bookingsync_portal/engine'
3
+ require 'bookingsync_portal/mash_serializer'
4
+ require 'bookingsync_portal/booking_map'
5
+ require 'message_bus'
6
+
7
+ # FIXME requires below should get removed when ember frontend is added
8
+ require 'uglifier'
9
+ require 'coffee-rails'
10
+ require 'sass-rails'
11
+ require 'bootstrap-bookingsync-sass'
12
+ require 'jquery-rails'
13
+ require 'jquery-ui-rails'
14
+ require 'font-awesome-sass'
15
+ require 'handlebars_assets'
16
+ require 'simple_form'
17
+ require 'turbolinks'
18
+ require 'responders'
19
+
20
+ module BookingsyncPortal
21
+ # portal name
22
+ mattr_accessor :portal_name
23
+ @@portal_name = 'Portal'
24
+
25
+ # source name for use in bookings
26
+ mattr_accessor :source_name
27
+
28
+ # Allow to create a remote rental from this app.
29
+ mattr_accessor :create_remote_rental
30
+ @@create_remote_rental = false
31
+
32
+ # account model class
33
+ mattr_accessor :account_model
34
+ @@account_model = 'BookingsyncPortal::Account'
35
+
36
+ # remote account model class
37
+ mattr_accessor :remote_account_model
38
+ @@remote_account_model = 'BookingsyncPortal::RemoteAccount'
39
+
40
+ # rental model class
41
+ mattr_accessor :rental_model
42
+ @@rental_model = 'BookingsyncPortal::Rental'
43
+
44
+ # remote rental model class
45
+ mattr_accessor :remote_rental_model
46
+ @@remote_rental_model = 'BookingsyncPortal::RemoteRental'
47
+
48
+ # connection model class
49
+ mattr_accessor :connection_model
50
+ @@connection_model = 'BookingsyncPortal::Connection'
51
+
52
+ # photo model class
53
+ mattr_accessor :photo_model
54
+ @@photo_model = 'BookingsyncPortal::Photo'
55
+
56
+ # rate model class
57
+ mattr_accessor :rate_model
58
+ @@rate_model = 'BookingsyncPortal::Rate'
59
+
60
+ # message bus channel scope
61
+ mattr_accessor :message_bus_channel_scope
62
+
63
+ # fetch remote rentals
64
+ def self.fetch_remote_rentals(account)
65
+ # return false if remote account is not present or not valid
66
+ end
67
+
68
+ # Default way to setup BookingsyncPortal. Run rails generate bookingsync_portal:install to create
69
+ # a fresh initializer with all configuration values.
70
+ def self.setup
71
+ yield self
72
+ raise ArgumentError.new("message_bus_channel_scope must be defined") unless message_bus_channel_scope.present?
73
+ ::MessageBus.site_id_lookup do
74
+ message_bus_channel_scope
75
+ end
76
+ end
77
+ end