<cfcomponent extends="components.common.formObject">
	<cfset variables.idCapitalParticipant=0>
	<cfset variables.idCapital=0>
	<cfset variables.capital="">
	<cfset variables.name="">
	<cfset variables.accountNumber="">
	<cfset variables.contactName="">
	<cfset variables.phone="">
	<cfset module.list.orderBy="name">
	
	<cffunction name="init" access="public" output="false">
		<cfset variables.idCapitalParticipant=0>
		<cfset variables.idCapital=0>
		<cfset variables.capital="">
		<cfset variables.name="">
		<cfset variables.accountNumber="">
		<cfset variables.contactName="">
		<cfset variables.phone="">
	</cffunction>
	
	<cffunction name="getFormObjectId" access="public" output="false" returntype="numeric">
		<cfreturn getIdCapitalParticipant()>
	</cffunction>
	
	<cffunction name="setFormObjectId" access="public" output="false">
		<cfargument name="objectId" type="numeric" required="yes">
		<cfset setIdCapitalParticipant(arguments.objectId)>
	</cffunction>

	<cffunction name="setIdCapitalParticipant" access="public" output="false">
		<cfargument name="idCapitalParticipant" type="numeric" required="yes" default="0">
		<cfset variables.idCapitalParticipant=arguments.idCapitalParticipant>
	</cffunction>

	<cffunction name="getIdCapitalParticipant" access="public" returntype="numeric" output="false">
		<cfreturn variables.idCapitalParticipant>
	</cffunction>

	<cffunction name="setIdCapital" access="public" output="false">
		<cfargument name="idCapital" type="numeric" required="yes" default="0">
		<cfset variables.idCapital=arguments.idCapital>
	</cffunction>

	<cffunction name="getIdCapital" access="public" returntype="numeric" output="false">
		<cfreturn variables.idCapital>
	</cffunction>
	
	<cffunction name="getCapital" access="public" returntype="components.corporate.capital" output="false">
		<cfif not IsObject("variables.capital")><cfset variables.capital=CreateObject("component", "components.corporate.capital")></cfif>
		<cfif (Compare(module.form.pageAction, "add") and not variables.capital.isRetrievedFromDB()) or variables.capital.getIdCapital() neq variables.idCapital>
			<cfset variables.capital=CreateObject("component", "components.corporate.capital")>
			<cfset variables.capital.setIdCapital(variables.idCapital)>
			<cfset variables.capital.get()>
		</cfif>
		<cfreturn variables.capital>
	</cffunction>
	
	<cffunction name="setName" access="public" output="false">
		<cfargument name="name" type="string" required="yes" default="">
		<cfset variables.name=arguments.name>
	</cffunction>

	<cffunction name="getName" access="public" returntype="string" output="false">
		<cfreturn variables.name>
	</cffunction>

	<cffunction name="setAccountNumber" access="public" output="false">
		<cfargument name="accountNumber" type="string" required="yes" default="">
		<cfset variables.accountNumber=arguments.accountNumber>
	</cffunction>

	<cffunction name="getAccountNumber" access="public" returntype="string" output="false">
		<cfreturn variables.accountNumber>
	</cffunction>

	<cffunction name="setContactName" access="public" output="false">
		<cfargument name="contactName" type="string" required="yes" default="">
		<cfset variables.contactName=arguments.contactName>
	</cffunction>

	<cffunction name="getContactName" access="public" returntype="string" output="false">
		<cfreturn variables.contactName>
	</cffunction>

	<cffunction name="setPhone" access="public" output="false">
		<cfargument name="phone" type="string" required="yes" default="">
		<cfset variables.phone=arguments.phone>
	</cffunction>

	<cffunction name="getPhone" access="public" returntype="string" output="false">
		<cfreturn variables.phone>
	</cffunction>

	<cffunction name="setVariablesFromQuery" access="private" output="false">
		<cfargument name="getQuery" type="query" required="yes">
		<cfif getQuery.recordcount gt 0>
			<cfset variables.idCapitalParticipant=getQuery.idCapitalParticipant>
			<cfif Len(getQuery.idCapital)><cfset variables.idCapital=getQuery.idCapital><cfelse><cfset variables.idCapital=0></cfif>
			<cfset variables.name=getQuery.name>
			<cfset variables.accountNumber=getQuery.accountNumber>
			<cfset variables.contactName=getQuery.contactName>
			<cfset variables.phone=getQuery.phone>
		</cfif>
	</cffunction>

	<cffunction name="get" access="public" output="false">
		<cfquery name="getQuery" datasource="#application.datasource#">
			SELECT 
				#getQueryString()#
			WHERE
				capitalParticipant.idCapitalParticipant=<cfqueryparam value="#variables.idCapitalParticipant#" cfsqltype="cf_sql_integer">
		</cfquery>
		<cfif getQuery.recordcount gt 0>
			<cfset setVariablesFromQuery(getQuery)>
		</cfif>
		<cfset module.retrievedFromDB=true>
	</cffunction>

	<cffunction name="getList" access="public" output="false" returntype="query">
		<cfargument name="orderBy" required="no" type="string" default="">
		<cfquery name="getListQuery" datasource="#application.datasource#">
			SELECT 
				#getQueryString()#
			ORDER BY <cfif Len(arguments.orderBy)>#URLDecode(arguments.orderBy)#<cfelse>#URLDecode(module.list.orderBy)#</cfif>
		</cfquery>
		<cfreturn getListQuery>
	</cffunction>
	
	<cffunction name="getQueryString" access="private" output="false" returntype="string">
		<cfset var result="
				capitalParticipant.idCapitalParticipant,
				capitalParticipant.idCapital, capital.name AS capital,
				capitalParticipant.name,
				capitalParticipant.accountNumber,
				capitalParticipant.contactName,
				capitalParticipant.phone
			FROM 
				capitalParticipant
			LEFT JOIN capital ON capitalParticipant.idCapital=capital.idCapital
			">
		<cfreturn result>
	</cffunction>

	<cffunction name="createOptions" access="public" returntype="numeric" output="true">
		<cfargument name="selected" required="yes" type="numeric" default="0">
		<cfset var list=getList("capitalParticipant.name")>
		<cfset var result=0>
		<cfif list.idCapitalParticipant gt 0><cfset result=list.idCapitalParticipant></cfif>
		<cfloop query="list">
			<cfif list.idCapitalParticipant eq arguments.selected><cfset _selected=" selected"><cfset result=list.idCapitalParticipant><cfelse><cfset _selected=""></cfif>
			<cfoutput><option value="#list.idCapitalParticipant#"#_selected#>#list.name#</option></cfoutput>
		</cfloop>
		<cfreturn result>
	</cffunction>
	
	<cffunction name="getId" access="public" returntype="struct" output="false">
		<cfset var result=StructNew()>
		<cfset result.id=0>
		<cfset result.message="">
		<cfquery name="getIdQuery" datasource="#application.datasource#">
			SELECT 
				idCapitalParticipant 
			FROM 
				capitalParticipant 
			WHERE 
				1=1
				<cfif variables.idCapital gt 0>
					AND idCapital=<cfqueryparam value="#variables.idCapital#" cfsqltype="cf_sql_integer">
				<cfelse>
					AND name=<cfqueryparam value="#variables.name#" cfsqltype="cf_sql_varchar" maxlength="255">
					AND idCapital IS NULL
				</cfif>
				<cfif variables.idCapitalParticipant gt 0>
				AND idCapitalParticipant != <cfqueryparam value="#variables.idCapitalParticipant#" cfsqltype="cf_sql_integer">
				</cfif>
		</cfquery>
		<cfif getIdQuery.recordcount gt 0>
			<cfset result.id=getIdQuery.idCapitalParticipant>
		</cfif>
		<cfreturn result>
	</cffunction>
	
	<cffunction name="create" access="public" returntype="struct" output="false">
		<cfset var result=StructNew()>
		<cfset result.id=0>
		<cfset result.message="">
		<!--- check parameters --->
		<cfif not Len(variables.name) and variables.idCapital lt 1>
			<cfset result.message="Nombre es un campo obligatorio">
			<cfreturn result>
		</cfif>
		<cfset result=getId()>
		<cfif result.id gt 0>
			<cfset result.message="Participante con esos datos ya existe">
			<cfreturn result>
		</cfif>
		<!--- variables ok --->
		<cfif variables.idCapital gt 0>
			<cfset variables.name=getCapital().getName()>
		</cfif>
		<cftry>
			<cfquery name="createQuery" datasource="#application.datasource#">
				INSERT INTO capitalParticipant
					(
					idCapitalParticipant, 
					idCapital, 
					name,
					accountNumber,
					contactName,
					phone
					) 
				VALUES 
					(
					<cfqueryparam value="#variables.idCapitalParticipant#" cfsqltype="cf_sql_integer">, 
					<cfif variables.idCapital gt 0><cfqueryparam value="#variables.idCapital#" cfsqltype="cf_sql_integer"><cfelse>NULL</cfif>, 
					<cfqueryparam value="#variables.name#" cfsqltype="cf_sql_varchar" maxlength="255">,
					<cfqueryparam value="#variables.accountNumber#" cfsqltype="cf_sql_varchar" maxlength="255">,
					<cfqueryparam value="#variables.contactName#" cfsqltype="cf_sql_varchar" maxlength="255">,
					<cfqueryparam value="#variables.phone#" cfsqltype="cf_sql_varchar" maxlength="255">
					)
			</cfquery>
			<cfset result=getId()>
			<cfset variables.idCapitalParticipant=result.id>
			<!--- catch any error --->
			<cfcatch type="any">
				<cfset result.id=-1>
				<cfset result.message="Error [capitalParticipant.create()]: " & cfcatch.Message & "<br>Details: " & cfcatch.Detail>
			</cfcatch>
		</cftry>
		<cfreturn result>
	</cffunction>

	<cffunction name="update" access="public" returntype="struct" output="false">
		<cfset var result=StructNew()>
		<cfset result.id=0>
		<cfset result.message="">
		<!--- check parameters --->
		<cfif not Len(variables.name) and variables.idCapital lt 1>
			<cfset result.message="Nombre es un campo obligatorio">
			<cfreturn result>
		</cfif>
		<cfset result=getId()>
		<cfif result.id gt 0>
			<cfset result.message="Participante con esos datos ya existe">
			<cfreturn result>
		</cfif>
		<!--- variables ok --->
		<cfif variables.idCapital gt 0>
			<cfset variables.name=getCapital().getName()>
		</cfif>
		<cftry>
			<cfquery name="updateQuery" datasource="#application.datasource#">
				UPDATE capitalParticipant
				SET 
					idCapital=<cfif variables.idCapital gt 0><cfqueryparam value="#variables.idCapital#" cfsqltype="cf_sql_integer"><cfelse>NULL</cfif>, 
					name=<cfqueryparam value="#variables.name#" cfsqltype="cf_sql_varchar" maxlength="255">,
					accountNumber=<cfqueryparam value="#variables.accountNumber#" cfsqltype="cf_sql_varchar" maxlength="255">,
					contactName=<cfqueryparam value="#variables.contactName#" cfsqltype="cf_sql_varchar" maxlength="255">,
					phone=<cfqueryparam value="#variables.phone#" cfsqltype="cf_sql_varchar" maxlength="255">
				WHERE 
					idCapitalParticipant=<cfqueryparam value="#variables.idCapitalParticipant#" cfsqltype="cf_sql_integer">
			</cfquery>
			<cfset result.id=variables.idCapitalParticipant>
			<!--- catch any error --->
			<cfcatch type="any">
				<cfset result.id=-1>
				<cfset result.message="Error [capitalParticipant.update()]: " & cfcatch.Message & "<br>Details: " & cfcatch.Detail>
			</cfcatch>
		</cftry>
		<cfreturn result>
	</cffunction>

	<cffunction name="delete" access="public" returntype="struct" output="false">
		<cfset var result=StructNew()>
		<cfset result.id=0>
		<cfset result.message="">
		<!--- check parameters --->
		<cftry>
			<cfquery name="deleteQuery" datasource="#application.datasource#">
				DELETE FROM capitalParticipant
				WHERE 
					idCapitalParticipant=<cfqueryparam value="#variables.idCapitalParticipant#" cfsqltype="cf_sql_integer">
			</cfquery>
			<cfset result.id=0>
			<cfset init()>
			<!--- catch any error --->
			<cfcatch type="any">
				<cfset result.id=-1>
				<cfset result.message="Error [capitalParticipant.delete()]: " & cfcatch.Message & "<br>Details: " & cfcatch.Detail>
			</cfcatch>
		</cftry>
		<cfreturn result>
	</cffunction>
</cfcomponent>