<?php
namespace Claromentis\Core\Like;

$GLOBALS["__65da1b1ec2d6" . "653e8a0ab7848e" . "536215"] = (@$GLOBALS["__65da1b1ec2d6653e" . "8a0ab7848e536215"] ?: array()) + array("lik" . "es" => base64_decode("bGl" . "rZX" . "M="), "_4f9cf2ae36d800102b93b3f07b8f9d" . "f1" => base64_decode("U0VMRUNUIENPVU5UKDEpIEZST00gbGlrZXMgV0hFUkUgYWdncmVnYXRpb249aW50OmFnZ3IgQU5EIG9iamVjdF9pZD1" . "pbnQ6b2JqX2lk"), "_54835c417c39e87e647408c" . "531372f2d" => base64_decode("REVMRVRFIEZST00gbGlrZXMgV0hFU" . "kUgYWdncmVnYXRpb249aW50OmFnZ3" . "IgQU5EIG9iamVjdF9pZD1pbnQ6b2J" . "qX2lk"), "_9b632c465856330aeeee43d21dc" . "50acb" => base64_decode("aW50Om" . "FnZ3Jl" . "Z2F0aW" . "9u"), "aggr" . "egat" . "ion" => base64_decode("YWdncmVnYXRpb24" . "="), "_51bf540348e507636961ac634c5" . "92993" => base64_decode("U0VMRUNUICogRlJPTSBsaWtlcyBXSEVSRSBhZ2dyZ" . "WdhdGlvbj1pbnQ6YWdnciBBTkQgb2JqZWN0X2lkPW" . "ludDpvYmpfaWQgT1JERVIgQlkgdGltZXN0YW1wIER" . "FU0M="), "_e786f0e5984098782291a9a3" . "2af941b2" => base64_decode("REVMRVRFIEZST00gbG" . "lrZXMgV0hFUkUgdXNl" . "cl9pZD1pbnQ6dXNlcl" . "9pZA=="), "_93bec24a59dadcc" . "3a55385646772404" . "9" => base64_decode("aW50Om9iamVjdF9p" . "ZA=="), "_02d68192f568" . "a0a76fed790d9" . "6d93318" => base64_decode("REVMRVRFIEZST00gbGlrZXMgV0hFUkUgdXNlcl9pZCA9IGludDp1c2VyaWQgQU5EIG9iamVjdF9pZCA9IGludDpvYmplY" . "3RpZCBBTkQgYWdncmVnYXRpb24gPSBpbnQ6YWdn"), "_c86eb9efd8b83325ef895" . "e88008c98d0" => base64_decode("aW50OnRpbWV" . "zdGFtcA=="), "_c1044b3e91ab3" . "b7929e6d9a52f0" . "a50a2" => base64_decode("U0VMRUNUIDEgRlJPTSBsaWtlcyBXSEVSRSBhZ2dyZWdhdGlvbj1pbnQ6YWdnciBBTkQgb2JqZWN0X2lkPWludDpvYmpfaWQgQU5EIHVzZXJfaWQ9" . "aW50OnVzZXJfaWQ="), "_3877cdf57" . "a61e49b56a" . "eab7af930e" . "e82" => base64_decode("dXNlcl9pZA=" . "="), "_0877a0b48cf424a" . "0de57a453ce95e30" . "c" => base64_decode("aW50On" . "VzZXJf" . "aWQ="), "object" . "_id" => base64_decode("b2JqZWN0X" . "2lk"));
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, $_3877cdf57a61e49b56aeab7af930ee82)
    {
        if ($this->IsLiked($aggregation, $object_id, $_3877cdf57a61e49b56aeab7af930ee82)) {
            return;
        }
        $this->db->query(new DAL\QueryInsert($GLOBALS["__65da1b1ec2d6653e8a0ab7848e5" . "36215"]["like" . "s"], [$GLOBALS["__65da1b1ec" . "2d6653e8a0a" . "b7848e53621" . "5"]["_9b632c4658563" . "30aeeee43d21dc" . "50acb"] => $aggregation, $GLOBALS["__65da1b1ec2d6653e8a0ab7848e53" . "6215"]["_93bec24a59dadcc3a553856467724" . "049"] => $object_id, $GLOBALS["__65da1b1ec2d6653e8" . "a0ab7848e536215"]["_0877a0b48cf424a0de57a453" . "ce95e30c"] => $_3877cdf57a61e49b56aeab7af930ee82, $GLOBALS["__65da1b1ec2d6653e8a0ab7848e536" . "215"]["_c86eb9efd8b83" . "325ef895e88008" . "c98d0"] => \Date::getNowTimestamp()]));
        $event = new GenericEvent(null, [$GLOBALS["__65da1b1ec2d6" . "653e8a0ab7848e" . "536215"]["agg" . "reg" . "ati" . "on"] => $aggregation, $GLOBALS["__65da1b1ec2d6653e8a0a" . "b7848e536215"]["objec" . "t_id"] => $object_id, $GLOBALS["__65da1b1ec2" . "d6653e8a0ab7" . "848e536215"]["_3877cdf57a61e49b56aeab7af930e" . "e82"] => $_3877cdf57a61e49b56aeab7af930ee82]);
        $this->dispatcher->dispatch(LikeEvents::OBJECT_LIKED, $event);
    }
    public function Remove($aggregation, $object_id, $_3877cdf57a61e49b56aeab7af930ee82)
    {
        if (!$this->IsLiked($aggregation, $object_id, $_3877cdf57a61e49b56aeab7af930ee82)) {
            return;
        }
        $this->db->query($GLOBALS["__65da1b1ec2d6653e8a0ab784" . "8e536215"]["_02d68192f568a0a76fed790d9" . "6d93318"], $_3877cdf57a61e49b56aeab7af930ee82, $object_id, $aggregation);
        $event = new GenericEvent(null, [$GLOBALS["__65da1b1ec2d66" . "53e8a0ab7848e53" . "6215"]["aggregatio" . "n"] => $aggregation, $GLOBALS["__65da1b1ec2d6653e8a0" . "ab7848e536215"]["ob" . "je" . "ct" . "_i" . "d"] => $object_id, $GLOBALS["__65da1b1ec2d6653e8a0ab7848e536" . "215"]["_3877cdf57a61e49b56" . "aeab7af930ee82"] => $_3877cdf57a61e49b56aeab7af930ee82]);
        $this->dispatcher->dispatch(LikeEvents::OBJECT_UNLIKED, $event);
    }
    
    
    
    
    
    
    
    
    
    public function IsLiked($aggregation, $object_id, $_3877cdf57a61e49b56aeab7af930ee82)
    {
        $_189840d11056515e52402d1412a0b6e4 = $this->db->query($GLOBALS["__65da1b1ec2d6653e8" . "a0ab7848e536215"]["_c1044b3e91ab3b7929e6" . "d9a52f0a50a2"], (int) $aggregation, (int) $object_id, (int) $_3877cdf57a61e49b56aeab7af930ee82);
        return $_189840d11056515e52402d1412a0b6e4->hasData();
    }
    
    
    
    
    
    
    
    
    public function GetCount($aggregation, $object_id)
    {
        list($_f53d35a1a1e233d98d9ce73d92ab3bb1) = $this->db->query_row($GLOBALS["__65da1b1" . "ec2d6653e" . "8a0ab7848" . "e536215"]["_4f9cf2ae36d800102" . "b93b3f07b8f9df1"], $aggregation, $object_id);
        return $_f53d35a1a1e233d98d9ce73d92ab3bb1;
    }
    
    
    
    
    
    
    
    public function DeleteByObject($aggregation, $object_id)
    {
        $this->db->query($GLOBALS["__65da1b1ec2d6653e8a" . "0ab7848e536215"]["_54835c417c39e87e647408c" . "531372f2d"], $aggregation, $object_id);
    }
    
    
    
    
    
    
    public function DeleteByUser($_3877cdf57a61e49b56aeab7af930ee82)
    {
        $this->db->query($GLOBALS["__65da1b1e" . "c2d6653e8a" . "0ab7848e53" . "6215"]["_e786f0e59840987822" . "91a9a32af941b2"], $_3877cdf57a61e49b56aeab7af930ee82);
    }
    
    
    
    
    
    
    
    public function GetLikes($aggregation, $object_id, $_f11369824f533e8206f9ccc0c9aab3a0 = 50, $_1f50e30be8c2fefa6881834e71d504a2 = 0)
    {
        $_7f5aa4e96d4b415a86ed72ebff677cbe = new DAL\Query($GLOBALS["__65da1b1ec" . "2d6653e8a0a" . "b7848e53621" . "5"]["_51bf54034" . "8e50763696" . "1ac634c592" . "993"], $aggregation, $object_id);
        $_7f5aa4e96d4b415a86ed72ebff677cbe->setLimit($_f11369824f533e8206f9ccc0c9aab3a0, $_1f50e30be8c2fefa6881834e71d504a2);
        $_189840d11056515e52402d1412a0b6e4 = $this->db->query($_7f5aa4e96d4b415a86ed72ebff677cbe);
        $_40d3655ba45c47853ff1adcc6921cb45 = [];
        while ($_343a395319323dd7609bcbc465b4d034 = $_189840d11056515e52402d1412a0b6e4->fetchArray()) {
            $_40d3655ba45c47853ff1adcc6921cb45[] = $_343a395319323dd7609bcbc465b4d034;
        }
        return $_40d3655ba45c47853ff1adcc6921cb45;
    }
}