Your IP : 216.73.217.79


Current Path : /var/www/v3.cesa.co.za/src/CoreBundle/Services/
Upload File :
Current File : /var/www/v3.cesa.co.za/src/CoreBundle/Services/ErrorLogManager.php

<?php

namespace App\CoreBundle\Services;

use Symfony\Component\DependencyInjection\ContainerInterface;
use Monolog\Logger;
use App\CoreBundle\Entity\ErrorLog;

/**
 * Error Log  manager
 *
 * @author Otto Saayman <otto@igotafrica.com>
 * @package CoreBundle
 * @subpackage Error Log
 * @version 0.0.1
 */
final class ErrorLogManager {

    /**
     * Service Container
     * @var object
     */
    private $container = null;

    /**
     * Entity manager
     * @var object
     */
    private $em;

    /**
     * IGA Error logger
     * @var object
     */
    private $logger = null;

    /**
     * Class construct
     *
     * @param  ContainerInterface $container
     * @param  Logger             $logger
     * @return void
     */
    public function __construct(
            ContainerInterface $container, Logger $logger) {
        $this->setContainer($container);
        $this->setLogger($logger);
        $this->setEm($container->get('doctrine')->getManager('default'));

        return;
    }

    /**
     * Get Container
     *
     * @return ContainerInterface $container
     */
    public function getContainer() {
        return $this->container;
    }

    /**
     * Set Container
     *
     * @param  ContainerInterface $container
     * @return void
     */
    public function setContainer($container) {
        $this->container = $container;
    }

    /**
     * Get Entity Manager
     *
     * @return string
     */
    public function getEm() {
        return $this->em;
    }

    /**
     * Set Container
     *
     * @param  string $em
     * @return void
     */
    public function setEm($em) {
        $this->em = $em;
    }

    public function getLogger() {
        return $this->logger;
    }

    public function setLogger($logger) {
        $this->logger = $logger;
    }

    /**
     * Log an information log or error log
     *
     * @param  string $message
     */
    public function error($message, $isInfo = false, $getSession = true, $sendMail = true) {

        try {

            if ($getSession) {
                $sessionManager = $this->container->get('sessions.manager');
                $session = $sessionManager->getSession();
            } else {
                $session = null;
            }

            $userListManager = $this->container->get('user_list.manager');
            $userList = $userListManager->getLoggedInUser();

            $errorLog = new ErrorLog();

            $errorLog->setUrlId('');
            $errorLog->setErrMessage($message);

            if (is_object($session))
                $errorLog->setSessionid($session->getId());
            else
                $errorLog->setSessionid('');

            if (is_object($userList))
                $errorLog->setCreatedBy($userList->getId());
            else
                $errorLog->setCreatedBy('');

            $errorLog->setIsInfo($isInfo);

            if ($this->getEm()->isOpen()) {
                $this->getEm()->persist($errorLog);
                $this->getEm()->flush();
            }

//            echo $message . '<br >';

            if (!$isInfo) {

                $errorReportEMail = $this->getContainer()->get('system_setting.manager')->getSetting('error_report_e_mail', true);
                $errorUser = null;

                if (strlen($errorReportEMail) > 0) {
                    $errorUser = $this->getContainer()->get('user_list.manager')->findOneByEMailAddress($errorReportEMail);
                }

                if (!is_object($errorUser)) {
                    $errorUser = $this->getContainer()->get('contact_message.manager')->getSystemUser();
                }

                if ($sendMail) {
                    $this->getContainer()->get('contact_message.manager')->sendNotificationMail(
                            $errorUser,
                            $this->getContainer()->get('contact_message.manager')->getSystemName() . ': Error on site',
                            $message
                    );
                }
            }

            return $errorLog;
        } catch (\Exception $ex) {
            $this->getLogger()->error($ex->getMessage());
        }
    }

    /**
     * Log an information log
     *
     * @param  string $message
     */
    public function info($message) {
        return $this->error($message, true);
    }

    /**
     * Get message HTML
     *
     * @param  string $message
     * @return string
     */
    public function getMessage($message, $messageClass = 'success') {

        $twig = $this->getContainer()->get('twig');

        $iconClass = 'thumbs-up';

        if ($messageClass == 'info') {
            $iconClass = 'eye-open';
        } elseif ($messageClass == 'danger') {
            $iconClass = 'exclamation-sign';
        } elseif ($messageClass == 'warning') {
            $iconClass = 'warning-sign';
        }

        return $twig->render(
                        '@IGACoreBundle/DHTML/flash.message.html.twig', array(
                    'message' => $message,
                    'messageClass' => $messageClass,
                    'iconClass' => $iconClass,
                        )
        );
    }

}