public function save(Chat $item) { if (empty($item)) { throw new \Exception('Empty item'); } $db = DBConnection::getInstance(); if ($item->getFromNickname() == '') { $sql = "SELECT nickname FROM numbers WHERE nickname<>'' AND target=:target "; $query = $db->prepare($sql); $query->bindParam('target', $item->getFrom()); $query->execute(); $row = $query->fetch(); if (!empty($row['nickname'])) { $nickname = $row['nickname']; $item->setFromNickname($nickname); } } if ($item->getToNickname() == '') { $sql = "SELECT nickname FROM senders WHERE nickname<>'' AND username=:username "; $query = $db->prepare($sql); $query->bindParam('username', $item->getTo()); $query->execute(); $row = $query->fetch(); if (!empty($row['nickname'])) { $nickname = $row['nickname']; $item->setToNickname($nickname); } } if ($item->getId() == 0) { $query = $db->prepare("SELECT * FROM chat WHERE whatsapp_id=:whatsapp_id "); $query->bindParam('whatsapp_id', $item->getWhatsappId()); $query->execute(); $row = $query->fetch(); if (!empty($row)) { $item = new Chat(); $item->setId($row['id']); $item->setData($row['data']); $item->setFrom($row['from']); $item->setFromNickname($row['from_nickname']); $item->setTo($row['to']); $item->setToNickname($row['to_nickname']); $item->setCtime($row['ctime']); $item->setWhatsappId($row['whatsapp_id']); return $item; } $query = $db->prepare("INSERT INTO chat\n\t\t\t\t\t(`from`, `to`, from_nickname, to_nickname, data, ctime, whatsapp_id)\n\t\t\t\t\tVALUES\n\t\t\t\t\t(:from, :to, :from_nickname, :to_nickname, :data, :ctime, :whatsapp_id)"); $query->bindParam('from', $item->getFrom()); $query->bindParam('to', $item->getTo()); $query->bindParam('from_nickname', $item->getFromNickname()); $query->bindParam('to_nickname', $item->getToNickname()); $query->bindParam('data', $item->getData()); $query->bindParam('ctime', $item->getCtime(), \PDO::PARAM_INT); $query->bindParam('whatsapp_id', $item->getWhatsappId()); $query->execute(); $item->setId($db->lastInsertId()); } else { $sql = ' UPDATE chat SET '; $sql .= ' whatsapp_id = :whatsapp_id, '; $sql .= ' `from` = :from, '; $sql .= ' `to` = :to, '; $sql .= ' from_nickname = :from_nickname, '; $sql .= ' to_nickname= :to_nickname, '; $sql .= ' data = :data, '; $sql .= ' ctime = :ctime '; $sql .= ' WHERE id = :id '; $query = $db->prepare($sql); $query->bindParam('id', $item->getId(), \PDO::PARAM_INT); $query->bindParam('from', $item->getFrom()); $query->bindParam('to', $item->getTo()); $query->bindParam('from_nickname', $item->getFromNickname()); $query->bindParam('to_nickname', $item->getToNickname()); $query->bindParam('data', $item->getData()); $query->bindParam('ctime', $item->getCtime()); $query->bindParam('whatsapp_id', $item->getWhatsappId()); $query->execute(); } return $item; }