Creating Transactions works

-Need to scope transactions for users
-Only Admins should be able to create transactions
This commit is contained in:
Jason Denney
2013-01-20 16:14:53 -05:00
parent 1b7daa45ca
commit 2d51bd1d9a
8 changed files with 41 additions and 19 deletions
+1 -1
View File
@@ -10,7 +10,7 @@ class AppTabPanel < Netzke::Basepack::TabPanel
#all users
# (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
if controller.current_user.user?
+10
View 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
+12 -12
View File
@@ -4,8 +4,8 @@ class Transactions < Netzke::Basepack::Grid
c.model = "Transaction"
c.strong_default_attrs = {
:vendor_id => controller.current_user.id,
:customer_id => session[:selected_user_id],
:customer_type => session[:selected_type]
:customer_id => session[:selected_customer_id],
:customer_type => session[:selected_customer_type]
}
c.columns = [
:amount,
@@ -23,7 +23,13 @@ class Transactions < Netzke::Basepack::Grid
def default_fields_for_forms
bike_store = Bike.all.map { |b| [b.id, b.serial_number] }
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?
[
{ :no_binding => true, :xtype => 'label', :text => "Creating Transaction for: #{customer.to_s}"},
@@ -37,14 +43,8 @@ class Transactions < Netzke::Basepack::Grid
]
end
js_configure do |c|
c.mixin :init_component
#override with nil to remove actions
def default_bbar
[ :apply, :add_in_form, :search ]
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
@@ -5,12 +5,14 @@
// setting the 'rowclick' event
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){
// 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);
customer_view.on('itemclick', function(view, record){
console.log("user: " + record.get('id') );
this.selectCustomer({customer_id: record.get('id'), customer_type: 'Customer'});
}, this);
}
+11 -1
View File
@@ -2,7 +2,17 @@ class Customer < ActiveRecord::Base
attr_accessible :first_name, :last_name, :addrStreet1,
: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
"#{first_name} #{last_name}"
+1 -1
View File
@@ -5,7 +5,7 @@ class Transaction < ActiveRecord::Base
belongs_to :vendor, :class_name => 'User', :foreign_key => 'vendor_id'
belongs_to :bike
belongs_to :customer
belongs_to :customer, :polymorphic => true
validates :vendor_id, :presence => true
validates :customer_id, :presence => { :message => "Choose a User or Customer"}