summaryrefslogtreecommitdiff
path: root/app/controllers/phone_sip_accounts_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/phone_sip_accounts_controller.rb')
-rw-r--r--app/controllers/phone_sip_accounts_controller.rb60
1 files changed, 60 insertions, 0 deletions
diff --git a/app/controllers/phone_sip_accounts_controller.rb b/app/controllers/phone_sip_accounts_controller.rb
new file mode 100644
index 0000000..8558c55
--- /dev/null
+++ b/app/controllers/phone_sip_accounts_controller.rb
@@ -0,0 +1,60 @@
+class PhoneSipAccountsController < ApplicationController
+ load_and_authorize_resource :phone
+ load_and_authorize_resource :phone_sip_account, :through => [:phone]
+
+ before_filter :spread_breadcrumbs
+
+ def index
+ end
+
+ def show
+ end
+
+ def new
+ @available_sip_accounts = @phone.phoneable.sip_accounts
+
+ # Ensure a SipAccount is used on a single phone only.
+ #
+ @available_sip_accounts = @available_sip_accounts.delete_if { |x| x.phone_sip_account_ids.count > 0 }
+
+ if @available_sip_accounts.count == 0
+ redirect_to method( :"new_#{@phone.phoneable.class.name.underscore}_sip_account_path" ).(@phone.phoneable), :alert => t('phone_sip_accounts.controller.no_existing_sip_accounts_warning')
+ else
+ @phone_sip_account = @phone.phone_sip_accounts.build(:sip_account_id => @available_sip_accounts.first.try(:id))
+ end
+ end
+
+ def create
+ @phone_sip_account = @phone.phone_sip_accounts.build(params[:phone_sip_account])
+ if @phone_sip_account.save
+ redirect_to method( :"#{@phone_sip_account.phone.phoneable.class.name.underscore}_phone_path" ).(@phone_sip_account.phone.phoneable, @phone_sip_account.phone), :notice => t('phone_sip_accounts.controller.successfuly_created')
+ else
+ render :new
+ end
+ end
+
+ def destroy
+ @phone_sip_account.destroy
+ redirect_to method( :"#{@phone_sip_account.phone.phoneable.class.name.underscore}_phone_path" ).(@phone_sip_account.phone.phoneable, @phone_sip_account.phone), :notice => t('phone_sip_accounts.controller.successfuly_destroyed')
+ end
+
+ private
+
+ def spread_breadcrumbs
+ if @phone.phoneable.class == User
+ user = @phone.phoneable
+ add_breadcrumb t('users.index.page_title'), tenant_users_path(user.current_tenant)
+ add_breadcrumb user, tenant_user_path(user.current_tenant, user)
+ add_breadcrumb t('phones.index.page_title'), user_phones_path(user)
+ elsif @phone.phoneable.class == Tenant
+ tenant = @phone.phoneable
+ add_breadcrumb t('phones.index.page_title'), tenant_phones_path(tenant)
+ end
+ add_breadcrumb @phone, method( :"#{@phone.phoneable.class.name.underscore}_phone_path" ).(@phone.phoneable, @phone)
+ add_breadcrumb t('phone_sip_accounts.index.page_title'), phone_phone_sip_accounts_path(@phone)
+ if @phone_sip_account && !@phone_sip_account.new_record?
+ add_breadcrumb @phone_sip_account, phone_phone_sip_account_path(@phone, @phone_sip_account)
+ end
+ end
+
+end