require_dependency "phcmemberspro/application_controller"

module Phcmemberspro
	class Member::AddressesController < ApplicationController

		# Security & Action Filters
		before_action :require_user
		before_action :membership_info
		before_action :set_paper_trail_whodunnit
		before_action :get_member_profile_info
		before_action :set_member_address, only: [:show, :edit, :update, :destroy]

		# INDEX - Directory Listings
		def index
			profile = Member::Profile.find(params[:profile_id])
			@member_addresses = profile.addresses.where(oganization_id: membership_info.org_id)
		end

		# LISTINGS DETAILS - Directory Listings
		def show
			profile = Member::Profile.find(params[:profile_id])
			@member_address = profile.addresses.find(params[:id])
			@versions = PaperTrail::Version.where(item_id: params[:id], item_type: 'Phcmemberspro::Member::Address')
		end

		# NEW - Directory Listings
		def new
			profile = Member::Profile.find(params[:profile_id])
			@member_address = profile.addresses.build
		end

		# EDIT - Directory Listings
		def edit
		end

		# POST - Directory Listings
		def create
			@profile = Member::Profile.find(params[:profile_id])
			@member_address = @profile.addresses.create(member_address_params)
			@member_address.user_id = current_user.id
			@member_address.user_name = current_user.username
			@member_address.membership_id = membership_info.id
			@member_address.oganization_id = membership_info.org_id
			if @member_address.save
				redirect_to member_profile_addresses_url, notice: 'Listing was successfully created.'
				else
					render :new
			end
		end

		# PATCH/PUT - Directory Listings
		def update
			@member_address.user_id = current_user.id
			@member_address.user_name = current_user.username
			@member_address.membership_id = membership_info.id
			@member_address.oganization_id = membership_info.org_id
			if @member_address.update(member_address_params)
				redirect_to member_profile_addresses_url, notice: 'Listing was successfully updated.'
				else
					render :edit
			end
		end

		# DELETE - Directory Listings
		def destroy
			@profile = Member::Profile.find(params[:profile_id])
			@member_address = @profile.addresses.find(params[:id])
			@member_address.destroy
			redirect_to member_profile_addresses_url, notice: 'Listing was successfully destroyed.'
		end

		private

		# Common Callbacks
		def set_member_address
			@member_address = Member::Address.find(params[:id])
		end

		# Whitelist
		def member_address_params
			params.require(:member_address).permit(:mcaddressl1, :mcaddressl2, :mccity, :mcprovince, :mccountry, :mcpostalcode, :mctype, :user_name, :profile_id, :user_id, :membership_id, :oganization_id)
		end

	end
end