%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/bbw/farmaci/kritik-portale/module/Basis/src/Basis/Repo/
Upload File :
Create Path :
Current File : /var/www/html/bbw/farmaci/kritik-portale/module/Basis/src/Basis/Repo/UserRepo.php

<?php
/**
 * Created by PhpStorm.
 * User: juliangilles
 * Date: 29.07.14
 * Time: 14:35
 */

namespace Basis\Repo;

use Basis\Model\User\User;
use ReviewBase\Model\CleverReachManager;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\Sql\Sql;

class UserRepo extends Basis implements RepoInterface
{
    protected $cleverReachManager;
    /**
     * @param \Basis\EventBus\EventBus $eventBus
     * @param \Zend\Db\Adapter\Adapter $databaseAdapter
     */
    public function __construct(\Basis\EventBus\EventBus $eventBus, \Zend\Db\Adapter\Adapter $databaseAdapter, CleverReachManager $cleverReachManager)
    {
        parent::__construct($eventBus, $databaseAdapter);
        parent::createEventStore("user");
        $this->cleverReachManager = $cleverReachManager;
    }

    /**
     * @param string $entityId
     * @return User
     */
    public function load($entityId = null)
    {
        $user = new User($this->cleverReachManager);
        if (empty($entityId)) {
            $user->generateId();
        } else {
            $events = $this->_eventStore->loadEvents($entityId);
            $user->setId($entityId);
            $user->setFromEvents($events, $this->_eventBus, $this->_databaseAdapter);
        }

        return $user;
    }

    public function showUser($entityId)
    {
        $sql = new Sql($this->_databaseAdapter);
        $select = $sql->select()
            ->from("user")
            ->where('entityid="' . $entityId . '"');

        $statement = $sql->prepareStatementForSqlObject($select);
        $result = $statement->execute();

        $resultSet = new ResultSet();
        $resultSet->initialize($result);
        if($resultSet->count() > 0){
            return $resultSet->current();
        }
        return false;
    }

    /**
     * @param string $entityId
     * @return User
     */
    public function delete(\Basis\Model\EventBasis $object)
    {
        $object->delete();
        $this->save($object);
        return $object;
    }

    /**
     * @param \Basis\Model\EventBasis $object
     */
    public function save(\Basis\Model\EventBasis $object)
    {
        $this->_eventStore->saveEvents($object);
        $this->_eventBus->publish($object);
    }

    /**
     * @param string $email
     * @return boolean
     */
    public function emailExists($email)
    {
        $sql = new Sql($this->_databaseAdapter);
        $select = $sql->select()
            ->from("user")
            ->where('email like "' . $email . '"');
       //     ->where('role like "user"');

        $statement = $sql->prepareStatementForSqlObject($select);
        $result = $statement->execute();

        $resultSet = new ResultSet();
        $resultSet->initialize($result);
        if($resultSet->count() > 0){
            return true;
        }
        return false;
    }
    
    public function usernameExists($username)
    {
        if (!empty($username))
        {
            $sql = new Sql($this->_databaseAdapter);
            $select = $sql->select()
                ->from("user")
                ->where('username like "' . $username . '"');

            $statement = $sql->prepareStatementForSqlObject($select);
            $result = $statement->execute();

            $resultSet = new ResultSet();
            $resultSet->initialize($result);
            if($resultSet->count() > 0){
                return true;
            }
        }
        return false;
    }

    /**
     * @param string $query
     * @return result
     */
    public function findUser($query)
    {
        $queryParts = explode(" ", $query);

        $sql = new Sql($this->_databaseAdapter);
        $select = $sql->select()
            ->from("user")
            ->where('active = 1')
            ->limit(10);

        foreach($queryParts as $part){
            $select->where('email like "%' . $part . '%" OR name like "%' . $part . '%" OR surname like "%' . $part . '%"');
        }

        $statement = $sql->prepareStatementForSqlObject($select);
        $result = $statement->execute();

        $resultSet = new ResultSet();
        $resultSet->initialize($result);

        $typeaheadResults = [];
        foreach ($resultSet as $result) {
            $typeaheadResults[] = [
                'name'     => $result['name'] . " " . $result['surname'],
                'email'       => $result['email'],
            ];
        }

        return $typeaheadResults;
    }

    /**
     * @param string $newEmail
     * @param string $userId
     * @return boolean
     */
    public function newEmailExists($email, $userId)
    {
        $sql = new Sql($this->_databaseAdapter);
        $select = $sql->select()
            ->from("user")
            ->where('email like "' . $email . '"')
            ->where('entityid NOT LIKE "' . $userId . '"');

        $statement = $sql->prepareStatementForSqlObject($select);
        $result = $statement->execute();

        $resultSet = new ResultSet();
        $resultSet->initialize($result);
        if($resultSet->count() > 0){
            return true;
        }
        return false;
    }
    
