class Admin::PagesController < Admin::DashboardController
	
	before_action :set_page, only: [:edit, :update, :show, :destroy, :publish, :unpublish, :save_section, :add_section, :edit_section, :update_section]	

	def index
		@pages = Page.paginate(:page => params[:page], :per_page => 10).order(:id => "DESC")
	end

	def new
		@page = Page.new
	end

	def create
		@page = Page.new(page_params)
		respond_to do |format|
			if @page.save
				format.html{ redirect_to admin_page_path(@page), :notice => "New page has been created" }
			else
				format.html{ render :new }
			end
		end
	end

	def show
		
	end

	def edit
		
	end

	def publish
		if @page.update_attributes(:status => "Active")
			flash[:notice] = "Page has been published successfully"
		else
			flash[:notice] = "There was an error in publishing page. Please try again"
		end
		redirect_to admin_page_path(@page)
	end

	def unpublish
		if @page.update_attributes(:status => "Inactive")
			flash[:notice] = "Page has been unpublished successfully"
		else
			flash[:notice] = "There was an error in unpublishing page. Please try again"
		end
		redirect_to admin_page_path(@page)
	end

	def update
		respond_to do |format|
			if @page.update(page_params)
				format.html{ redirect_to admin_page_path(@page), :notice => "Page has been updated" }
			else
				format.html{ render :new }
			end
		end
	end

	def add_section
		@page_element = PageElement.new
	end

	def save_section
		@page_element = PageElement.new(page_element_params)
		@page_element.page_id = @page.id
		respond_to do |format|
			if @page_element.save
				format.html { redirect_to admin_page_path(@page), :notice => "New Section has been added to the page." }
			else
				format.html{ render :add_section }
			end
		end
	end

	def edit_section
		@page_element = PageElement.find(params[:page_element_id])
	end

	def update_section
		@page_element = PageElement.find(params[:page_element_id])
		respond_to do |format|
			if @page_element.update(page_element_params)
				format.html { redirect_to admin_page_path(@page), :notice => "Section has been updated in the page." }
			else
				format.html{ render :add_section }
			end
		end
	end

	def delete_section
		@page_element = PageElement.find(params[:page_element_id])
		if @page_element.destroy
			flash[:notice] = "Page element has been deleted"
		else
			flash[:notice] = "There was an error in deleting page element. Please try again"
		end
		redirect_to admin_page_path(params[:id])
	end

	private

		def set_page
			@page = Page.find(params[:id]) if params[:id]
		end

		def page_params
			params.require(:page).permit(:name, :parent_id, :url, :h1_tag, :meta_title, :meta_description, :og_title, :og_description, :og_image, :key_visual)
		end	

		def page_element_params
			params.require(:page_element).permit(:name, :content)
		end

end