Untitled

mail@pastecode.io avatar
unknown
php
a month ago
3.4 kB
3
Indexable
Never
 public function insert_ticketdetalle($tick_id, $usu_id, $tickd_descrip) {
        $conectar = parent::conexion();
        parent::set_names();

        /* TODO: Obtener usuario asignado del tick_id */
        $ticket = new Ticket();
        $datos = $ticket->listar_ticket_x_id($tick_id);
        foreach ($datos as $row) {
            $usu_asig = $row["usu_asig"];
            $usu_crea = $row["usu_id"];
        }

        // Definir el mensaje de notificación según el rol del usuario que responde
        if ($_SESSION["rol_id"] == 1) {
            // Cliente responde
            $mensaje = "Tiene una nueva respuesta del cliente en el ticket Nro: ";
            $usu_notificado = $usu_asig; // Notificar al usuario asignado (soporte o administrador)
        } elseif ($_SESSION["rol_id"] == 2) {
            // Soporte responde
            $mensaje = "Tiene una nueva respuesta del soporte en el ticket Nro: " ;

            if ($_SESSION["usu_id"] == $usu_crea) {
                // Si el soporte que responde es el creador del ticket, notificar al usuario asignado (cliente)
                $usu_notificado = $usu_asig;
            } else {
                // Si el soporte que responde no es el creador, notificar al creador del ticket (cliente)
                $usu_notificado = $usu_crea;
            }

            // Evitar autonotificación
            if ($_SESSION["usu_id"] == $usu_notificado) {
                $usu_notificado = null;
            }
        } elseif ($_SESSION["rol_id"] == 3) {
            // Administrador responde
            $mensaje = "Tiene una nueva respuesta del administrador en el ticket Nro: ";

            if ($_SESSION["usu_id"] == $usu_crea) {
                // Si el administrador que responde es el creador del ticket, notificar al usuario asignado (cliente)
                $usu_notificado = $usu_asig;
            } else {
                // Si el administrador que responde no es el creador, notificar al creador del ticket (cliente)
                $usu_notificado = $usu_crea;
            }

            // Evitar autonotificación
            if ($_SESSION["usu_id"] == $usu_notificado) {
                $usu_notificado = null;
            }
        }

        // Insertar la notificación si hay un usuario para notificar
        if ($usu_notificado) {
            $sql0 = "INSERT INTO tm_notificacion (not_id, usu_id, not_mensaje, tick_id, est) VALUES (null, :usu_notificado, :mensaje, :tick_id, 2)";
            $stmt = $conectar->prepare($sql0);
            $stmt->bindParam(':usu_notificado', $usu_notificado);
            $stmt->bindParam(':mensaje', $mensaje);
            $stmt->bindParam(':tick_id', $tick_id);
            $stmt->execute();
        }

        // Insertar el detalle del ticket
        $sql = "INSERT INTO td_ticketdetalle (tickd_id, tick_id, usu_id, tickd_descrip, fech_crea, est) VALUES (NULL, ?, ?, ?, now(), '1');";
        $sql = $conectar->prepare($sql);
        $sql->bindValue(1, $tick_id);
        $sql->bindValue(2, $usu_id);
        $sql->bindValue(3, $tickd_descrip);
        $sql->execute();

        /* TODO: Devuelve el último ID (Identity) ingresado */
        $sql1 = "SELECT last_insert_id() as 'tickd_id';";
        $sql1 = $conectar->prepare($sql1);
        $sql1->execute();
        return $resultado = $sql1->fetchAll(PDO::FETCH_ASSOC);
    }
Leave a Comment