    public function newUsernameExists($username, $userId)
    {
        if (!empty($username))
        {
            $sql = new Sql($this->_databaseAdapter);
            $select = $sql->select()
                ->from("user")
                ->where('username like "' . $username . '"')
                ->where('entityid NOT LIKE "' . $userId . '"');

            $statement = $sql->prepareStatementForSqlObject($select);
            $result = $statement->execute();

            $resultSet = new ResultSet();
            $resultSet->initialize($result);
            if($resultSet->count() > 0){
                return true;
            }
        }
        return false;
    }

    /**
     * @param string $hash
     * @return boolean
     */
    public function getUserByHash($hash)
    {
        $sql = new Sql($this->_databaseAdapter);
        $select = $sql->select()
            ->from("user")
            ->where('hash like "' . $hash . '"');

        $statement = $sql->prepareStatementForSqlObject($select);
        $result = $statement->execute();

        $resultSet = new ResultSet();
        $resultSet->initialize($result);
        if($resultSet->count() > 0){
            return $resultSet->current();
        }
        return false;
    }

    /**
     * @param string $email
     * @return boolean
     */
    public function getUserByEmail($email)
    {
        $sql = new Sql($this->_databaseAdapter);
        $select = $sql->select()
            ->from("user")
            ->where('email like "' . $email . '"');

        $statement = $sql->prepareStatementForSqlObject($select);
        $result = $statement->execute();

        $resultSet = new ResultSet();
        $resultSet->initialize($result);
        if($resultSet->count() > 0){
            return $resultSet->current();
        }
        return false;
    }
    
    public function getUserByExternalCustomerID($customerID)
    {
        $sql = new Sql($this->_databaseAdapter);
        $select = $sql->select()
            ->from("user")
            ->where('external_customer_id like "' . $customerID. '"');

        $statement = $sql->prepareStatementForSqlObject($select);
        $result = $statement->execute();

        $resultSet = new ResultSet();
        $resultSet->initialize($result);
        if($resultSet->count() > 0){
            return $resultSet->current();
        }
        return false;
    }
    
    public function getHomeCountForPharmacy($entityid)
    {
        $sql = new Sql($this->_databaseAdapter);
        $select = $sql->select()
            ->from("user")
            ->where('home like "' . $entityid . '"');

        $statement = $sql->prepareStatementForSqlObject($select);
        $result = $statement->execute();

        $resultSet = new ResultSet();
        $resultSet->initialize($result);
        $count = count($resultSet);
        return $count;
    }

    /**
     * @param $pharmacyId
     * @return ResultSet
     */
    public function getHomePharmacyFollower($pharmacyId)
    {
        $sql = new Sql($this->_databaseAdapter);
        $select = $sql->select()
            ->from("user")
            ->where('home like "' . $pharmacyId . '"');

        $statement = $sql->prepareStatementForSqlObject($select);
        $result = $statement->execute();

        $resultSet = new ResultSet();
        $resultSet->initialize($result);
        return $resultSet;
    }
    
    public function getUserByUsername($username)
    {
        $sql = new Sql($this->_databaseAdapter);
        $select = $sql->select()
            ->from("user")
            ->where('username like "' . $username . '"');

        $statement = $sql->prepareStatementForSqlObject($select);
        $result = $statement->execute();

        $resultSet = new ResultSet();
        $resultSet->initialize($result);
        if($resultSet->count() > 0){
            return $resultSet->current();
        }
        return false;
    }

    /**
     * @param string $hash
     * @return boolean
     */
    public function getUserForReminds()
    {
        $twodaysBefore = date("Y-m-d H:i:s", strtotime('-2 days'));

        $sql = new Sql($this->_databaseAdapter);
        $select = $sql->select()
            ->from("user")
            ->where('active = 0')
            ->where('remind = 0')
            ->where('created_at <= "' . $twodaysBefore . '"')
            ->where('role like "owner"');

        $statement = $sql->prepareStatementForSqlObject($select);
        $result = $statement->execute();

        $resultSet = new ResultSet();
        $resultSet->initialize($result);
        if($resultSet->count() > 0){
            return $resultSet;
        }
        return false;
    }

    /**
     * @param string $hash
     * @return boolean
     */
    public function getUserForRemove()
    {
        $fourdaysBefore = date("Y-m-d H:i:s", strtotime('-4 days'));

        $sql = new Sql($this->_databaseAdapter);
        $select = $sql->select()
            ->from("user")
            ->where('active = 0')
            ->where('remind = 1')
            ->where('created_at <= "' . $fourdaysBefore . '"')
            ->where('role like "owner"');

        $statement = $sql->prepareStatementForSqlObject($select);
        $result = $statement->execute();

        $resultSet = new ResultSet();
        $resultSet->initialize($result);
        if($resultSet->count() > 0){
            return $resultSet;
        }
        return false;
    }
}

Zerion Mini Shell 1.0