Class: Iro::PursesController
Instance Method Summary
collapse
#home, #schwab_sync, #schwab_sync_exec
Instance Method Details
#create ⇒ Object
6
7
8
9
10
11
12
13
14
15
|
# File 'app/controllers/iro/purses_controller.rb', line 6
def create
@purse = Iro::Purse.new params[:purse].permit!
authorize! :create, @purse
if @purse.save
;
else
flash_alert @purse
end
redirect_to action: :index
end
|
#destroy ⇒ Object
17
18
19
20
21
22
|
# File 'app/controllers/iro/purses_controller.rb', line 17
def destroy
@purse = Iro::Purse.find(params[:id])
authorize! :destroy, @purse
@purse.destroy
redirect_to action: :index, notice: 'Purse was successfully destroyed.'
end
|
#edit ⇒ Object
24
25
26
27
|
# File 'app/controllers/iro/purses_controller.rb', line 24
def edit
@purse = Iro::Purse.unscoped.find(params[:id]) rescue Iro::Purse.unscoped.find_by( slug: params[:id] )
authorize! :edit, @purse
end
|
#index ⇒ Object
29
30
31
32
|
# File 'app/controllers/iro/purses_controller.rb', line 29
def index
@purses = Iro::Purse.all.order_by( slug: :asc )
authorize! :index, Iro::Purse
end
|
#show ⇒ Object
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# File 'app/controllers/iro/purses_controller.rb', line 35
def show
@purse = Iro::Purse.unscoped.find(params[:id]) rescue Iro::Purse.unscoped.find_by( slug: params[:id] )
authorize! :show, @purse
@unit = @purse.unit @height = @purse.height @n_dollars = 30
@positions = @purse.positions.where( :status.in => params[:vcfg][:statuses]
).includes( :strategy
).order_by( expires_on: :desc, ticker: :asc, long_or_short: :asc, inner_strike: :asc )
calc_summary
@page_title = @purse.to_s
render params[:vcfg][:template]
end
|
#sync ⇒ Object
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
# File 'app/controllers/iro/purses_controller.rb', line 52
def sync
@purse = Iro::Purse.find(params[:id])
authorize! :show, @purse
@positions = @purse.positions.active
expiration_dates = @positions.map { |p| p.expires_on.to_s }.sort
quotes_h = Tda::Option.get_quotes_h({
contractType: 'ALL',
ticker: @positions[0].ticker,
fromDate: expiration_dates.first,
toDate: expiration_dates.last,
})
count = 1
@positions.each do |pos|
pos.inner.end_price = quotes_h[pos.expires_on.to_date.to_s][pos.put_call][pos.inner.strike][:price]
pos.inner.end_delta = quotes_h[pos.expires_on.to_date.to_s][pos.put_call][pos.inner.strike][:delta]
pos.inner.save ? print("#{count}^") : print("#{count}X")
if pos.outer
pos.outer.end_price = quotes_h[pos.expires_on.to_date.to_s][pos.put_call][pos.outer.strike][:price]
pos.outer.end_delta = quotes_h[pos.expires_on.to_date.to_s][pos.put_call][pos.outer.strike][:delta]
pos.outer.save ? print('^') : print('X')
end
count = count+1
end
flash[:notice] = 'Synced the purse.'
redirect_to request.referrer
end
|
#update ⇒ Object
84
85
86
87
88
89
90
91
92
93
94
|
# File 'app/controllers/iro/purses_controller.rb', line 84
def update
@purse = Iro::Purse.unscoped.find(params[:id]) rescue Iro::Purse.unscoped.find_by( slug: params[:id] )
authorize! :update, @purse
if @purse.update params[:purse].permit!
flash[:notice] = 'ok'
redirect_to request.referrer else
flash_alert @purse
render :edit
end
end
|