mirror of
https://github.com/fspc/BikeShed-1.git
synced 2025-02-28 08:43:23 -05:00
Creating Transactions works
-Need to scope transactions for users -Only Admins should be able to create transactions
This commit is contained in:
parent
1b7daa45ca
commit
2d51bd1d9a
@ -10,7 +10,7 @@ class AppTabPanel < Netzke::Basepack::TabPanel
|
|||||||
|
|
||||||
#all users
|
#all users
|
||||||
# (had to use hash for borders to get the title to display properly)
|
# (had to use hash for borders to get the title to display properly)
|
||||||
@@app_tab_panel_items = [ :transactions, :bikes_border, {layout: :fit, wrappedComponent: :brands_and_models_border, title: "Brands/Models"}]
|
@@app_tab_panel_items = [ :transactions_border, :bikes_border, {layout: :fit, wrappedComponent: :brands_and_models_border, title: "Brands/Models"}]
|
||||||
|
|
||||||
#for users
|
#for users
|
||||||
if controller.current_user.user?
|
if controller.current_user.user?
|
||||||
|
10
app/components/customers.rb
Normal file
10
app/components/customers.rb
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
class Customers < Netzke::Basepack::Grid
|
||||||
|
def configure(c)
|
||||||
|
c.model = "Customer"
|
||||||
|
end
|
||||||
|
|
||||||
|
#override with nil to remove actions
|
||||||
|
def default_bbar
|
||||||
|
[ :apply, :add_in_form, :search ]
|
||||||
|
end
|
||||||
|
end
|
@ -4,8 +4,8 @@ class Transactions < Netzke::Basepack::Grid
|
|||||||
c.model = "Transaction"
|
c.model = "Transaction"
|
||||||
c.strong_default_attrs = {
|
c.strong_default_attrs = {
|
||||||
:vendor_id => controller.current_user.id,
|
:vendor_id => controller.current_user.id,
|
||||||
:customer_id => session[:selected_user_id],
|
:customer_id => session[:selected_customer_id],
|
||||||
:customer_type => session[:selected_type]
|
:customer_type => session[:selected_customer_type]
|
||||||
}
|
}
|
||||||
c.columns = [
|
c.columns = [
|
||||||
:amount,
|
:amount,
|
||||||
@ -23,7 +23,13 @@ class Transactions < Netzke::Basepack::Grid
|
|||||||
def default_fields_for_forms
|
def default_fields_for_forms
|
||||||
bike_store = Bike.all.map { |b| [b.id, b.serial_number] }
|
bike_store = Bike.all.map { |b| [b.id, b.serial_number] }
|
||||||
user_store = User.all.map { |u| [u.id, u.to_s] }
|
user_store = User.all.map { |u| [u.id, u.to_s] }
|
||||||
customer = User.find_by_id(session[:selected_user_id])
|
customer = nil
|
||||||
|
if session[:selected_customer_type] == "User"
|
||||||
|
customer = User.find_by_id(session[:selected_customer_id])
|
||||||
|
elsif session[:selected_customer_type] == "Customer"
|
||||||
|
customer = Customer.find_by_id(session[:selected_customer_id])
|
||||||
|
end
|
||||||
|
|
||||||
customer = "No User Selected" if customer.nil?
|
customer = "No User Selected" if customer.nil?
|
||||||
[
|
[
|
||||||
{ :no_binding => true, :xtype => 'label', :text => "Creating Transaction for: #{customer.to_s}"},
|
{ :no_binding => true, :xtype => 'label', :text => "Creating Transaction for: #{customer.to_s}"},
|
||||||
@ -37,14 +43,8 @@ class Transactions < Netzke::Basepack::Grid
|
|||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
||||||
js_configure do |c|
|
#override with nil to remove actions
|
||||||
c.mixin :init_component
|
def default_bbar
|
||||||
|
[ :apply, :add_in_form, :search ]
|
||||||
end
|
end
|
||||||
|
|
||||||
endpoint :select_user do |params, this|
|
|
||||||
# store selected boss id in the session for this component's instance
|
|
||||||
session[:selected_user_id] = params[:user_id]
|
|
||||||
session[:selected_type] = 'User'
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -5,12 +5,14 @@
|
|||||||
|
|
||||||
// setting the 'rowclick' event
|
// setting the 'rowclick' event
|
||||||
var user_view = this.getComponent('users').getView();
|
var user_view = this.getComponent('users').getView();
|
||||||
var customer_view = this.getComponent('users').getView();
|
var customer_view = this.getComponent('customers').getView();
|
||||||
user_view.on('itemclick', function(view, record){
|
user_view.on('itemclick', function(view, record){
|
||||||
// The beauty of using Ext.Direct: calling 3 endpoints in a row, which results in a single call to the server!
|
// The beauty of using Ext.Direct: calling 3 endpoints in a row, which results in a single call to the server!
|
||||||
|
console.log("user: " + record.get('id') );
|
||||||
this.selectCustomer({customer_id: record.get('id'), customer_type: 'User'});
|
this.selectCustomer({customer_id: record.get('id'), customer_type: 'User'});
|
||||||
}, this);
|
}, this);
|
||||||
customer_view.on('itemclick', function(view, record){
|
customer_view.on('itemclick', function(view, record){
|
||||||
|
console.log("user: " + record.get('id') );
|
||||||
this.selectCustomer({customer_id: record.get('id'), customer_type: 'Customer'});
|
this.selectCustomer({customer_id: record.get('id'), customer_type: 'Customer'});
|
||||||
}, this);
|
}, this);
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,17 @@ class Customer < ActiveRecord::Base
|
|||||||
attr_accessible :first_name, :last_name, :addrStreet1,
|
attr_accessible :first_name, :last_name, :addrStreet1,
|
||||||
:addrStreet2, :addrCity, :addrState, :addrZip, :phone, :email
|
:addrStreet2, :addrCity, :addrState, :addrZip, :phone, :email
|
||||||
|
|
||||||
has_many :transactions
|
has_many :transactions, :as => :customer
|
||||||
|
|
||||||
|
validates :first_name, :presence => true
|
||||||
|
validates :last_name, :presence => true
|
||||||
|
#validates :addrStreet1, :presence => true
|
||||||
|
#validates :addrStreet2, :presence => true
|
||||||
|
#validates :addrCity, :presence => true
|
||||||
|
#validates :addrState, :presence => true
|
||||||
|
#validates :addrZip, :presence => true
|
||||||
|
#validates :phone, :presence => true
|
||||||
|
#validates :email, :presence => true
|
||||||
|
|
||||||
def to_s
|
def to_s
|
||||||
"#{first_name} #{last_name}"
|
"#{first_name} #{last_name}"
|
||||||
|
@ -5,7 +5,7 @@ class Transaction < ActiveRecord::Base
|
|||||||
|
|
||||||
belongs_to :vendor, :class_name => 'User', :foreign_key => 'vendor_id'
|
belongs_to :vendor, :class_name => 'User', :foreign_key => 'vendor_id'
|
||||||
belongs_to :bike
|
belongs_to :bike
|
||||||
belongs_to :customer
|
belongs_to :customer, :polymorphic => true
|
||||||
|
|
||||||
validates :vendor_id, :presence => true
|
validates :vendor_id, :presence => true
|
||||||
validates :customer_id, :presence => { :message => "Choose a User or Customer"}
|
validates :customer_id, :presence => { :message => "Choose a User or Customer"}
|
||||||
|
@ -3,7 +3,7 @@ class CreateTransactions < ActiveRecord::Migration
|
|||||||
create_table :transactions do |t|
|
create_table :transactions do |t|
|
||||||
t.integer "vendor_id", :null => false
|
t.integer "vendor_id", :null => false
|
||||||
t.integer "customer_id", :null => false
|
t.integer "customer_id", :null => false
|
||||||
t.integer "customer_type", :null => false
|
t.string "customer_type", :null => false
|
||||||
t.integer "bike_id"
|
t.integer "bike_id"
|
||||||
t.integer "amount", :null => false
|
t.integer "amount", :null => false
|
||||||
t.string "item", :null => false
|
t.string "item", :null => false
|
||||||
|
@ -104,8 +104,8 @@ ActiveRecord::Schema.define(:version => 20130120142249) do
|
|||||||
|
|
||||||
create_table "transactions", :force => true do |t|
|
create_table "transactions", :force => true do |t|
|
||||||
t.integer "vendor_id", :null => false
|
t.integer "vendor_id", :null => false
|
||||||
t.integer "customer_id"
|
t.integer "customer_id", :null => false
|
||||||
t.integer "customer_type"
|
t.string "customer_type", :null => false
|
||||||
t.integer "bike_id"
|
t.integer "bike_id"
|
||||||
t.integer "amount", :null => false
|
t.integer "amount", :null => false
|
||||||
t.string "item", :null => false
|
t.string "item", :null => false
|
||||||
|
Loading…
x
Reference in New Issue
Block a user