bns 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/._.rspec_status +0 -0
- data/CHANGELOG.md +13 -0
- data/Gemfile +2 -0
- data/README.md +163 -4
- data/SECURITY.md +13 -0
- data/lib/bns/dispatcher/discord/exceptions/invalid_webhook_token.rb +2 -2
- data/lib/bns/dispatcher/discord/implementation.rb +1 -1
- data/lib/bns/dispatcher/slack/exceptions/invalid_webhook_token.rb +16 -0
- data/lib/bns/dispatcher/slack/implementation.rb +51 -0
- data/lib/bns/dispatcher/slack/types/response.rb +21 -0
- data/lib/bns/domain/birthday.rb +2 -0
- data/lib/bns/domain/pto.rb +2 -0
- data/lib/bns/domain/work_items_limit.rb +39 -0
- data/lib/bns/fetcher/base.rb +13 -0
- data/lib/bns/fetcher/notion/{pto.rb → base.rb} +11 -7
- data/lib/bns/fetcher/notion/types/response.rb +1 -1
- data/lib/bns/fetcher/notion/use_case/birthday_next_week.rb +41 -0
- data/lib/bns/fetcher/notion/use_case/birthday_today.rb +29 -0
- data/lib/bns/fetcher/notion/use_case/pto_next_week.rb +71 -0
- data/lib/bns/fetcher/notion/use_case/pto_today.rb +30 -0
- data/lib/bns/fetcher/notion/use_case/work_items_limit.rb +37 -0
- data/lib/bns/fetcher/postgres/base.rb +46 -0
- data/lib/bns/fetcher/postgres/helper.rb +16 -0
- data/lib/bns/fetcher/postgres/types/response.rb +42 -0
- data/lib/bns/fetcher/postgres/use_case/pto_today.rb +32 -0
- data/lib/bns/formatter/base.rb +27 -3
- data/lib/bns/formatter/birthday.rb +34 -0
- data/lib/bns/formatter/exceptions/invalid_data.rb +15 -0
- data/lib/bns/formatter/pto.rb +76 -0
- data/lib/bns/formatter/work_items_limit.rb +43 -0
- data/lib/bns/mapper/notion/{birthday.rb → birthday_today.rb} +13 -21
- data/lib/bns/mapper/notion/{pto.rb → pto_today.rb} +15 -41
- data/lib/bns/mapper/notion/work_items_limit.rb +65 -0
- data/lib/bns/mapper/postgres/pto_today.rb +47 -0
- data/lib/bns/use_cases/use_cases.rb +227 -49
- data/lib/bns/version.rb +1 -1
- data/renovate.json +6 -0
- metadata +27 -10
- data/Gemfile.lock +0 -91
- data/lib/bns/fetcher/notion/birthday.rb +0 -53
- data/lib/bns/formatter/discord/birthday.rb +0 -43
- data/lib/bns/formatter/discord/exceptions/invalid_data.rb +0 -17
- data/lib/bns/formatter/discord/pto.rb +0 -52
@@ -1,52 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "../../domain/pto"
|
4
|
-
require_relative "../base"
|
5
|
-
|
6
|
-
module Formatter
|
7
|
-
module Discord
|
8
|
-
##
|
9
|
-
# This class is an implementation of the Formatter::Base interface, specifically designed for formatting PTO
|
10
|
-
# data in a way suitable for Discord messages.
|
11
|
-
class Pto
|
12
|
-
include Base
|
13
|
-
|
14
|
-
# Implements the logic for building a formatted payload with the given template for PTO's.
|
15
|
-
#
|
16
|
-
# <br>
|
17
|
-
# <b>Params:</b>
|
18
|
-
# * <tt>List<Domain::Pto></tt> pto_list: List of mapped PTO's.
|
19
|
-
#
|
20
|
-
# <br>
|
21
|
-
# <b>raises</b> <tt>Formatter::Discord::Exceptions::InvalidData</tt> when invalid data is provided.
|
22
|
-
#
|
23
|
-
# <br>
|
24
|
-
# <b>returns</b> <tt>String</tt> payload, formatted payload suitable for a Discord message.
|
25
|
-
#
|
26
|
-
def format(ptos_list)
|
27
|
-
raise Formatter::Discord::Exceptions::InvalidData unless ptos_list.all? { |pto| pto.is_a?(Domain::Pto) }
|
28
|
-
|
29
|
-
template = ":beach: NAME is on PTO"
|
30
|
-
payload = ""
|
31
|
-
|
32
|
-
ptos_list.each do |pto|
|
33
|
-
payload += "#{template.gsub("NAME", pto.individual_name)} #{build_pto_message(pto)}\n"
|
34
|
-
end
|
35
|
-
|
36
|
-
payload
|
37
|
-
end
|
38
|
-
|
39
|
-
private
|
40
|
-
|
41
|
-
def build_pto_message(pto)
|
42
|
-
if pto.start_date.include?("|")
|
43
|
-
start_time = pto.start_date.split("|")
|
44
|
-
end_time = pto.end_date.split("|")
|
45
|
-
"#{start_time[1]} - #{end_time[1]}"
|
46
|
-
else
|
47
|
-
"all day"
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|