Skip to main content

Scala SDK Samples - Blueprint Operations

Get Blueprint Details
Update Blueprint
              
              
package com.zoho.crm.sample.blueprint

import java.util

import com.zoho.crm.api.blueprint.{APIException, ActionResponse, BluePrint, BluePrintOperations, BodyWrapper, NextTransition, ProcessInfo, ResponseHandler, ResponseWrapper, SuccessResponse, Transition, ValidationError}
import com.zoho.crm.api.fields.AutoNumber
import com.zoho.crm.api.fields.Field
import com.zoho.crm.api.fields.MultiSelectLookup
import com.zoho.crm.api.fields.PickListValue
import com.zoho.crm.api.fields.ToolTip
import com.zoho.crm.api.fields.ViewType
import com.zoho.crm.api.layouts.Layout
import com.zoho.crm.api.record.Record
import com.zoho.crm.api.users.User
import com.zoho.crm.api.util.APIResponse
import com.zoho.crm.api.util.Model

import scala.collection.mutable.Map
import scala.collection.mutable.ArrayBuffer


object BluePrints {
  /**
   *  Update Blueprint 
   * This method is used to update a single record's Blueprint details with ID and print the response.
   *
   * @param moduleAPIName The API Name of the record's module
   * @param recordId      The ID of the record to get Blueprint
   * @param transitionId  The ID of the Blueprint transition Id
   * @throws Exception
   */
  @throws[Exception]
  def updateBlueprint(moduleAPIName: String, recordId: Long, transitionId: Long): Unit = { //ID of the BluePrint to be updated
    //Long transitionId = 3477061173096l
    //Get instance of BluePrintOperations Class that takes moduleAPIName and recordId as parameter
    val bluePrintOperations = new BluePrintOperations(recordId,moduleAPIName)
    //Get instance of BodyWrapper Class that will contain the request body
    val bodyWrapper = new BodyWrapper
    //List of BluePrint instances
    val bluePrintList = new ArrayBuffer[BluePrint]
    //Get instance of BluePrint Class
    val bluePrint = new BluePrint
    //Set transition_id to the BluePrint instance
    bluePrint.setTransitionId(Option(transitionId))
    //Get instance of Record Class
    val data = new Record
    val lookup:Map[String,Any] = Map()
    lookup.put("Phone", "1234567890")

    lookup.put("id", "1234567890")
    //    data.addKeyValue("Lookup_2", lookup)
    data.addKeyValue("Phone", "1234567890")
    data.addKeyValue("Notes", "Updated via blueprint")
    val attachments:Map[String,Any] =Map()
    val fileIds = new ArrayBuffer[String]
    fileIds.addOne("blojtd2d14041a3315e0793fb21ef")
    attachments.put("$file_id", fileIds)
    data.addKeyValue("Attachments", attachments)
    val checkLists = new ArrayBuffer[Map[String,Any]]
    var checkListItem1:Map[String,Any] = Map()
    checkListItem1.put("list 1", true)
    checkLists.addOne(checkListItem1)

    var checkListItem2:Map[String,Any] = Map()
    checkListItem2.put("list 2", true)
    checkLists.addOne(checkListItem2)
    var checkListItem3:Map[String,Any] = Map()

    checkListItem3.put("list 3", true)
    checkLists.addOne(checkListItem3)
    data.addKeyValue("CheckLists", checkLists)
    //Set data to the BluePrint instance
    bluePrint.setData(Option(data))
    //Add BluePrint instance to the list
    bluePrintList.addOne(bluePrint)
    //Set the list to bluePrint in BodyWrapper instance
    bodyWrapper.setBlueprint(bluePrintList)
    //Call updateBluePrint method that takes BodyWrapper instance
    val responseOption = bluePrintOperations.updateBlueprint(bodyWrapper)
    if (responseOption.isDefined) {
      val response = responseOption.get
      println("Status Code: " + response.getStatusCode)
      if (response.isExpected) {
        val actionResponse = response.getObject
        //Check if the request is successful
        if (actionResponse.isInstanceOf[SuccessResponse]) { //Get the received SuccessResponse instance
          val successResponse = actionResponse.asInstanceOf[SuccessResponse]
          println("Status: " + successResponse.getStatus.getValue)
          println("Code: " + successResponse.getCode.getValue)
          println("Details: ")
          if (successResponse.getDetails != null) {
            successResponse.getDetails.foreach(entry=>{
              println(entry._1 + ": " + entry._2)
            })
          }
          println("Message: " + successResponse.getMessage.getValue)
        }
        else if (actionResponse.isInstanceOf[APIException]) {
          val exception = actionResponse.asInstanceOf[APIException]
          println("Status: " + exception.getStatus.getValue)
          println("Code: " + exception.getCode.getValue)
          println("Details: ")
          exception.getDetails.foreach(entry=>{
            println(entry._1 + ": " + entry._2)
            if (entry._2.isInstanceOf[ArrayBuffer[Any]]) {
              @SuppressWarnings(Array("unchecked")) val validationError = entry._2.asInstanceOf[ArrayBuffer[ValidationError]]
              exception.getDetails.foreach(entry=>{
                println(entry._1 + ": " + entry._2)
              })
            }
            else println(entry._2.toString)
          })

          println("Message: " + exception.getMessage.getValue)
        }
      }
      else {
        val responseObject = response.getModel
        val clas = responseObject.getClass
        val fields = clas.getDeclaredFields
        for (field <- fields) {
          println(field.getName + ":" + field.get(responseObject))
        }
      }
    }
  }
}
class BluePrints {}