53 lines
2.1 KiB
Java
53 lines
2.1 KiB
Java
/*
|
|
* Copyright 2025 Google. This software is provided as-is, without warranty or representation for any use or purpose.
|
|
* Your use of it is subject to your agreement with Google.
|
|
*/
|
|
|
|
package com.example.mapper.conversation;
|
|
|
|
import com.example.dto.dialogflow.conversation.ConversationSessionDTO;
|
|
import com.google.cloud.Timestamp;
|
|
import com.google.cloud.firestore.DocumentSnapshot;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import java.time.Instant;
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
@Component
|
|
public class FirestoreConversationMapper {
|
|
|
|
public ConversationSessionDTO mapFirestoreDocumentToConversationSessionDTO(DocumentSnapshot document) {
|
|
if (document == null || !document.exists()) {
|
|
return null;
|
|
}
|
|
|
|
Timestamp createdAtTimestamp = document.getTimestamp("fechaCreacion");
|
|
Timestamp lastModifiedTimestamp = document.getTimestamp("ultimaActualizacion");
|
|
|
|
Instant createdAt = (createdAtTimestamp != null) ? createdAtTimestamp.toDate().toInstant() : null;
|
|
Instant lastModified = (lastModifiedTimestamp != null) ? lastModifiedTimestamp.toDate().toInstant() : null;
|
|
|
|
return new ConversationSessionDTO(
|
|
document.getString("sessionId"),
|
|
document.getString("userId"),
|
|
document.getString("telefono"),
|
|
createdAt,
|
|
lastModified,
|
|
document.getString("ultimoMensaje"),
|
|
document.getString("pantallaContexto")
|
|
);
|
|
}
|
|
|
|
public Map<String, Object> createSessionMap(ConversationSessionDTO session) {
|
|
Map<String, Object> sessionMap = new HashMap<>();
|
|
sessionMap.put("sessionId", session.sessionId());
|
|
sessionMap.put("userId", session.userId());
|
|
sessionMap.put("telefono", session.telefono());
|
|
sessionMap.put("fechaCreacion", session.createdAt());
|
|
sessionMap.put("ultimaActualizacion", session.lastModified());
|
|
sessionMap.put("ultimoMensaje", session.lastMessage());
|
|
sessionMap.put("pantallaContexto", session.pantallaContexto());
|
|
return sessionMap;
|
|
}
|
|
} |