/**
  * Get pie graph data for Sent, Read and Failed email count
  *
  * @param QueryBuilder $query
  * @param array $args
  *
  * @return array
  * @throws \Doctrine\ORM\NoResultException
  * @throws \Doctrine\ORM\NonUniqueResultException
  */
 public function getIgnoredReadFailed($query = null, $args = array())
 {
     if (!$query) {
         $query = $this->_em->getConnection()->createQueryBuilder()->from(MAUTIC_TABLE_PREFIX . 'email_stats', 'es')->leftJoin('es', MAUTIC_TABLE_PREFIX . 'emails', 'e', 'es.email_id = e.id');
     }
     $query->select('count(es.id) as sent, count(CASE WHEN es.is_read THEN 1 ELSE null END) as "read", count(CASE WHEN es.is_failed THEN 1 ELSE null END) as failed');
     if (isset($args['source'])) {
         $query->andWhere($query->expr()->eq('es.source', $query->expr()->literal($args['source'])));
     }
     if (isset($args['source_id'])) {
         $query->andWhere($query->expr()->eq('es.source_id', (int) $args['source_id']));
     }
     $results = $query->execute()->fetch();
     $results['ignored'] = $results['sent'] - $results['read'] - $results['failed'];
     unset($results['sent']);
     return GraphHelper::preparePieGraphData($results);
 }
 /**
  * Prepare data structure for New vs Returning graph
  *
  * @param array $languages
  *
  * @return array
  */
 public function getLaguageGraphData($languages)
 {
     return GraphHelper::preparePieGraphData($languages);
 }