Files
old-holivud2/app/controllers/project_memberships_controller.rb
2020-05-31 22:38:19 +02:00

67 lines
1.7 KiB
Ruby

class ProjectMembershipsController < ApplicationController
include ProjectContext
layout "project"
before_action :set_project, except: :destroy
before_action :set_project_membership, only: [:destroy]
def index
@account_managers = @project.account.managers.order(:email)
@project_memberships = project_memberships.order_by_user_role_and_user_email(Current.account)
@project_membership = project_memberships.build
end
def create
@project_membership = build_project_membership(project_membership_params)
if @project_membership.save_and_update_account_membership
flash.notice = t(".notice")
UserMailer.project_invitation(@project_membership.user, @project, user_is_new: @project_membership.new_user?).deliver_later
else
flash.alert = alert_for(@project_membership)
end
redirect_to [@project, :project_memberships]
end
def destroy
@project_membership.destroy
redirect_to [@project_membership.project, :project_memberships], alert: t(".alert")
end
private
def set_project_membership
@project_membership = authorize project_memberships.find(params[:id])
end
def project_memberships
if @project
policy_scope(@project.project_memberships)
else
policy_scope(ProjectMembership)
end
end
def build_project_membership(params = {})
authorize project_memberships.build(params)
end
def project_membership_params
params.require(:project_membership).permit(:user_email)
end
def user_email_param
project_membership_params.fetch(:user_email)
end
def alert_for(project_membership)
if project_membership.errors.any?
project_membership.errors.full_messages.first
else
t(".alert")
end
end
end