Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
27 / 27
100.00% covered (success)
100.00%
4 / 4
CRAP
100.00% covered (success)
100.00%
1 / 1
ContactController
100.00% covered (success)
100.00%
25 / 25
100.00% covered (success)
100.00%
4 / 4
12
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 createUser
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 createMessage
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 sendMessage
100.00% covered (success)
100.00%
22 / 22
100.00% covered (success)
100.00%
1 / 1
9
1<?php
2namespace Controllers;
3
4require_once __DIR__ . '/../Models/Message.php';
5require_once __DIR__ . '/../Models/User.php';
6use Models\Message;
7use Models\User;
8
9class ContactController {
10    private $conn;
11
12    public function __construct($conn) {
13        $this->conn = $conn;
14    }
15
16    // Agregar estos métodos protegidos para permitir el mock en las pruebas
17    protected function createUser()
18    {
19        return new User();
20    }
21
22    protected function createMessage()
23    {
24        return new Message();
25    }
26
27    public function sendMessage($userData) {
28        try {
29            // Validar que todos los campos requeridos existan
30            if (!isset($userData['user_id']) || !isset($userData['name']) || 
31                !isset($userData['email']) || !isset($userData['message'])) {
32                return ['success' => false, 'message' => 'Faltan campos requeridos'];
33            }
34
35            // Modificar la creación de User y Message
36            $user = $this->createUser();
37            $user->setId($userData['user_id']);
38            if (!$user->exists($this->conn)) {
39                return ['success' => false, 'message' => 'Usuario no encontrado'];
40            }
41
42            $message = $this->createMessage();
43            $message->setUserId($userData['user_id']);
44            $message->setName($userData['name']);
45            $message->setEmail($userData['email']);
46            $message->setNumber($userData['number']);
47            $message->setMessage($userData['message']);
48
49            if ($message->exists($this->conn)) {  // Asumiendo que existe un método exists() en Message
50                return ['success' => false, 'message' => '¡Mensaje ya enviado!'];
51            }
52
53            if ($message->save($this->conn)) {
54                return ['success' => true, 'message' => '¡Mensaje enviado exitosamente!'];
55            }
56
57            // Añadir log específico si save() falla
58            error_log("Error en save(): Falló al guardar el mensaje para usuario ID: " . $userData['user_id']);
59            return ['success' => false, 'message' => 'Error al enviar mensaje'];
60        } catch (\Exception $e) {
61            error_log("Error al enviar mensaje: " . $e->getMessage());
62            return ['success' => false, 'message' => 'Error al enviar mensaje: ' . $e->getMessage()];
63        }
64    }
65}