/* * 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 createSessionMap(ConversationSessionDTO session) { Map 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; } }