Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <cfset v_datasource = "EVENT_SCHEDULER"/>
- <cfset v_obj_resmarkcall = createobject("component","ResMarkCall2")/>
- <cfset mail = "jpaz@sanservices.hn">
- <cfset apikey = "b812c4a5-a0d2-4daf-8347-9b9f5ba47eaf">
- <!---<cfif CGI.REMOTE_HOST NEQ "172.16.200.107">--->
- <!---<cfdump var="Task can only be runned by scheduled task"/>--->
- <!---<cfmail from="info@sandals.com" subject="Run Task Intent" to="resmarkrecipient@gmail.com" type="html">--->
- <!---<cfoutput>--->
- <!---<h1>Server: #CGI.REMOTE_HOST#</h1>--->
- <!---</cfoutput>--->
- <!---</cfmail>--->
- <!---<cfabort/>--->
- <!---</cfif>--->
- <cftry>
- <!---Authenticate--->
- <cfset authenticationResponse = v_obj_resmarkcall.Authenticate(mail,apikey)>
- <cfif authenticationResponse.Statuscode neq "200 OK">
- <h4>Failed to Authenticate</h4>
- <cfset sendAuthenticationErrorMail(authenticationResponse,mail)>
- <cfdump var = "#authenticationResponse#" abort = "true">
- </cfif>
- <cfset apiToken = authenticationResponse.filecontent>
- <!---Get Bookings--->
- <h4>Querying Bookings</h4>
- <!---<cfquery name="qry_bookings" datasource="#v_datasource#">--->
- <!---SELECT b.*, a.HAS_BEEN_TRANSFERRED, a.TRANSFERRED_DATE, a.HAS_WS_CALL_ERROR, a.ERROR_MESSAGE, a.RESMARK_RESERVATION_ID--->
- <!---FROM OEE2RESMARK_WS_CALLS a, OEE2RESMARK_WS_CALLS_MV b--->
- <!---WHERE a.OEE2RESMARK_WS_CALL_ID = b.OEE2RESMARK_WS_CALL_ID--->
- <!---AND a.HAS_BEEN_TRANSFERRED = 'NO'--->
- <!---AND a.HAS_WS_CALL_ERROR IS NULL--->
- <!---ORDER BY b.OEE2RESMARK_WS_CALL_ID--->
- <!---</cfquery>--->
- <!---<cfquery name="qry_cancelations" datasource="#v_datasource#">--->
- <!---SELECT b.*, a.HAS_BEEN_CANCELLED, a.CANCELLED_DATE, a.HAS_WS_CALL_ERROR, a.ERROR_MESSAGE, c.RESMARK_RESERVATION_ID--->
- <!---FROM OEE2RESMARK_WS_CANCELS a, OEE2RESMARK_WS_CANCELS_MV b, OEE2RESMARK_WS_CALLS c, OEE2RESMARK_WS_CALLS_MV d--->
- <!---WHERE a.OEE2RESMARK_WS_CANCEL_ID = b.OEE2RESMARK_WS_CANCEL_ID--->
- <!---AND b.resv_event_id = d.resv_event_id--->
- <!---AND c.oee2resmark_ws_call_id = d.oee2resmark_ws_call_id--->
- <!---AND a.HAS_BEEN_CANCELLED = 'NO'--->
- <!---AND nvl(c.RESMARK_RESERVATION_ID,0) != 0--->
- <!---ORDER BY b.OEE2RESMARK_WS_CANCEL_ID--->
- <!---</cfquery>--->
- <cfquery name = "qry_bookings" datasource = "TestScheduler">
- SELECT * FROM Bookings WHERE HAS_BEEN_TRANSFERED = 'NO'
- </cfquery>
- <cfquery name = "qry_cancelations" datasource = "TestScheduler">
- SELECT * FROM CANCELATIONS WHERE HAS_BEEN_CANCELLED = 'NO'
- </cfquery>
- <!---Get All Products in Memory--->
- <cfset productListResponse = v_obj_resmarkcall.getAllProducts(apiToken)>
- <cfif productListResponse.Statuscode neq "200 OK">
- <h4>Failed To Get Products</h4>
- <cfset sendProductRetrievalErrorMail(authenticationResponse,mail)>
- <cfdump var = "#productListResponse#" abort = "true">
- </cfif>
- <cfset productList = "#deserializeJSON(productListResponse.filecontent).data#">
- <!---Send starting mail--->
- <cfmail from="info@sandals.com" to="resmarkrecipient@gmail.com" subject="OEE2RESMARK process started" type="html">
- <h1>Started the process from server:#CGI.REMOTE_HOST#</h1><br>
- <h1>Start time: #now()#</h1>
- <cfdump var="#qry_bookings#"/>
- </cfmail>
- <!---Loop through Bookings--->
- <h4>Looping Activities</h4>
- <cfloop query="qry_bookings">
- <cfset reservation_Details = structNew()>
- <cfset reservation_Details.guestFirstName = qry_bookings.guest_fname>
- <cfset reservation_Details.guestLastName = qry_bookings.guest_lname>
- <cfset reservation_Details.itemName = qry_bookings.event_name>
- <cfset reservation_Details.beginDate = qry_bookings.begin_date>
- <cfset reservation_Details.oeeBookingID = qry_bookings.oee_booking_id>
- <cfset reservation_Details.resv_event_id = qry_bookings.resv_event_id>
- <cfset reservation_Details.adult_qty = qry_bookings.num_adults>
- <cfset reservation_Details.youth_qty = qry_bookings.num_youths>
- <cfset reservation_Details.unit_qty = qry_bookings.num_units>
- <!---Format DATE--->
- <cfset v_begindate_str = "#dateformat(qry_bookings.BEGIN_DATE,'yyyy-mm-dd')# #timeformat(qry_bookings.BEGIN_DATE,'hh:mm:ss')#"/>
- <cfset v_enddate_str = "#dateformat(qry_bookings.END_DATE,'yyyy-mm-dd')# #timeformat(qry_bookings.END_DATE,'hh:mm:ss')#"/>
- <cfoutput>
- <h4>Activity: #qry_bookings.EVENT_NAME# Date: From #v_begindate_str# To #v_enddate_str#</h4>
- <h4>Client: #qry_bookings.GUEST_FNAME# #qry_bookings.GUEST_LNAME#</h4>
- </cfoutput>
- <cfset event_Id = getEventID(qry_bookings.EVENT_NAME)>
- <cfif event_Id LT 0>
- <cfset sendMailError(reservation_Details)>
- <cfcontinue>
- </cfif>
- <cfset eventQuery = getProductsByEventId(event_Id)>
- <!---Get Matching ActivityID --->
- <cfset activityID = v_obj_resmarkcall.SearchActivities(
- p_begin_date = v_begindate_str
- ,p_end_date = v_enddate_str
- ,p_productName = "#qry_bookings.EVENT_NAME#"
- ,p_AuthToken = "#apiToken#"
- ,p_ProductArray = "#productList#"
- ,p_eventQuery = eventQuery)/>
- <cfoutput>
- <h4>Activity ID: #activityID#</h4>
- </cfoutput>
- <cfif activityID neq "-1" and not findNoCase("Error", "#activityID#", 0)>
- <!---Create Cart in Resmark--->
- <h4>Create Cart</h4>
- <cfset createNewCartResponse = v_obj_resmarkcall.createNewCart(apiToken)>
- <cfif createNewCartResponse.Statuscode neq "200 OK">
- <h5 style = "color: red">Error creating Cart</h5>
- <cfdump var = "#createNewCartResponse#">
- <!---<cfset logError(#qry_bookings.OEE2RESMARK_WS_CALL_ID#,"Error creating cart","TestScheduler")>--->
- <cfset logError(#qry_bookings.ID#,"Error creating cart","TestScheduler")>
- <cfcontinue>
- </cfif>
- <cfdump var = "#createNewCartResponse#">
- <cfset cartId = deserializeJSON(createNewCartResponse.filecontent).data.id>
- <!---Create Body to add to cart, using javacast to set null values in the struct that will be serialized to json--->
- <cfset bodyStruct =
- {
- "itemId" = "#activityID#",
- "participants" =
- {
- "All" = #qry_bookings.NUM_ADULTS# + #qry_bookings.NUM_UNITS# + #qry_bookings.NUM_YOUTHS#
- },
- "pickupDetailId" = javaCast( "null", "" ),
- "locationId" = javaCast( "null", "" ),
- "locationOther" = javaCast( "null", "" )
- }/>
- <!---Add Item to cart--->
- <h4>Add Item to Cart</h4>
- <cfset addItemResponse = v_obj_resmarkcall.addItemToCart(apiToken,cartId,bodyStruct)>
- <cfif addItemResponse.Statuscode neq "200 OK">
- <h5 style = "color: red">Error adding item to cart</h5>
- <cfdump var = "#addItemResponse#">
- <cfif addItemResponse.Statuscode eq "400 Bad Request">
- <cfset content = deserializeJSON(addItemResponse.filecontent)>
- <cfif structKeyExists(content,"errorMessage")>
- <cfif content.errorMessage eq "Unable to update ActivityQuantity. Doesn't look like there is any availability!">
- <cfset logError(#qry_bookings.ID#,"no available activity was found","TestScheduler")>
- <cfset sendMailError(reservation_Details)>
- <cfset updateTransfer(0,qry_bookings.ID)>
- <cfcontinue>
- </cfif>
- </cfif>
- </cfif>
- <!---<cfset logError(#qry_bookings.OEE2RESMARK_WS_CALL_ID#,"Error adding item to cart","TestScheduler")>--->
- <cfset logError(#qry_bookings.ID#,"Error adding item to cart","TestScheduler")>
- <cfcontinue>
- </cfif>
- <cfdump var = "#addItemResponse#">
- <!---Creating Struct with customer info--->
- <cfset customerStruct =
- {
- "firstName" = "#qry_bookings.GUEST_FNAME#",
- "lastName" = "#qry_bookings.GUEST_LNAME#"
- } />
- <!---PUT Customer info to cart--->
- <h4>PUT Customer info to cart</h4>
- <cfset updateCustomerResponse = v_obj_resmarkcall.updateCartCustomer(apiToken,cartId,customerStruct)>
- <cfif updateCustomerResponse.Statuscode neq "200 OK">
- <h5 style = "color: red">Error Updating Customer Info</h5>
- <cfdump var = "#updateCustomerResponse#">
- <!---<cfset logError(#qry_bookings.OEE2RESMARK_WS_CALL_ID#,"Error updating customer","TestScheduler")>--->
- <cfset logError(#qry_bookings.ID#,"Error updating customer","TestScheduler")>
- <cfset attemptToCancelCart(apiToken,cartId)>
- <cfcontinue>
- </cfif>
- <cfdump var = "#updateCustomerResponse#">
- <!---Create Struct with payment info--->
- <cfset paymentStruct =
- {
- "id" = "#cartId#",
- "orderId" = javaCast( "null", "" ),
- "billing" =
- {
- "memo" : "Payment received from "&qry_bookings.GUEST_FNAME&" "& qry_bookings.GUEST_LNAME
- }
- }
- />
- <!---Creater Order--->
- <h4>Creater Order</h4>
- <cfset createOderResponse = v_obj_resmarkcall.createOrder(apiToken,paymentStruct)>
- <cfif createOderResponse.Statuscode neq "200 OK">
- <h5 style = "color: red">Error Creating Order</h5>
- <cfdump var = "#createOderResponse#">
- <!---<cfset logError(#qry_bookings.OEE2RESMARK_WS_CALL_ID#,"Error creating order","TestScheduler")>--->
- <cfset logError(#qry_bookings.ID#,"Error creating order","TestScheduler")>
- <cfset attemptToCancelCart(apiToken,cartId)>
- <cfset sendOrderErrorMail(reservation_Details,createOderResponse)>
- <cfcontinue>
- </cfif>
- <cfdump var = "#createOderResponse#">
- <cfset deserialezOrderResponseBody = deserializeJSON(createOderResponse.filecontent)>
- <cfset updateTransfer(deserialezOrderResponseBody.data.confirmation,qry_bookings.ID)>
- <cfelse>
- <cfif activityID eq "-1">
- <!---Send Mail to create it activity manually--->
- <cfset logError(#qry_bookings.ID#,"no available activity was found","TestScheduler")>
- <cfset sendMailError(reservation_Details)>
- <cfset updateTransfer(0,qry_bookings.ID)>
- <cfelse>
- <cfset sendItemRetrievalErrorMail(activityID,reservation_Details,qry_bookings.EVENT_NAME)>
- </cfif>
- </cfif>
- </cfloop>
- <!---Loop to cancel queries--->
- <cfloop query = "qry_cancelations">
- <cfset cancelationResponse = v_obj_resmarkcall.cancelOrder(apiToken,qry_cancelations.resmark_reservation_id)>
- <cfif cancelationResponse.Statuscode eq "200 OK">
- <!---Send success mail--->
- <cfmail from = "info@sandals.com" to = "jpaz@sanservices.hn, rbarahona@sanservices.hn,lbarahona@sanservices.hn,resmarkrecipient@gmail.com" subject = "Resmark reservation cancelled" type = "html">
- The following reservation has been cancelled succesfully in resmark:<br />
- Resmark reservation id: <strong><cfoutput>#qry_cancelations.resmark_reservation_id#</cfoutput></strong>
- </p>
- <p>
- <strong>Note:</strong> This is just a notification, no manual cancelation is necessary for this reservation.
- </p>
- </cfmail>
- <cfelse>
- <!---Send Error mail--->
- <cfmail from = "info@sandals.com" to = "jpaz@sanservices.hn, rbarahona@sanservices.hn,resmarkrecipient@gmail.com" subject = "Resmark Reservation Manual Cancelation Needed" type = "html">
- <p>A problem ocurreed while trying to cancel a reservation.</p>
- <p>The following reservation number must be cancelled in Resmark Client manually:<br />
- Resmark reservation id: <strong><cfoutput>#qry_cancelations.resmark_reservation_id#</cfoutput></strong>
- </p>
- <cfdump var = "#cancelationResponse#"/>
- </cfmail>
- </cfif>
- <cfset setCancelResult(qry_cancelations.oee2resmark_ws_cancel_id, qry_cancelations.resmark_reservation_id)>
- </cfloop>
- <cfcatch type="any">
- <cfmail to="resmarkrecipient@gmail.com" from="info@sandals.com" subject="test cfdump from OEE" type="text/html">
- <cfdump var="#cfcatch#">
- </cfmail>
- <cflog file="[ERROR]MIGRATION_OEE_TO_RESMARK" application="no" text="#cfcatch.Message#">
- </cfcatch>
- </cftry>
- <cffunction name = "logError" access = "public">
- <cfargument name = "bookingID" type = "string" required = "yes">
- <cfargument name = "errorMessage" type = "string" required = "yes">
- <cfargument name = "dataSource" type = "string" required = "yes">
- <cfquery datasource = "#dataSource#">
- UPDATE Bookings
- SET
- HAS_WS_CALL_ERROR = 'YES',
- ERROR_MESSAGE = '#errorMessage#'
- WHERE ID = '#bookingID#'
- </cfquery>
- </cffunction>
- <cffunction name = "sendMailError" access = "public">
- <cfargument name = "reservation_Details" type = "struct" required = "yes">
- <!---TODO CHANGE DATASOURCE--->
- <cfquery name = "detailsToSend" datasource = "TestScheduler">
- SELECT a.resv_event_id, a.resv_no, b.resort, a.oee_booking_id, b.resv_no, b.book_no
- FROM reservation_event a, reservation b
- WHERE a.resv_event_id = #reservation_Details.resv_event_id#
- AND a.resv_no = b.resv_no
- </cfquery>
- <cfmail from = "info@sandals.com" to = "jpaz@sanservices.hn" type = "html" subject = "OEE to Resmark transfer Error ocurred">
- <h1> An Error happened processing Reservation No. #reservation_Details.resv_event_id#</h1>
- Please add this order manually to Resmark system
- <ul>
- <li>Resort: #detailsToSend.resort#</li>
- <li>Event Date: #reservation_Details.beginDate#</li>
- <li>Event Name: #reservation_Details.itemName#</li>
- <li>Guest: #reservation_Details.guestFirstName# #reservation_Details.guestLastName#</li>
- <li>Adult Quantity: #reservation_Details.adult_qty#</li>
- <li>Child Quantity: #reservation_Details.youth_qty#</li>
- <li>Book No. #detailsToSend.book_no#</li>
- <li>Error type: no available activity was found</li>
- </ul>
- <cfdump var = "#reservation_Details#">
- </cfmail>
- </cffunction>
- <cffunction name = "sendAuthenticationErrorMail" access = "public">
- <cfargument name = "serverResponse" required = "yes">
- <cfargument name = "mail" type = "string" required = "yes">
- <cfmail from = "info@sandals.com" to = "jpaz@sanservices.hn" type = "html" subject = "Failed Authentication in OEE to RESMARK process">
- <h2>Failed Authentication</h2>
- <ul>
- <li>There was an error authenticating in the RESMARK server with the account #mail#</li>
- <li>Server Error Type: #serverResponse.Statuscode#</li>
- <li>Time: #NOW()#</li>
- </ul>
- <cfdump var = "#serverResponse#">
- </cfmail>
- </cffunction>
- <cffunction name = "sendProductRetrievalErrorMail" access = "public">
- <cfargument name = "serverResponse" required = "yes">
- <cfargument name = "mail" type = "string" required = "yes">
- <cfmail from = "info@sandals.com" to = "jpaz@sanservices.hn" type = "html" subject = "Failed Authentication in OEE to RESMARK process">
- <h2>Failed Retrieving Products from UVI</h2>
- <ul>
- <li>There was an error retrieving UVI products from the RESKMARK server</li>
- <li>Account: #mail#</li>
- <li>Server Error Type: #serverResponse.Statuscode#</li>
- <li>Time: #NOW()#</li>
- </ul>
- <cfdump var = "#serverResponse#">
- </cfmail>
- </cffunction>
- <cffunction name = "setCancelResult" access = "public">
- <cfargument name = "p_OEE2RESMARK_WS_CANCEL_ID" type = "numeric" required = "yes"/>
- <cfargument name = "p_RESMARK_RESERVATION_ID" type = "string" required = "yes"/>
- <!---<cfquery name="c_qry" datasource="#v_datasource#" maxrows="10">--->
- <!---UPDATE OEE2RESMARK_WS_CANCELS--->
- <!---SET HAS_BEEN_CANCELLED = 'YES',--->
- <!---CANCELLED_DATE = SYSDATE--->
- <!---WHERE OEE2RESMARK_WS_CANCEL_ID = #arguments.p_OEE2RESMARK_WS_CANCEL_ID#--->
- <!---</cfquery>--->
- <cfquery datasource = "TestScheduler">
- UPDATE CANCELATIONS
- SET HAS_BEEN_CANCELLED = 'YES',
- CANCELLED_DATE = #NOW()#
- WHERE OEE2RESMARK_WS_CANCEL_ID = #p_OEE2RESMARK_WS_CANCEL_ID#
- </cfquery>
- </cffunction>
- <cffunction name = "sendItemRetrievalErrorMail" access = "public">
- <cfargument name = "MessageToSend" type = "string" required = "yes">
- <cfargument name = "ReservationDetails" type = "struct" required = "yes">
- <cfargument name = "ProductName" type = "string" required = "yes">
- <cfmail from = "info@sandals.com" to = "jpaz@sanservices.hn" type = "html" subject = "Failed Item Retrieval in OEE to RESMARK process">
- <h2>Failed Retrieving Items from Product: #ProductName#</h2>
- <ul>
- <li>#messagetosend#</li>
- <li>Time: #NOW()#</li>
- </ul>
- <cfdump var = "#ReservationDetails#">
- </cfmail>
- </cffunction>
- <cffunction name = "attemptToCancelCart" access = "public">
- <cfargument name = "AuthorizationToken" type = "string" required = "yes">
- <cfargument name = "CartID" type = "string" required = "yes">
- <cfset cancelCartResponse = v_obj_resmarkcall.cancelCart(AuthorizationToken,CartID)>
- <cfif cancelCartResponse.Statuscode neq "200 OK">
- <cfmail from = "info@sandals.com" to = "jpaz@sanservices.hn" type = "html" subject = "Failed Canceling Cart">
- <h2>Failed Canceling Cart in Resmark</h2>
- <ul>
- <li>There was an error canceling a cart from the RESKMARK server with ID: #CartID#</li>
- <li>Account: #mail#</li>
- <li><p>Please remove the cart manually.</p></li>
- <li>Server Error Type: #cancelCartResponse.Statuscode#</li>
- <li>Time: #NOW()#</li>
- </ul>
- <cfdump var = "#cancelCartResponse#">
- </cfmail>
- <cfoutput>
- <h4>Unable to cancel Cart #CartID#</h4>
- <cfdump var = "#cancelCartResponse#">
- </cfoutput>
- </cfif>
- <cfoutput>
- <h4>Cart #CartID# was canceled</h4>
- </cfoutput>
- </cffunction>
- <cffunction name = "updateTransfer">
- <cfargument name = "ResmarkID" type = "numeric" required = "yes">
- <cfargument name = "BookingID" type = "string" required = "yes">
- <cfquery datasource = "TestScheduler">
- UPDATE Bookings
- SET
- HAS_BEEN_TRANSFERED = 'YES',
- TRANSFERRED_DATE = SYSDATE(),
- RESMARK_RESERVATION_ID = '#resmarkid#'
- WHERE ID = #BookingID#
- </cfquery>
- </cffunction>
- <cffunction name = "sendOrderErrorMail" access = "public">
- <cfargument name = "reservation_Details" type = "struct" required = "yes">
- <cfargument name = "ErrorDetail" required = "yes">
- <!---TODO CHANGE DATASOURCE--->
- <cfquery name = "detailsToSend" datasource = "TestScheduler">
- SELECT a.resv_event_id, a.resv_no, b.resort, a.oee_booking_id, b.resv_no, b.book_no
- FROM reservation_event a, reservation b
- WHERE a.resv_event_id = #reservation_Details.resv_event_id#
- AND a.resv_no = b.resv_no
- </cfquery>
- <cfmail from = "info@sandals.com" to = "jpaz@sanservices.hn" type = "html" subject = "OEE to Resmark transfer Error ocurred">
- <h1> An Error happened creating the order for Reservation No. #reservation_Details.resv_event_id#</h1>
- Please add this order manually to Resmark system
- <ul>
- <li>Resort: #detailsToSend.resort#</li>
- <li>Event Date: #reservation_Details.beginDate#</li>
- <li>Event Name: #reservation_Details.itemName#</li>
- <li>Guest: #reservation_Details.guestFirstName# #reservation_Details.guestLastName#</li>
- <li>Adult Quantity: #reservation_Details.adult_qty#</li>
- <li>Child Quantity: #reservation_Details.youth_qty#</li>
- <li>Book No. #detailsToSend.book_no#</li>
- <li>Error type: server error</li>
- </ul>
- <cfdump var = "#reservation_Details#">
- <cfdump var = "#ErrorDetail#">
- </cfmail>
- </cffunction>
- <cffunction name = "getEventID" access = "public" returntype = "numeric">
- <cfargument name = "p_ProductName" type = "string" required = "yes">
- <cfquery name = "result" datasource = "TestScheduler">
- SELECT EVENT_ID FROM EVENT_mv WHERE NAME = '#p_ProductName#';
- </cfquery>
- <cfoutput>
- <cfreturn result.EVENT_ID>
- </cfoutput>
- <cfreturn -1>
- </cffunction>
- <cffunction name = "getProductsByEventId" access = "public" returntype = "query">
- <cfargument name = "EventId" type = "numeric" required = "yes">
- <cfquery name = "result" datasource = "TestScheduler">
- SELECT RESMARK_ACTIVITY_ID, NAME, RESMARK_LOCATION_ID FROM RESMARK_ACTIVITIES WHERE EVENT_ID = #EventId#
- </cfquery>
- <cfreturn result>
- </cffunction>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement