#INCLUDE "protheus.ch" #INCLUDE "RESTFUL.CH" WSRESTFUL Contratos DESCRIPTION 'Gestão de Contratos' FORMAT APPLICATION_JSON WSMETHOD GET V1 DESCRIPTION "Busca os dados do contrato" PATH "/v1/{Contrato}/{Revisa}" WSSYNTAX "/v1/{Contrato}/{Revisa}" TTALK "V1"// tenho que incluir numero do contrato como parametro WSMETHOD GET V2 DESCRIPTION "Busca os dados do contrato com itens" PATH "/v2/{Contrato}/{Revisa}" WSSYNTAX "/v2/{Contrato}/{Revisa}" TTALK "V2" END WSRESTFUL //BUSCA DADOS DO CONTRATO WSMETHOD GET V1 WSSERVICE Contratos Local lRet :=.T. // Retorno deve sempre ser lógico onde .T. signfica sucesso na requisição Local cNumCont := self.UrlParms[2] // Leitura do primeiro parâmetro da URL Local cNumContra := self.UrlParms[3]//Leitura do segundo parâmetro da Url Local oJsonRet := JsonObject():New() // Json de retorno DbselectArea ('CN9') CN9-> (DbsetOrder(1))//Irá utilizar o primeiro índice da tabela If CN9-> (DbSeek(cNumCont+cNumContra)) oJsonRet['code'] := 200 oJsonRet['message'] :='Contrato encontrado com sucesso' lRet := .T. self:SetResponse(oJsonRet:toJson()) Else lRet:=.F. SetRestFault(1,; "Contrato não encontrado",; .T.,; 400,; "Informe um tipo de contrato existente no Protheus") EndIF Return lRet WSMETHOD GET V2 WSSERVICE Contratos Local lRet :=.T. //Retorno deve ser sempre lógico onde .T. significa sucesso na requisição Local cNumCont :=self:UrlParms[2]//Leitura do Primeiro Parâmetro Local cNumContra := self:UrlParms[3]//Leitura do segundo parâmetro da Url Local oJsonRet :=JsonObject():New()//Json de Retorno Local oJsonItem :=Nil Local aItens :={} DbSelectArea('CN9') CN9->(DbsetOrder(1)) If CN9->(DbSeek(cNumCont+cNumContra)) oJsonRet['numero contato'] :=CN9->CN9_NUMERO oJsonRet['revisao']:=CN9->CN9_REVISA DbselectArea ('CNA') CNA->(DbsetOrder(1)) If CNA->(DbSeek(cNumCont+cNumContra)) While CNA->CNA_CONTRA == cNumCont .And. CNA->CNA_REVISA == cNumContra .And. CNA->(!Eof()) oJsonItem := JsonObject():New() oJsonItem['cod. cliente'] := CNA->CNA_CLIENT oJsonItem['loja'] := CNA->CNA_LOJACL AAdd(aItens,oJsonItem) FreeObj(oJsonItem) CNA->(Dbskip()) EndDo oJsonItem['items'] := aItens lRet := .T. self:SetResponse (oJsonRet:toJson()) Else lRet := .F. SetRestFault(1,; "Contrato não encontrado",; .T.,; 400,; "Falha na Busca pelos contratos") EndIf EndIf Return (lRet)