class InstitutionsController < ApplicationController
load_and_authorize_resource :only => [:destroy,:edit,:new,:create,:update]
before_filter :authenticate_user!, :except =>
[:student_registration, :show, :validate_registration_pin, :result, :admission, :buy_registration_pin,:paygate_callback_fai
lure, :paygate_cancel, :paygate_pending, :paygate_callback_success, :pin_transaction_info_print]
before_filter :find_institution, :except =>
[:show,:index, :new, :create, :semesters_for_institute_type, :start_end_date_for_assessment_period, :courses_for_batch, :pa
ygate_callback_failure, :paygate_cancel, :paygate_pending, :paygate_callback_success, :pin_transaction_info_print]
before_filter :add_bread_crumb,:except => [:show]
def paygate_callback_success
@pay_gate_config = YAML::load(File.open("#{Rails.root}/config/pay_gate_config.yml"))[Rails.env]
@payment = TransactionRecord.find_by_order_number(params[:OrderID])
uri = URI("https://fidelitypaygate.fidelitybankplc.com/cipg/MerchantServices/UpayTransactionStatus.ashx")
parameters = {:MERCHANT_ID => "#{@pay_gate_config['merchant_id']}", :ORDER_ID => "#{@payment.order_number}"}
uri.query = URI.encode_www_form(parameters)
result =open(uri).read
result_hash = Hash.from_xml(result)
record_payment_details(result_hash)
if result_hash["CIPG"]["StatusCode"] == PaymentRecord::PAYMENT_SUCCESS_CODE
if @payment.transactionable_type.eql?("PaymentRecord")
redirect_to institution_fees_path(@payment.transactionable_type.fee.institution), :notice => "Payment transaction
has been #{result_hash['CIPG']['Status']}"
elsif @payment.transactionable_type.eql?("PinBuyerInfo")
unless @payment.transactionable.pin_id.present?
@registration = @payment.transactionable.registration
@valid_registration_pin_groups = @registration.valid_registration_pin_groups
@online_valid_registration_pin_groups = @valid_registration_pin_groups.where(:pin_available_type => 'Online')
@offline_valid_registration_pin_groups = @valid_registration_pin_groups.where(:pin_available_type => 'Offline')
@available_pin = nil
@online_valid_registration_pin_groups.each do |vpg|
if vpg.available_pins.present?
@available_pin = vpg.available_pins.first
break
else
next
end
end
if !@available_pin.present?
@offline_valid_registration_pin_groups.each do |vpg|
if vpg.available_pins.present?
@available_pin = vpg.available_pins.first
break
else
next