Fix employee adding
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user