Class: Stay::Chat::QueryMessagingService

Inherits:
Object
  • Object
show all
Defined in:
app/services/stay/chat/query_messaging_service.rb

Instance Method Summary collapse

Constructor Details

#initialize(query, current_user, message = nil) ⇒ QueryMessagingService

Returns a new instance of QueryMessagingService.



2
3
4
5
6
7
8
9
# File 'app/services/stay/chat/query_messaging_service.rb', line 2

def initialize(query, current_user, message = nil)
  @query = query
  @user = current_user
  @property = @query.property
  @owner = @property.user
  @chat = @query.chat
  @message = message
end

Instance Method Details

#performObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'app/services/stay/chat/query_messaging_service.rb', line 11

def perform
  messages_by_status = {
    "send_message" => {
      user_message: { text: "#{@message} You have raised a request for the property #{@property.title} for dates #{formatted_date(@query.check_in_date.to_date)} to #{formatted_date(@query.check_out_date.to_date)} for #{@query.guest_count} guest(s).", event: "booking query", receiver: @owner },
      owner_message: { text: "#{@message} A booking query has been received for the property #{@property.title} for dates #{formatted_date(@query.check_in_date.to_date)} to #{formatted_date(@query.check_out_date.to_date)} for #{@query.guest_count} guest(s).", event: "booking query", receiver: @user }
    },
    "booking_invitation" => {
      user_message: { text: "You have received a booking invitation.", event: "booking invitation", receiver: @owner },
      owner_message: { text: "You have sent a booking invitation.", event: "booking invitation", receiver: @user }
    },
    "request_change" => {
    user_message: { text: "You have requested a change in booking dates to #{formatted_date(@query.check_in_date.to_date)} - #{formatted_date(@query.check_out_date.to_date)}.", event: "request change", receiver: @owner },
      owner_message: { text: "The user has requested a change in booking dates to #{formatted_date(@query.check_in_date.to_date)} - #{formatted_date(@query.check_out_date.to_date)}.", event: "request change", receiver: @user }
    },
    "accepted" => {
      user_message: { text: "You have sent a booking request.", event: "booking accepted", receiver: @owner },
      owner_message: { text: "You have received a booking request.", event: "booking accepted", receiver: @user }
    },
    "rejected" => {
      user_message: { text: "The booking for #{@property.title} from #{formatted_date(@query.check_in_date.to_date)} to #{formatted_date(@query.check_out_date.to_date)} has been rejected.", event: "booking rejected", receiver: @owner },
      owner_message: { text: "The booking for #{@property.title} from #{formatted_date(@query.check_in_date.to_date)} to #{formatted_date(@query.check_out_date.to_date)} has been rejected.", event: "booking rejected", receiver: @user }
    }
  }

  if messages_by_status.key?(@query.state)
    messages = messages_by_status[@query.state]
    send_message(@chat, @user, messages[:user_message], @owner)
    send_message(@chat, @owner, messages[:owner_message], @user)
  end
end