metamaps--metamaps/app/controllers/people_controller.rb
2012-10-08 23:18:00 -04:00

119 lines
2.6 KiB
Ruby

class PeopleController < ApplicationController
before_filter :require_user, only: [:new, :create, :edit, :update]
respond_to :html, :js, :json
# GET /people
def index
@user = current_user
@people = Person.all
respond_with(@people)
end
# Get /people/new
def new
@person = Person.new
@user = current_user
respond_with(@person)
end
# GET /people/:id
def show
@person = Person.find(params[:id])
@gparents = @person.groups
@relatives = @person.as_json.html_safe
@ichildren = @person.items
respond_to do |format|
format.html { respond_with(@person, @gparents, @ichildren) }
format.json { respond_with(@relatives) }
end
end
# POST /people
def create
@user = current_user
@person = Person.new()
@person.name = params[:person][:name]
@person.desc = params[:person][:desc]
@person.link = params[:person][:link]
@person.city = params[:person][:city]
@person.province = params[:person][:province]
@person.country = params[:person][:country]
@person.user = @user
@person.save
if params[:ingroups]
@groups = Group.find(params[:ingroups])
@groups.each do |g|
belongs = Groupperson.new
belongs.group_id = g.id
belongs.person_id = @person.id
belongs.save!
end
end
respond_to do |format|
format.html { respond_with(@user, location: restore(default: person_url(@person))) }
format.js { respond_with(@person) }
end
end
# GET /people/:id/edit
def edit
@person = Person.find_by_id(params[:id])
@ingroups = @person.groups
if @ingroups.count > 0
@outgroups = Group.find(:all, :conditions => ['id not in (?)', @ingroups.map(&:id)])
else
@outgroups = Group.all
end
respond_with(@person, @ingroups, @outgroups)
end
# PUT /people/:id
def update
@user = current_user
@person = Person.find_by_id(params[:id])
@person.attributes = params[:person] if @person
@person.save if @person
if params[:ingroups]
@ingroups = params[:ingroups]
@ingroups.each do |g|
@connection = Groupperson.where("group_id = ? AND person_id = ?", g, @person.id).first
@connection.delete
end
end
if params[:outgroups]
@outgroups = params[:outgroups]
@outgroups.each do |g|
belongs = Groupperson.new
belongs.group_id = g
belongs.person_id = @person.id
belongs.save!
end
end
respond_with(@user, location: restore(default: person_url(@person))) do |format|
end
end
# DELETE /people/:id
def destroy
@person = Person.find_by_id(params[:id])
@person.delete
end
end