Skip to content

Commit

Permalink
Adds add all action and chat routes to commands instead of messages
Browse files Browse the repository at this point in the history
  • Loading branch information
Erlinis Quintana authored and erlinis committed Nov 13, 2016
1 parent 806bdb2 commit 3bb19dd
Show file tree
Hide file tree
Showing 14 changed files with 321 additions and 81 deletions.
14 changes: 9 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,14 @@ gem "lita-service"
## Usage

``` sh
lita service create <NAME> <*VALUE> # Value will be set to 0 if empty.
lita service show <NAME>
lita service delete <NAME>
lita service create <NAME> <*VALUE> # Value will be set to 0 if empty.
lita service show <NAME>
lita service delete|remove <NAME>

lita service <NAME> inscribe <CUSTOMER> <*VALUE> # Value will be set to service's value if empty.
lita service <NAME> add|sum <CUSTOMER> <*QUANTITY> # Quantity will be set to 1 if empty.
lita service <NAME> inscribe <CUSTOMER> <*VALUE> # Value will be set to service's value if empty.
lita service <NAME> delete|remove <CUSTOMER>
lita service <NAME> add|sum <CUSTOMER> <*QUANTITY> # Quantity will be set to 1 if empty.
lita service <NAME> add|sum all <*QUANTITY> # Quantity will be set to 1 if empty.
```

## Example
Expand All @@ -31,10 +32,13 @@ gem "lita-service"
lita service create awesome-service 200
lita service show awesome-service
lita service delete awesome-service
lita service remove awesome-service

lita service awesome-service inscribe erlinis
lita service awesome-service add erlinis 2
lita service awesome-service sum erlinis 2
lita service awesome-service add all 3
lita service awesome-service sum all 3
lita service awesome-service delete erlinis
lita service awesome-service remove erlinis
```
Binary file added dump.rdb
Binary file not shown.
1 change: 1 addition & 0 deletions lib/lita-service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
require 'lita/interactors/base_interactor'
require 'lita/interactors/create_service'
require 'lita/interactors/add_quantity'
require 'lita/interactors/add_all'
require 'lita/interactors/show_service'
require 'lita/interactors/delete_service'
require 'lita/interactors/inscribe_customer'
Expand Down
28 changes: 19 additions & 9 deletions lib/lita/handlers/service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ class Service < Handler
namespace :service

# Routes
route(/ping/, :pong)
route(/create ([\w-]+)( [0-9]*)?/, :create)
route(/show ([\w-]+)/, :show)
route(/delete ([\w-]+)/i, :delete)
route(/([\w-]+) inscribe ([\@\w-]+)( [0-9]*)?/, :inscribe)
route(/([\w-]+) add ([\@\w-]+)( [0-9-]*)?/, :add)
route(/([\w-]+) sum ([\@\w-]+)( [0-9-]*)?/, :add)
route(/([\w-]+) remove ([\@\w-]+)/, :delete_customer)
route(/([\w-]+) delete ([\@\w-]+)/, :delete_customer)
route(/ping/, :pong, command: true)
route(/create ([\w-]+)( [0-9]*)?/, :create, command: true)
route(/show ([\w-]+)/, :show, command: true)
route(/(?:(?=service)[\w-]+) (delete|remove) ([\w-]+)/, :delete, command: true)
route(/([\w-]+) inscribe ([\@\w-]+)( [0-9]*)?/, :inscribe, command: true)
route(/([\w-]+) (add|sum) ((?!(?:all))[\@\w-]+)( [0-9-]*)?/, :add, command: true)
route(/([\w-]+) (add|sum) all( [0-9-]*)?$/, :add_all, command: true)
route(/\b((?!(?:service))[\@\w-]+) (delete|remove) ([\@\w-]+)/,
:delete_customer, command: true)

# Callbacks
def pong(response)
Expand Down Expand Up @@ -71,6 +71,16 @@ def add(response)
reply(template, message, response, interactor)
end

def add_all(response)
interactor = Interactors::AddAll
.new(self, response.match_data)
.perform

template = :message
message = { message: interactor.message }
reply(template, message, response, interactor)
end

def delete_customer(response)
interactor = Interactors::DeleteCustomer
.new(self, response.match_data)
Expand Down
66 changes: 66 additions & 0 deletions lib/lita/interactors/add_all.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# frozen_string_literal: true
require 'lita/helpers/messages_helper'

module Lita
module Interactors
# Increases all customers' quantity with the given value
# or with 1 if nothing is specified.
class AddAll < BaseInteractor
include Lita::Helpers::MessagesHelper

attr_reader :data
DEFAULT_QUANTITY = 1

def initialize(handler, data)
@handler = handler
@data = data
end

def perform
if service_exists?
update_all_quantities
else
@error = msg_not_found(service_name: name)
end
self
end

private

def name
@name ||= data[1]
end

def given_quantity
@customer_quantity ||= data[3].to_s
end

def service
@service ||= repository.find(name)
end

def service_exists?
repository.exists?(name)
end

def update_all_quantities
increment_quantities
repository.update(service)
@message = I18n.t('lita.handlers.service.add_all.success',
quantity: quantity_calculated)
end

def increment_quantities
quantity = quantity_calculated
service[:customers].map do |_key, customer_data|
customer_data[:quantity] += quantity
end
end

def quantity_calculated
return given_quantity.to_i unless given_quantity.empty?
DEFAULT_QUANTITY
end
end
end
end
4 changes: 2 additions & 2 deletions lib/lita/interactors/add_quantity.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@ def name
end

def customer_name
@customer_name ||= data[2].delete('@')
@customer_name ||= data[3].delete('@')
end

def customer_quantity
@customer_quantity ||= data[3].to_s
@customer_quantity ||= data[4].to_s
end

def service
Expand Down
2 changes: 1 addition & 1 deletion lib/lita/interactors/delete_customer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def name
end

def customer_name
@customer_name ||= data[2].delete('@')
@customer_name ||= data[3].delete('@')
end

def service
Expand Down
2 changes: 1 addition & 1 deletion lib/lita/interactors/delete_service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def perform
private

def name
@name ||= data[1]
@name ||= data[2]
end

def service_exists?
Expand Down
2 changes: 2 additions & 0 deletions locales/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ en:
tip: "Add customers with:\nlita service %{service_name} inscribe < CUSTOMER > < *VALUE >"
add:
success: "%{quantity} was added to %{customer_name}, new quantity: %{customer_quantity}"
add_all:
success: "%{quantity} was added to all."
delete_customer:
success: "%{customer_name} was deleted from %{service_name}."
errors:
Expand Down

0 comments on commit 3bb19dd

Please sign in to comment.