Fix employee adding

This commit is contained in:
2015-02-27 11:09:16 +01:00
parent 6e805fed3e
commit bfc0f336d1
13 changed files with 137 additions and 21 deletions
@@ -30,7 +30,7 @@ module Suppliers
raise CanCan::AccessDenied unless current_employee.active?
@current_ability = ::Ability.new( current_employee )
Array.wrap(after_authentication_hooks).each do |hook|
next if hook[:options][:only].present? && !Array.wrap(hook[:options][:only].include?(action_name.to_sym))
next if hook[:options][:only].present? && !Array.wrap(hook[:options][:only]).include?(action_name.to_sym)
instance_eval &hook[:block]
end
end
@@ -20,10 +20,23 @@ module Suppliers
# POST /employees
# POST /employees.json
def create
@employee = Employee.find_by_email(employee_params[:email]) if employee_params[:email].present?
valid = false
if existing_employee = Employee.find_by_email(employee_params[:email])
@employee = existing_employee
if valid = @employee.valid?
current_supplier.add_employee @employee
@employee.update_attributes employee_params
end
else
@employee = Employee.new(employee_params)
@employee.password = SecureRandom.hex(8)
if valid = @employee.save
current_supplier.add_employee @employee
@employee.update_attributes employee_params # needed for supplier specific settings
end
end
if @employee.save
current_supplier.add_employee @employee unless current_supplier.employee_ids.include? @employee.id # already linked
if valid
render json: @employee, serializer: Suppliers::EmployeeSerializer, status: :created
else
render json: {errors: @employee.errors}, status: :unprocessable_entity
+7 -1
View File
@@ -67,11 +67,17 @@ class Supplier
def add_manager(employee)
add_employee employee unless employee_ids.include? employee.id
settings = employee_settings.for_employee(employee)
settings = settings_for(employee)
settings.is_manager!
save and employee
end
after_method :add_employee do |result, employee|
@employee_settings = nil
employee.settings = settings_for(employee)
result
end
def employee_settings
@employee_settings ||= SupplierEmployeesSettings.new(self)
end
@@ -112,6 +112,10 @@ class SupplierEmployeesSettings
all_employees_settings.supplier.save
end
def supplier
all_employees_settings.supplier
end
# Parse a method name to its underlying operations
# settings.is_manager?
# is a getter for the attribute manager