<?php
namespace Claromentis\Core\Like;

$GLOBALS["__65da1b1ec2d6653e8a0ab7848e53" . "6215"] = (@$GLOBALS["__65da1b1ec2d6653e8a0ab7" . "848e536215"] ?: array()) + array("user" . "_id" => base64_decode("dXNlcl9" . "pZA=="), "_54835c417" . "c39e87e647" . "408c531372" . "f2d" => base64_decode("REVMRVRFIEZST00gbGlrZXMgV0hFUkUg" . "YWdncmVnYXRpb249aW50OmFnZ3IgQU5E" . "IG9iamVjdF9pZD1pbnQ6b2JqX2lk"), "_0877a0b48cf42" . "4a0de57a453ce9" . "5e30c" => base64_decode("aW50OnVzZXJfa" . "WQ="), "_02d68192f568a0" . "a76fed790d96d93" . "318" => base64_decode("REVMRVRFIEZST00gbGlrZXMgV0hFUkUgdXNlcl9pZCA9I" . "GludDp1c2VyaWQgQU5EIG9iamVjdF9pZCA9IGludDpvYm" . "plY3RpZCBBTkQgYWdncmVnYXRpb24gPSBpbnQ6YWdn"), "_51bf540348e5076369" . "61ac634c592993" => base64_decode("U0VMRUNUICogRlJPTSBsaWtlcyBXSEVSRSBhZ2dyZWdhdGlvbj1pbnQ6YW" . "dnciBBTkQgb2JqZWN0X2lkPWludDpvYmpfaWQgT1JERVIgQlkgdGltZXN0" . "YW1wIERFU0M="), "_93bec24a59dad" . "cc3a5538564677" . "24049" => base64_decode("aW50Om9iamVjd" . "F9pZA=="), "_4f9cf2ae36d800102" . "b93b3f07b8f9df1" => base64_decode("U0VMRUNUIENPVU5UKDEpIEZST00gbGlrZXMgV0hFUkUgYWdncmVnYXRpb249aW50OmFnZ3IgQU5" . "EIG9iamVjdF9pZD1pbnQ6b2JqX2lk"), "li" . "ke" . "s" => base64_decode("bGlrZXM" . "="), "_c86eb9efd8b83325ef" . "895e88008c98d0" => base64_decode("aW50OnRpb" . "WVzdGFtcA" . "=="), "_e786f0e59" . "8409878229" . "1a9a32af94" . "1b2" => base64_decode("REVMRVRFIEZST00gbGlrZXMgV0hFUkUgdXNlcl9p" . "ZD1pbnQ6dXNlcl9pZA=="), "aggrega" . "tion" => base64_decode("YWdncm" . "VnYXRp" . "b24="), "_c1044b3e91" . "ab3b7929e6d" . "9a52f0a50a2" => base64_decode("U0VMRUNUIDEgRlJPTSBsaWtlcyBXSEVSRSBhZ2dyZWdhdGlvbj1pbnQ6YWdnciBBTkQgb2JqZWN0X2lkPWludDp" . "vYmpfaWQgQU5EIHVzZXJfaWQ9aW50OnVzZXJfaWQ="), "_9b632c465856330" . "aeeee43d21dc50ac" . "b" => base64_decode("aW50OmFn" . "Z3JlZ2F0" . "aW9u"), "obj" . "ect" . "_id" => base64_decode("b2JqZWN0X2l" . "k"));
use Claromentis\Core\DAL;
use Claromentis\Core\Event\EventDispatcher;
use Claromentis\Core\Event\GenericEvent;




