Files
MBS/WEBSERVICES/oportunidades.4gl

169 lines
5.0 KiB
Plaintext

IMPORT util
IMPORT security
IMPORT os
FUNCTION oportunidades(d)
DEFINE d,archivo STRING,
arc_recibido BYTE,
id_op INT,
select1,mensaje STRING,
purl VARCHAR(200)
DEFINE o RECORD
oportunidad RECORD
lead_id INT,
tema varchar(100) ,
dir varchar(100) ,
tel varchar(20) ,
email_u varchar(50) ,
email_a varchar(50),
lati FLOAT ,
longi FLOAT,
contacto VARCHAR(100),
contenido STRING,
imagen VARCHAR(100)
END RECORD,
oportunidad_detalle DYNAMIC ARRAY OF RECORD
id INT,
codn SMALLINT,
descripcion STRING
END RECORD
END RECORD,
r RECORD
ERROR STRING
END RECORD,
idx INT,
ruta_file,cmd string
TRY
CALL util.JSON.parse(d, o)
CATCH
CALL fgl_Winmessage(" ","Error conexion"," ")
LET r.ERROR = "NO EXITOSO:",STATUS,SQLCA.sqlerrm
END TRY
LET select1 =
"SELECT MAX(a.id) FROM CRMinData.dbo.oportunidades a "
PREPARE comando FROM select1
EXECUTE comando INTO id_op
IF id_op IS NULL THEN
LET id_op = 1
END IF
LET id_op = id_op + 1
LET select1 =
" INSERT INTO CRMinDATA.dbo.oportunidades
(id,lead_id,tema,
direccion ,
telefono ,
email_usuario,
email_asignada,
lat ,
long ,
nombre_file,
contacto,
sincroniza_id,
fech_crea,
imagen
)
VALUES (?,?,?,?,?,?,?,?,?,?,?,'MOVIL',getdate(),?)"
PREPARE insert_command FROM select1
#, imagen
IF o.oportunidad.imagen IS NOT NULL THEN
CALL check_create_folder("ArchRecibidos")
LET archivo='ArchRecibidos/',o.oportunidad.imagen
CALL b64_to_file(o.oportunidad.contenido,archivo)
LET ruta_file = 'oportunidades\\"',o.oportunidad.tema CLIPPED,'-',id_op USING "<<<<<",'".jpg'
LET purl = "https://66.98.50.155/",o.oportunidad.tema CLIPPED,'-',id_op USING "<<<<<",'.jpg'
LET cmd = 'copy ','ArchRecibidos\\tmpfile.jpg ',ruta_file CLIPPED
RUN cmd
LOCATE arc_recibido IN MEMORY
CALL arc_recibido.readFile(archivo)
WHENEVER ERROR CONTINUE
EXECUTE insert_command USING id_op,o.oportunidad.lead_id,o.oportunidad.tema,o.oportunidad.dir,
o.oportunidad.tel,o.oportunidad.email_a,o.oportunidad.email_u,
o.oportunidad.lati,o.oportunidad.longi,o.oportunidad.imagen,
o.oportunidad.contacto,arc_recibido
IF STATUS < 0 THEN
LET r.ERROR = SQLCA.sqlerrd[2]
DISPLAY "error= ",r.ERROR
END IF
{ --TODO: logica del UPDATE del registro para actualizar solo el BLOB
LET select1 = "UPDATE CRMinData.dbo.oportunidades set imagen =?,nombre_file=?,url=? WHERE id= ? "
PREPARE actualiza FROM select1
EXECUTE actualiza USING arc_recibido,ruta_file,purl,id_op
IF STATUS < 0 THEN
DISPLAY "Error=",SQLCA.SQLERRD[2],"\n",SQLERRMESSAGE
LET r.ERROR = "NO EXITOSO:",SQLERRMESSAGE,"FECHA:",CURRENT
DISPLAY "ERROR UPDATE ",r.ERROR
END IF
}
FREE arc_recibido
END IF
LET select1 =
" INSERT INTO CRMinData.dbo.oportunidades_detalle (id,lead_id,cod_n,descripcion) VALUES
(?,?,?,?)"
PREPARE insert_detalle FROM select1
FOR idx=1 TO o.oportunidad_detalle.getLength()
IF o.oportunidad_detalle[idx].codn IS NOT NULL THEN
EXECUTE insert_detalle USING id_op,o.oportunidad_detalle[idx].id,o.oportunidad_detalle[idx].codn,o.oportunidad_detalle[idx].descripcion
IF STATUS <0 THEN
LET mensaje= "NO PUDE ACTUALIZAR OPORTUNIDADES ",CURRENT," ",STATUS
DISPLAY mensaje
END IF
END IF
END FOR
RETURN util.JSON.stringify(r)
END FUNCTION
FUNCTION check_create_folder(dir)
DEFINE dir STRING
DEFINE msg STRING
DEFINE ret BOOLEAN
CALL os.Path.exists(dir) RETURNING ret
IF ret THEN
RETURN
# LET msg=SFMT(%"Folder %1 already exists",dir)
# CALL fgl_winmessage("Debug",msg,"information")
ELSE
-- creates the folder
CALL os.Path.mkdir(dir) RETURNING ret
END IF
IF NOT(ret) THEN
LET msg=SFMT(%"Unable to create folder %1",dir)
CALL fgl_winmessage("Error",msg,"stop")
EXIT PROGRAM
END IF
END FUNCTION
FUNCTION b64_to_file(str_b64,f_sal)
DEFINE f_sal,str_b64,str_aux STRING
TRY
CALL security.Base64.SaveBinary(f_sal,str_b64)
CATCH
LET str_aux="Unable to convert Base64 String to file :",STATUS
CALL fgl_winmessage("Error",str_aux,"stop")
END TRY
END FUNCTION