-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclient.rb
More file actions
73 lines (61 loc) · 1.46 KB
/
Copy pathclient.rb
File metadata and controls
73 lines (61 loc) · 1.46 KB
1
2
3
4
5
6
7
8
9
10
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
require "user"
Default_service_cost = 90
class Client < User
def initialize(login, password, company, address)
super(login, password)
@company = company
@address = address
@balance = 0
@max_debt = 0
@service_cost = Default_service_cost
@spy_shoppers = []
@balance_log = []
end
def add_task(task)
if balance_valid
ShoppingTask.insert(task)
add_balance(-@service_cost)
else
raise "Balance is not valid for adding task"
end
end
def balance_valid
@balance + @max_debt - @service_cost >= 0
end
def max_balance
@balance + @max_debt
end
def real_balance_valid
@balance >= 0
end
def add_balance(amount)
@balance_log << {:time => Time.now.strftime("%Y-%m-%d %H:%M:%S"), :amount => amount}
@balance += amount
end
def balance_log_positive
list = []
balance_log.each { |b| list << b unless b[:amount] < 0 }
list
end
def balance_log_negative
list = []
balance_log.each { |b| list << b unless b[:amount] >= 0 }
list
end
def assigned_tasks
list = []
User.db.each_pair do |login, user|
if user.is_spy_shopper
user.tasks.each do |task|
if task["client_id"] == self.id
task["spy_shopper"] = user
list.push(task)
end
end
end
end
list
end
attr_accessor :company, :address, :max_debt, :service_cost
attr_reader :spy_shoppers, :balance, :balance_log
end