module Management
  class PersonalProfilesController < ManagementController
    def index
      @conference = find_conference

      # TODO @conference.participants
      @users = User.all
    end

    def toggle_admin
      @conference = find_conference
      @user       = find_profile.user

      @user.toggle_admin!
      redirect_to :back
    end

    def show
      @conference = find_conference
      @profile    = find_profile
      @user       = @profile.user

      if not @profile
        flash[:error] = "No profile, needs to be created"
        redirect_to action: :edit
      end
    end

    def new
      @conference = find_conference
      @profile = @conference.participant_profiles.
        build(user_id: params[:user_id])
    end

    def create
      @conference = find_conference
      @profile = PersonalProfile.new(profile_params)
      @profile.conference = @conference

      if @profile.save
        flash[:notice] = 'Profile was successfully created.'
        redirect_to action: :index
      else
        render action: :new
      end
    end

    def edit
      @conference = find_conference
      @profile    = find_profile
      @user       = @profile.user
    end

    def update
      @conference = find_conference
      @profile    = find_profile

      if @profile.update_attributes(profile_params)
        redirect_to [:management, @conference, @profile]
      else
        render action: 'edit'
      end
    end

    def destroy
      @profile = find_profile
      @profile.destroy

      redirect_to action: :index
    end

    private

    def find_profile
      PersonalProfile.find(params[:id])
    end

    def find_conference
      Conference.find(params[:conference_id])
    end

    def profile_params
      params.require(:personal_profile).permit(
        :picture,
        :first_name,
        :last_name,
        :mobile_phone,
        :biography,
        :organisation,
        :public_email,
        :github,
        :twitter,
        :user_id
      )
    end
  end
end