* feat: cater for when there are no profile fields in a group * feat: add a modal to create a new group * feat: add a controller and route for the group * refactor: add group modal * feat: edit a group * chore: remove an instance var * chore: toggle the section using a toggle button * feat: add the edit button * chore: update the messaging * chore: update the class name * feat: delete the group * chore: add some css * chore: use group_name * chore: rename the file and add the group select to the file * feat: render the correct partial and add the profile_field_group_id * feat: add a profile field * feat: amend the styles on the card header * feat: add a cursor pointer * feat: get the form to redirect after an update * chore: remove style * feat: order by created at so that each time we save the order doesn't change * fix: change the form * chore: format the options * feat: show ungrouped fields at the bottom * feat: add the profile fields length * chore: remove unused action * test: add some specs for profile group workflow * fix: oops * refactor: grouped profile fields * refactor: amend the styles * chore: rename methods * chore: update headings * chore: remove changes from my linter * refactor: suggestions by Michael - upgrade ternary * refactor: order by name and label
54 lines
1.7 KiB
Ruby
54 lines
1.7 KiB
Ruby
module Admin
|
|
class ProfileFieldsController < Admin::ApplicationController
|
|
ALLOWED_PARAMS = %i[
|
|
input_type label active placeholder_text description profile_field_group_id
|
|
].freeze
|
|
layout "admin"
|
|
|
|
def index
|
|
@grouped_profile_fields = ProfileFieldGroup.all.includes(:profile_fields).order(:name)
|
|
@ungrouped_profile_fields = ProfileField.where(profile_field_group_id: nil).order(:label)
|
|
end
|
|
|
|
def update
|
|
profile_field = ProfileField.find(params[:id])
|
|
if profile_field.update(profile_field_params)
|
|
flash[:success] = "Profile field #{profile_field.label} updated"
|
|
else
|
|
flash[:error] = "Error: #{profile_field.errors_as_sentence}"
|
|
end
|
|
redirect_to admin_profile_fields_path
|
|
end
|
|
|
|
def create
|
|
add_result = ProfileFields::Add.call(profile_field_params)
|
|
if add_result.success?
|
|
profile_field = add_result.profile_field
|
|
flash[:success] = "Profile field #{profile_field.label} created"
|
|
else
|
|
flash[:error] = "Error: #{add_result.error_message}"
|
|
end
|
|
redirect_to admin_profile_fields_path
|
|
end
|
|
|
|
def destroy
|
|
remove_result = ProfileFields::Remove.call(params[:id])
|
|
if remove_result.success?
|
|
profile_field = remove_result.profile_field
|
|
flash[:success] = "Profile field #{profile_field.label} deleted"
|
|
else
|
|
flash[:error] = "Error: #{remove_result.error_message}"
|
|
end
|
|
redirect_to admin_profile_fields_path
|
|
end
|
|
|
|
private
|
|
|
|
private_constant :ALLOWED_PARAMS
|
|
|
|
def profile_field_params
|
|
allowed_params = ALLOWED_PARAMS
|
|
params.require(:profile_field).permit(allowed_params)
|
|
end
|
|
end
|
|
end
|