class LikesRepository
{
    
    
    
    
    protected $dispatcher;
    
    
    
    
    private $db;
    
    
    
    
    public function __construct(DAL\Db $db, EventDispatcher $_b497ce6f2af10f67516aed0ecf34d8cf)
    {
        $this->db = $db;
        $this->dispatcher = $_b497ce6f2af10f67516aed0ecf34d8cf;
    }
    
    
    
    
    
    
    
    
    public function Add($aggregation, $object_id, $user_id)
    {
        if ($this->IsLiked($aggregation, $object_id, $user_id)) {
            return;
        }
        $this->db->query(new DAL\QueryInsert($GLOBALS["__65da1b1ec2d6653e8a0ab" . "7848e536215"]["li" . "ke" . "s"], [$GLOBALS["__65da1b1ec2d6653e8a0ab7848e536" . "215"]["_9b632c465856330aee" . "ee43d21dc50acb"] => $aggregation, $GLOBALS["__65da1b1ec2d6653e" . "8a0ab7848e536215"]["_93bec24a59dadcc3a553" . "856467724049"] => $object_id, $GLOBALS["__65da1b1" . "ec2d6653e" . "8a0ab7848" . "e536215"]["_0877a0b48cf" . "424a0de57a45" . "3ce95e30c"] => $user_id, $GLOBALS["__65da1b1ec2d6653e" . "8a0ab7848e536215"]["_c86eb9e" . "fd8b8332" . "5ef895e8" . "8008c98d" . "0"] => \Date::getNowTimestamp()]));
        $event = new GenericEvent(null, [$GLOBALS["__65da1b1ec2d6653e8a0ab7848e53621" . "5"]["aggregatio" . "n"] => $aggregation, $GLOBALS["__65da1b1ec2d6653e8a0ab78" . "48e536215"]["obje" . "ct_i" . "d"] => $object_id, $GLOBALS["__65da1b1ec2d6653e8a0ab7" . "848e536215"]["user_" . "id"] => $user_id]);
        $this->dispatcher->dispatch(LikeEvents::OBJECT_LIKED, $event);
    }
    public function Remove($aggregation, $object_id, $user_id)
    {
        if (!$this->IsLiked($aggregation, $object_id, $user_id)) {
            return;
        }
        $this->db->query($GLOBALS["__65da1b1ec2d" . "6653e8a0ab784" . "8e536215"]["_02d6819" . "2f568a0a" . "76fed790" . "d96d9331" . "8"], $user_id, $object_id, $aggregation);
        $event = new GenericEvent(null, [$GLOBALS["__65da1b1ec2d6653e8a0ab7848e5" . "36215"]["aggreg" . "ation"] => $aggregation, $GLOBALS["__65da1b1ec2d6653e8a0ab7848e5" . "36215"]["object" . "_id"] => $object_id, $GLOBALS["__65da1b1ec" . "2d6653e8a0a" . "b7848e53621" . "5"]["user_i" . "d"] => $user_id]);
        $this->dispatcher->dispatch(LikeEvents::OBJECT_UNLIKED, $event);
    }
    
    
    
    
    
    
    
    
    
    public function IsLiked($aggregation, $object_id, $user_id)
    {
        $_189840d11056515e52402d1412a0b6e4 = $this->db->query($GLOBALS["__65da1b1ec2d6653e8a0ab7848" . "e536215"]["_c1044b3e91a" . "b3b7929e6d9a" . "52f0a50a2"], (int) $aggregation, (int) $object_id, (int) $user_id);
        return $_189840d11056515e52402d1412a0b6e4->hasData();
    }
    
    
    
    
    
    
    
    
    public function GetCount($aggregation, $object_id)
    {
        list($_f53d35a1a1e233d98d9ce73d92ab3bb1) = $this->db->query_row($GLOBALS["__65da1b1ec2d6653e8a0ab7848e53" . "6215"]["_4f9cf2ae36d800102" . "b93b3f07b8f9df1"], $aggregation, $object_id);
        return $_f53d35a1a1e233d98d9ce73d92ab3bb1;
    }
    
    
    
    
    
    
    
    public function DeleteByObject($aggregation, $object_id)
    {
        $this->db->query($GLOBALS["__65da1b1ec2d6653e8a0ab7848e5" . "36215"]["_54835c417c39e87e64" . "7408c531372f2d"], $aggregation, $object_id);
    }
    
    
    
    
    
    
    public function DeleteByUser($user_id)
    {
        $this->db->query($GLOBALS["__65da1b1ec2d6653e8a0ab7848e53" . "6215"]["_e786f0e598409878" . "2291a9a32af941b2"], $user_id);
    }
    
    
    
    
    
    
    
    public function GetLikes($aggregation, $object_id, $_f11369824f533e8206f9ccc0c9aab3a0 = 50, $_1f50e30be8c2fefa6881834e71d504a2 = 0)
    {
        $_7f5aa4e96d4b415a86ed72ebff677cbe = new DAL\Query($GLOBALS["__65da1b1ec2d6653e8a0ab7848" . "e536215"]["_51bf540348e507" . "636961ac634c592" . "993"], $aggregation, $object_id);
        $_7f5aa4e96d4b415a86ed72ebff677cbe->setLimit($_f11369824f533e8206f9ccc0c9aab3a0, $_1f50e30be8c2fefa6881834e71d504a2);
        $_189840d11056515e52402d1412a0b6e4 = $this->db->query($_7f5aa4e96d4b415a86ed72ebff677cbe);
        $_40d3655ba45c47853ff1adcc6921cb45 = [];
        while ($_343a395319323dd7609bcbc465b4d034 = $_189840d11056515e52402d1412a0b6e4->fetchArray()) {
            $_40d3655ba45c47853ff1adcc6921cb45[] = $_343a395319323dd7609bcbc465b4d034;
        }
        return $_40d3655ba45c47853ff1adcc6921cb45;
    }
}