<cfabort>
<!--- Set the function & Fax Service Response Parameters --->
<cfset LOCAL.TheReturnedData                    = "">
<cfset LOCAL.TheValidToken                      = "">
<cfset LOCAL.returnFaxSendResult                = StructNew()>
<cfset LOCAL.returnFaxSendResult.ErrorMessage   = "">
<cfset LOCAL.returnFaxSendResult.ValidFax       = "">
<cfset LOCAL.returnFaxSendResult.FaxProcessTime = "">
<cfset ARGUMENTS.FromFaxNumber = "12074820034" />
<cfparam name="URL.Agency_Login" default="48174">

<cfquery  name="getagency" datasource="#Application.DataSrc#">
    SELECT *, '' as CODING_WIZARD   FROM hhapowerpath.Agency WHERE Agency_Login = '#URL.Agency_Login#'
</cfquery>

<cfif len(getagency.FAX_APINumber) gt 0 AND len(getagency.FAX_userid) gt 0>
        <cfset LOCAL.FromFaxNumber = #getagency.FAX_APINumber# />
        <cfset LOCAL.user_ID = #getagency.FAX_userid# />
        <cfset LOCAL.FAX_ClientID = #getagency.FAX_ClientID# />
        <cfset LOCAL.FAX_ClientSecret = #getagency.FAX_ClientSecret# />
<cfelse>
        <cfset LOCAL.FromFaxNumber = "12074820034" />
        <cfset LOCAL.user_ID = "920bd222-3c5e-4976-b768-e42e69c18281" />
        <cfset LOCAL.FAX_ClientID = "e53f4e48-4995-43b3-b3e0-d4ef2d9247ae" />
        <cfset LOCAL.FAX_ClientSecret =  "rPCENt3yMs3zNV/B" />
</cfif>



<cfset request.oAuthAccessToken = CreateObject("component","components.general.oAuth").GetAccessToken(
                OauthServerCallTimeOuts = '5',
                TheClientID             = #LOCAL.FAX_ClientID#,
                TheClientSecret         =  #LOCAL.FAX_ClientSecret#,
                OauthTokenEndpoint      = 'https://api.securedocex.com/tokens',
                OauthGrantType          =  'client_credentials') >

<!--- ERROR: capture any oAuth service errors --->
<cfif LEN(trim(request.oAuthAccessToken.ErrorMessage)) NEQ 0>
    <cfset LOCAL.returnFaxSendResult.ErrorMessage = request.oAuthAccessToken.ErrorMessage>
</cfif>
<!--- ====================== END: CAPTURING OAUTH SERVICE CALL ===================== ---> 
        
<!--- ====================== BEGIN: Fax SERVICE CALL ===================== ---> 
<!--- if valid access token exists, make Fax service call --->
<cfif LEN(trim(request.oAuthAccessToken.ValidToken)) NEQ 0>
    <cfset LOCAL.ReceivedFaxEndpoint = "https://api.securedocex.com/faxes/received">
    <!--- Make web service call to the REST service to retrieve the Fax --->
    <cfset LOCAL.RestStartTime  = GetTickCount()>
    <cfhttp 
        url         = "#LOCAL.ReceivedFaxEndpoint#"
        method      = "GET" 
        timeout     =  "10"   
        result      = "httpReceiveFaxResponse">
        <cfhttpparam name="Authorization" type="HEADER" value="#request.oAuthAccessToken.ValidToken#">
        <cfhttpparam name="user-id" type="HEADER" value="#LOCAL.User_ID#">
    </cfhttp>
    <cfset LOCAL.RestEndTime = GetTickCount()>
    <cfset LOCAL.returnFaxSendResult.FaxProcessTime = NumberFormat((LOCAL.RestEndTime - LOCAL.RestStartTime)/1000,'__.___')>
    <cfset receivedfaxlist = deserializeJSON(httpReceiveFaxResponse.Filecontent) />
    <cfset receivedfax_list = receivedfaxlist.faxes />
    <cfdump var= "#receivedfax_list#">

    <cfif httpReceiveFaxResponse.responseHeader.Status_Code eq 200>  
        <cfloop from ="1" to ="#arraylen(receivedfax_list)#" index="i">
             <cftry>
                    <cfset  request.fax_id                  =  #receivedfax_list[i].fax_id#>
                    <cfset  request.size                    =  #receivedfax_list[i].size#>
                    <cfset  request.image_downloaded        =  #receivedfax_list[i].image_downloaded#>
                    <cfset  request.fax_status              =  #receivedfax_list[i].fax_status#>
                    <cfset  request.completed_timestamp     =  #receivedfax_list[i].completed_timestamp# >
                    <cfset  request.originating_fax_number  =  #receivedfax_list[i].originating_fax_number# >
                    <cfset  request.originating_fax_tsid    =  #receivedfax_list[i].originating_fax_tsid# >
                    <cfquery  name="getReceivefax" datasource="#Application.DataSrc#">
                        SELECT * FROM #Request.prefix_db_lookup#.Received_faxes 
                        WHERE fax_id= <cfqueryparam value = "#request.fax_id#" CFSQLType ="cf_sql_varchar">
                    </cfquery>
                    <cfif getReceivefax.recordcount EQ 0 >
                        <cfquery  name="Received_faxes_insert" datasource="#Application.DataSrc#">
                            INSERT INTO #Request.prefix_db_lookup#.Received_faxes
                            (
                                fax_id, size, image_downloaded, fax_status, completed_timestamp, originating_fax_number, originating_fax_tsid, 
                                Agency_ID,
                                record_timesatmp
                            ) 
                            VALUES
                            (         
                                <cfqueryparam value = "#request.fax_id#" CFSQLType ="cf_sql_varchar">,
                                <cfqueryparam value = "#request.size#" CFSQLType ="cf_sql_varchar">,
                                <cfqueryparam value="#request.image_downloaded#"  cfsqltype="cf_sql_varchar">,
                                <cfqueryparam value="#request.fax_status#"  cfsqltype="cf_sql_varchar">,
                                <cfqueryparam value = "#request.completed_timestamp#" CFSQLType ="cf_sql_timestamp">,
                                <cfqueryparam value="#request.originating_fax_number#" cfsqltype="cf_sql_varchar">,
                                <cfqueryparam value = "#request.originating_fax_tsid#" CFSQLType ="cf_sql_varchar">,
                                <cfqueryparam value="#getagency.Agency_ID#" cfsqltype="cf_sql_integer">, 
                                <cfqueryparam value="#now()#" cfsqltype="cf_sql_timestamp">
                            )
                        </cfquery> 
                    </cfif> 
                <cfcatch>
                    <!--- ERROR: add general CFCATCH error to error log statement --->
                    <cfset LOCAL.returnFaxSendResult.ErrorMessage =  "FAX Receive all query service: Error when we get response |CFCATCH MESSAGE: #CFCATCH.Message#|CFCATCH DETAIL: #CFCATCH.Detail#|CFC | Fax Number #request.originating_fax_number#">
                    <cfdump var ="#LOCAL.returnFaxSendResult.ErrorMessage#">
                     <cfdump var ="#CFCATCH#">
                </cfcatch>
            </cftry>        
        </cfloop> 
    <cfelse>
         <cfset LOCAL.returnFaxSendResult.ErrorMessage =  "FAX Receive all query service: Error when we get response  status code">
         <cfdump var ="#LOCAL.returnFaxSendResult.ErrorMessage#">
         <cfdump var ="#httpReceiveFaxResponse#">
    </cfif>    
</cfif>
