Skip to content

Commit

Permalink
Merge branch 'master' into LH_17
Browse files Browse the repository at this point in the history
Conflicts:

	config/routes.rb
	db/migrate/20080819180845_create_clients.rb
  • Loading branch information
Jonathan Hoyt authored and Jonathan Hoyt committed Dec 22, 2008
2 parents 9e02a88 + b132cbb commit 3027ff3
Show file tree
Hide file tree
Showing 34 changed files with 880 additions and 52 deletions.
3 changes: 2 additions & 1 deletion app/controllers/checklists_controller.rb
Expand Up @@ -54,7 +54,8 @@ def create
def remove_from_ticket
@checklist = Checklist.find(params[:id])
TicketEntry.create(:entry_type => "Removed Checklist", :note => "Checklist (#{@checklist.name}) was removed from this ticket.", :billable => false, :private => true, :detail => 6, :ticket => @checklist.ticket, :creator_id => current_user.id)
@checklist.destroy
@checklist.ticket_id = nil
@checklist.save
redirect_to :back
end

Expand Down
11 changes: 8 additions & 3 deletions app/controllers/devices_controller.rb
Expand Up @@ -3,8 +3,13 @@ class DevicesController < ApplicationController
layout 'devices', :except => [:details]

def index
@devices = Device.search(params[:q], :include => [:client])

if params[:client_id]
@devices = Device.find(:all, :conditions => {:client_id => params[:client_id]})
elsif params[:q]
@devices = Device.search(params[:q], :include => [:client])
else
@devices = []
end
respond_to do |format|
format.html
format.xml { render :xml => @devices }
Expand Down Expand Up @@ -63,7 +68,7 @@ def create
format.html { redirect_to :back }
else
flash[:notice] = @device.errors.inspect
format.html { redirect_to url_for(@device) }
format.html { redirect_to :back }
format.xml { render :xml => @device, :status => :created, :location => @device }
end
else
Expand Down
38 changes: 38 additions & 0 deletions app/controllers/radchecks_controller.rb
@@ -0,0 +1,38 @@
class RadchecksController < ApplicationController
before_filter :login_required
layout nil

def create
@radcheck = Radcheck.new(params[:radcheck])
if @radcheck.save
flash[:notice] = "Dialup account created successfully!"
redirect_to :back
else
flash[:notice] = "Suite could not create this dialup account."
redirect_to :back
end
end

def update
@radcheck = Radcheck.find(params[:id])
if @radcheck.update_attributes(params[:radcheck])
flash[:notice] = "Dialup account updated successfully!"
redirect_to :back
else
flash[:notice] = "Suite could not update this dialup account."
redirect_to :back
end
end

def destroy
@radcheck = Radcheck.find(params[:id])
if @radcheck.destroy
flash[:notice] = "Dialup account deleted successfully."
redirect_to :back
else
flash[:notice] = "Dialup account could not be deleted."
redirect_to :back
end
end

end
41 changes: 21 additions & 20 deletions app/models/address.rb
Expand Up @@ -5,13 +5,14 @@ class Address < ActiveRecord::Base

def normalize_address
# puts "normalizing"
if address = getLocation(self.full_address)
self.full_address = address["full_address"]
self.thoroughfare = address["thoroughfare"]
self.city = address["city"]
self.state = address["state"]
self.zip = address["zip"]
# puts "normalized!"
if self.zip == nil
if address = getLocation(self.full_address)
address["thoroughfare"] != nil ? self.thoroughfare = address["thoroughfare"] : self.thoroughfare = nil
address["city"] != nil ? self.city = address["city"] : self.city = nil
address["state"] != nil ? self.state = address["state"] : self.state = nil
address["zip"] != nil ? self.zip = address["zip"] : self.zip = nil
# puts "normalized!"
end
else
# puts "unable to normalize"
self.full_address = self.full_address
Expand All @@ -21,7 +22,7 @@ def normalize_address
protected

def getLocation(address)
# puts "getting location"
puts "getting location"
key = "ABQIAAAApuX_5BYbKnzmBE3HKXu8yBTJQa0g3IQ9GZqIMmInSLzwtGDKaBT9NkNo6YIUV4Fa6Ff5q37qmXVoMg"
output = "json"
host = "maps.google.com"
Expand All @@ -34,26 +35,26 @@ def getLocation(address)

data = Net::HTTP.get(uri)
hash = JSON.parse(data)
# puts hash.inspect
puts hash.inspect

return false unless hash["Status"]["code"] == 200
return false

address = {}

if hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["Locality"]
address["full_address"] = hash["Placemark"][0]["address"] if hash["Placemark"][0]["address"]["Thoroughfare"]
address["thoroughfare"] = hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["Locality"]["Thoroughfare"]["ThoroughfareName"] if hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["Locality"]["Thoroughfare"]["ThoroughfareName"]
address["city"] = hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["Locality"]["LocalityName"] if hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["Locality"]["LocalityName"]
address["state"] = hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["AdministrativeAreaName"] if hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["AdministrativeAreaName"]
address["zip"] = hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["Locality"]["PostalCode"]["PostalCodeNumber"] if hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["Locality"]["PostalCode"]["PostalCodeNumber"]
# hash["Placemark"][0]["address"] != nil ? address["full_address"] = hash["Placemark"][0]["address"] : address["full_address"] = nil
hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["Locality"]["Thoroughfare"] != nil ? address["thoroughfare"] = hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["Locality"]["Thoroughfare"]["ThoroughfareName"] : address["thoroughfare"] = nil
hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["Locality"]["LocalityName"] != nil ? address["city"] = hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["Locality"]["LocalityName"] : address["city"] = nil
hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["AdministrativeAreaName"] != nil ? address["state"] = hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["AdministrativeAreaName"] : address["state"] = nil
hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["Locality"]["PostalCode"] != nil ? address["zip"] = hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["Locality"]["PostalCode"]["PostalCodeNumber"] : address["zip"] = nil
elsif hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]
address["full_address"] = hash["Placemark"][0]["address"] if hash["Placemark"][0]["address"]["Thoroughfare"]
address["thoroughfare"] = hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["Thoroughfare"]["ThoroughfareName"] if hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["Locality"]["Thoroughfare"]["ThoroughfareName"]
address["city"] = hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["LocalityName"] if hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["Locality"]["LocalityName"]
address["state"] = hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["AdministrativeAreaName"] if hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["AdministrativeAreaName"]
address["zip"] = hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["PostalCode"]["PostalCodeNumber"] if hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["Locality"]["PostalCode"]["PostalCodeNumber"]
# hash["Placemark"][0]["address"] != nil ? address["full_address"] = hash["Placemark"][0]["address"] : address["full_address"] = nil
hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["Thoroughfare"] != nil ? address["thoroughfare"] = hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["Thoroughfare"]["ThoroughfareName"] : address["thoroughfare"] = nil
hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["LocalityName"] != nil ? address["city"] = hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["LocalityName"] : address["city"] = nil
hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["AdministrativeAreaName"] != nil ? address["state"] = hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["AdministrativeAreaName"] : address["state"] = nil
hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["PostalCode"] != nil ? address["zip"] = hash["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["PostalCode"]["PostalCodeNumber"] : address["zip"] = nil
else
# puts "failed to get anything useful"
return false
end
return address
Expand Down
10 changes: 10 additions & 0 deletions app/models/client.rb
Expand Up @@ -13,6 +13,8 @@ class Client < ActiveRecord::Base
has_many :phones, :dependent => :destroy
has_many :emails, :dependent => :destroy
has_many :addresses, :dependent => :destroy

has_one :radcheck, :dependent => :destroy

validates_associated :phones, :emails, :addresses

Expand Down Expand Up @@ -135,5 +137,13 @@ def primary_address
def open_tickets
Ticket.find(:all, :conditions => {:archived_on => nil, :client_id => self.id})
end

def active_dialup_user?
if self.radcheck && self.radcheck.value[0..8] != "disabled_"
return true
else
return false
end
end

end
4 changes: 2 additions & 2 deletions app/models/device.rb
Expand Up @@ -13,7 +13,7 @@ class Device < ActiveRecord::Base
after_create :create_checklists

def create_service_tag
if self.service_tag == ""
if self.service_tag.blank?
recent_device = Device.find(:first, :order => 'created_at DESC', :conditions => {:created_at.gt => DateTime.now.beginning_of_day, :created_at.lt => DateTime.now.end_of_day, :device_type_id => self.device_type_id})
device_type = DeviceType.find(self.device_type_id)
if recent_device != nil
Expand All @@ -34,7 +34,7 @@ def create_checklists
checklists = self.device_type.checklist_templates
if checklists != nil
checklists.each do |list|
Checklist.create(:checklist_template => list, :name => list.name, :device => self)
Checklist.create(:checklist_template => list, :name => list.name, :device => self, :ticket_id => nil)
end
end
end
Expand Down
16 changes: 16 additions & 0 deletions app/models/radcheck.rb
@@ -0,0 +1,16 @@
class Radcheck < ActiveRecord::Base
use_db :prefix => "freeradius_"
set_table_name "radcheck"

belongs_to :client

validates_presence_of :username, :attribute, :value
validates_uniqueness_of :username

# this won't work for some reason
before_create :set_attribute
def set_attribute
self.attribute = "User-Password"
end

end
5 changes: 3 additions & 2 deletions app/models/ticket.rb
Expand Up @@ -81,8 +81,9 @@ def self.totals(user)
end

def checklists_complete?
checklists = self.checklists
checklists << self.devices.collect{|device| device.checklists}.flatten
checklists = []
checklists.concat(self.checklists)
checklists.concat(self.devices.collect{|device| device.checklists}.flatten)
complete = 0
checklists.each do |checklist|
checklist.complete? ? complete += 0 : complete += 1
Expand Down
61 changes: 61 additions & 0 deletions app/views/clients/_dialup.html.erb
@@ -0,0 +1,61 @@
<% !@client.radcheck.blank? ? @radcheck = @client.radcheck : @radcheck = Radcheck.new %>
<div id="dialup">
<% if @client.radcheck.blank? %>
<ul class="toolbar">
<li><a href="#" class="add">Add Dialup</a></li>
</ul>
<% else %>
<ul class="toolbar">
<% if @client.radcheck.value[0..8] == "disabled_" %>
<li><a href="#" class="enable">Enable Dialup Account</a></li>
<% else %>
<li><a href="#" class="disable">Disable Dialup Account</a></li>
<% end %>
<li><%= link_to "Delete Dialup Account", { :controller => "radchecks", :action => "destroy", :id => @radcheck }, :confirm => "Are you sure you want to delete this dialup account?", :method => :delete %></li>
</ul>
<% end %>
<div id="dialup_form" class="toolbox hide">
<% form_for @radcheck do |f| %>
<table class="m">
<tr>
<td class="first">Username:</td>
<td><%= f.text_field :username %></td>
</tr>
<tr>
<td class="first">Password:</td>
<td><%= f.text_field :value %></td>
</tr>
</table>
<%= f.hidden_field :attribute, :value => "User-Password" %>
<%= f.hidden_field :client_id, :value => @client.id %>
<%= f.submit "Save" %>
<% end %>
<br />
</div>
</div>

<script>
<% if @client.active_dialup_user? %>
$("div#dialup_form").removeClass("hide");
$("div#dialup a.disable").click(function(){
var password = $("input#radcheck_value").val();
password = "disabled_" + password;
$("input#radcheck_value").val(password);
$("div#dialup_form form input[type=submit]").click();
});
<% else %>
$("div#dialup a.enable").click(function(){
var password = $("input#radcheck_value").val();
password = password.split("disabled_");
password = password[1];
$("input#radcheck_value").val(password);
$("div#dialup_form form input[type=submit]").click();
});
<% end %>

$("div#dialup > ul.toolbar > li > a.add").click(function(){
$("div#dialup_form").slideDown(500);
});


</script>
2 changes: 2 additions & 0 deletions app/views/clients/show.html.erb
Expand Up @@ -9,6 +9,7 @@
<li class="ui-tabs-nav-item"><a href="#tickets" title="tickets">Tickets</a></li>
<li class="ui-tabs-nav-item"><a href="#devices" title="devices">Devices</a></li>
<li class="ui-tabs-nav-item"><a href="#files" title="files">Files</a></li>
<li class="ui-tabs-nav-item"><a href="#dialup" title="files">Dialup</a></li>
<% if not_a_user(@client) %><li class="ui-tabs-nav-item"><a href="/clients/<%= @client.id %>/users/new" title="#newaccount">Invite</a></li><% end %>
<% if my_account(@client) %><li class="ui-tabs-nav-item"><a href="/users/<%= current_user.id %>" title="#myaccount">My Account</a></li><% end %>
</ul>
Expand All @@ -17,6 +18,7 @@
<%= render :partial => 'tickets', :locals => {:client => @client} %>
<%= render :partial => 'devices', :locals => {:client => @client} %>
<%= render :partial => 'things', :locals => {:client => @client} %>
<%= render :partial => 'dialup', :locals => {:client => @client} %>
</div>

<script>
Expand Down
2 changes: 1 addition & 1 deletion app/views/sessions/new.html.erb
Expand Up @@ -3,7 +3,7 @@
<fieldset>
<div class="row">
<%= label_tag 'email', 'Email' %>
<%= text_field_tag 'email', @email %>
<%= text_field_tag 'email', @email, :autocapitalize => "off" %>
</div>
<div class="row">
<%= label_tag 'password' %>
Expand Down
14 changes: 3 additions & 11 deletions app/views/shared/_new_device.html.erb
@@ -1,15 +1,14 @@
<h3>New Device</h3>
<% form_for Device.new(:client => @client), :url => "" do |f| -%>
<% form_for Device.new(), :url => "" do |f| -%>
<% @client.blank? ? @client_id = @ticket.client.id : @client_id = @client.id %>
<%= f.hidden_field :client_id, :value => @client_id %>
<table id="device_details" class="m">
<tr>
<td class="first">Service Tag:</td><td><%= f.text_field :service_tag %> Auto-Generated</td>
</tr>
<tr>
<td class="first">Device Name:</td><td><%= f.text_field :name %></td>
</tr>
<tr>
<td class="first">Owner:</td><td><%= f.select :client_id, Client.find(:all).collect {|c| [c.fullname, c.id]}, :include_blank => true %></td>
</tr>
<tr>
<td class="first">Device Type:</td><td><%= f.select :device_type_id, DeviceType.find(:all).collect {|c| [c.description, c.id]} %></td>
</tr>
Expand All @@ -22,12 +21,5 @@

<script>
$(document).ready(function() {
// change client dropdown to quickselect box
$("#device_client_id").quickselect({
delay:10,
minChars:1,
match:'quicksilver',
maxItemsToShow:12
});
});
</script>
2 changes: 1 addition & 1 deletion app/views/ticket_entries/index.html.erb
Expand Up @@ -12,7 +12,7 @@
<p class="ticket_entry_details">Time Spent: <b><%= entry.time %> minutes</b> - Labor Type: <b><%= entry.labor_type %></b> - Billable? <b><%= billable(entry) %></b> - Private? <b><%= is_this_private(entry) %></b></p>
<div class="ticket_entry_note"><%= textile_to_html(entry.note) %></div>
<div class="ticket_entry_parts"><b>Parts</b><br /><%= textile_to_html(entry.parts) %></div>
<div class="delete_button hide"><%= link_to_remote image_tag("/images/icons/delete.png"), :url => ticket_entry_url(entry), :method => :delete %></div>
<div class="delete_button hide"><%= link_to_remote image_tag("/images/icons/delete.png"), :url => ticket_entry_url(entry), :method => :delete, :confirm => "Are you sure you want to delete this Ticket Entry?" %></div>
<div class="edit_button hide"><a href="javascript:void(0)" onclick="return false;"><%= image_tag("/images/icons/comment_edit.png") %></a></div>
<div class="ticket_entry_bottom">&nbsp;</div>
</div>
Expand Down
4 changes: 2 additions & 2 deletions app/views/tickets/show.html.erb
Expand Up @@ -102,12 +102,12 @@
$("#new_device_form").slideDown(1000);
});
$("a.add_existing_device").bind("click", function(){
$.getJSON("/devices/?q=<%= @ticket.client.fullname %>", function(data){
$.getJSON("/clients/<%= @ticket.client.id %>/devices", function(data){
$.each(data, function(i, object){
var row = "<tr><td><a href='#'>"+object.device.service_tag+"</a></td><td><a href='#'>"+object.device.name+"</a></td><td><a href='/tickets/<%= @ticket.id %>/devices/"+object.device.id+"/add_to_ticket'>Add</a></td></tr>"
$("#add_existing_device table tbody").append(row);
$("#add_existing_device").slideDown(1000);
buildTables();
// buildTables();
});
});
});
Expand Down
1 change: 1 addition & 0 deletions config/routes.rb
Expand Up @@ -42,6 +42,7 @@
map.resources :checklist_templates
map.resources :goggles
map.resources :schedules
map.resources :radchecks

# Custom Routes
map.search_clients '/clients/search', :controller => 'clients', :action => 'search'
Expand Down
2 changes: 1 addition & 1 deletion db/migrate/20080819180845_create_clients.rb
Expand Up @@ -4,7 +4,7 @@ def self.up
t.string :name
t.string :firstname
t.string :lastname
t.boolean :company, :default => nil, :null => false
t.boolean :company, :default => false, :null => false
t.integer :belongs_to
t.text :note
t.string :mugshot_file_name
Expand Down
4 changes: 2 additions & 2 deletions db/migrate/20080915192339_create_ticket_entries.rb
Expand Up @@ -4,8 +4,8 @@ def self.up
t.string :entry_type
t.text :note
t.integer :time
t.boolean :billable
t.boolean :private
t.boolean :billable, :default => true, :null => false
t.boolean :private, :default => false, :null => false
t.integer :detail
t.integer :creator_id
t.integer :ticket_id
Expand Down
4 changes: 2 additions & 2 deletions db/schema.rb
Expand Up @@ -229,8 +229,8 @@
t.string "entry_type"
t.text "note"
t.integer "time"
t.boolean "billable"
t.boolean "private"
t.boolean "billable", :default => true, :null => false
t.boolean "private", :default => false, :null => false
t.integer "detail"
t.integer "creator_id"
t.integer "ticket_id"
Expand Down

0 comments on commit 3027ff3

Please sign in to comment.