<cfcomponent displayname="Permissions Functions" hint="I Return Employee permissions Information" output="false">

<cffunction name="init" displayname="Initialize Component" access="public" returntype="permission" hint="I initialize and return the Permission object.">
		<cfreturn this>
	</cffunction>

<cffunction name="getpermission_ques" returntype="query" access="remote" output="false" hint="Return the questions.">
		<cfargument required="yes" type="string" name="page">	
		<cftry>
			 <cfquery name="perm_ques" datasource="#Application.DataSrc#">
					SELECT *,permissions_answer_lookup.id as ans_id FROM  #Request.prefix_db_lookup#.permissions_questions_lookup
					JOIN #Request.prefix_db_lookup#.permissions_answer_lookup ON permissions_answer_lookup.question_id  = permissions_questions_lookup.id
					  WHERE permissions_questions_lookup.Deleted <> 1  
					   AND permissions_answer_lookup.Deleted <> 1 
					   AND permissions_questions_lookup.page = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.page#">
					   ORDER BY permissions_questions_lookup.order_id ASC
				</cfquery>
			<cfcatch type="any">		
			</cfcatch>	
		</cftry>		
		<cfreturn perm_ques>
	</cffunction>

	   <cffunction name="get_all_answers"  access="remote" output="Yes" httpmethod="GET" returnformat="JSON">
			 	<cfargument required="yes" type="string" name="page">	
		   <cftry>
			 <cfquery name="get_label" datasource="#Application.DataSrc#">
					SELECT *,permissions_answer_lookup.id as ans_id FROM  #Request.prefix_db_lookup#.permissions_questions_lookup
					JOIN #Request.prefix_db_lookup#.permissions_answer_lookup ON permissions_answer_lookup.question_id  = permissions_questions_lookup.id
					  WHERE permissions_questions_lookup.Deleted <> 1  
					   AND permissions_answer_lookup.Deleted <> 1 
					   AND permissions_questions_lookup.page = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.page#">
					   ORDER BY permissions_questions_lookup.order_id,permissions_answer_lookup.id ASC
				</cfquery>
			     <cfset label_name = '' >
				 <cfset responsekey=[] />
				 <cfoutput query="get_label" group="answer_label">
					 <cfset obj={"label_name"=#answer_label# ,"answer_type" = #answer_type#,"important" = #important#,"questions" = #questions#,
					 "alert_message" = #alert_message# }  />
	                  <cfset arrayAppend(responsekey, obj) />
				 </cfoutput>
				 <cfset response={"answer_labels"= #responsekey#} />
				 <cfcatch type="any">		
		         </cfcatch>	
		   </cftry>	
	     <cfreturn response />
    </cffunction>
  
  <cffunction name="getpermission" returntype="any" access="public" output="false" hint="Return the employee permissions.">
		<cfargument required="yes" type="numeric" name="Emp_ID" displayname="Emp_ID" />
		<cfargument required="NO" type="numeric" name="Loc_ID" default ="#client.Loc_ID#" displayname="Loc_ID" />
		<cftry>
			 <cfquery name="get_perm" datasource="#Application.DataSrc#">
					SELECT * FROM  #Request.prefix_db_lookup#.permissions
					WHERE Emp_ID = <cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.Emp_ID#">
					 AND Loc_ID = <cfqueryparam VALUE="#arguments.Loc_ID#"  cfsqltype="cf_sql_integer"> 
				</cfquery>
			<cfcatch type="any">		
			</cfcatch>	
		</cftry>		
		<cfreturn get_perm>
	</cffunction>

	 <cffunction name="permission_insert"   access="remote" returnFormat= "JSON" >
	           <cfargument name="questions" required="yes" hint="all Questions">
	           <cfargument name="answers" required="yes" hint="all answers">
			   <cfargument name="Emp_ID" required="yes" hint="Emp ID">
			   <cfargument required="NO" type="numeric" name="Loc_ID" default ="#client.Loc_ID#" displayname="Loc_ID" />
			   <cftry>
			    <cfset count = 0 >
			   
			     <cfif isdefined('client.Emp_ID')>
			          <cfquery  name="Insert_permission_emp" datasource="#Application.DataSrc#">
									  INSERT INTO #Request.prefix_db_lookup#.permissions 
									  (Emp_ID,Loc_ID,#questions#)
									  VALUES (#arguments.Emp_ID#,#arguments.Loc_ID#,#answers#) 
                        </cfquery>
                   </cfif>
			      <cfset response_key={"statusCode"= 200,"statusText"= 'success',"data"= #count# } />
			
			<cfcatch type="any">
			     <cfset response_key={"statusCode"= 200,"statusText"= 'failure',"data"= #count# } />		
			</cfcatch>	
		</cftry>
		<cfreturn  response_key >		
</cffunction>

</cfcomponent>