RunOneSelect( queryBuilder: SQLQueryBuilderWrapper::SELECT_ONE( table: 'Tunes', id: $_GET['tune-id'] ) ); $existingRating = $db->RunSelect( queryBuilder: SQLQueryBuilderWrapper::SELECT( table: 'TuneRatings', ) ->where(cond: 'CreatedBy=:__user_id__') ->where(cond: 'TuneID=:__tune_id__') ->bindValue(name: '__user_id__', value: SessionWrapper::Get(target: SessionElement::USER_ID)) ->bindValue(name: '__tune_id__', value: $_GET['tune-id']) ); if(sizeof($existingRating) == 0) { $db->RunInsert( queryBuilder: SQLQueryBuilderWrapper::INSERT( table: 'TuneRatings' ) ->set(col: 'CreatedBy', value: ':__user_id__') ->set(col: 'TuneID', value: ':__tune_id__') ->set(col: 'Rating', value: ':__rating__') ->bindValue(name: '__user_id__', value: SessionWrapper::Get(target: SessionElement::USER_ID)) ->bindValue(name: '__tune_id__', value: $_GET['tune-id']) ->bindValue(name: '__rating__', value: $ratingValue) ); } elseif(sizeof($existingRating) == 1) { $db->RunUpdate( queryBuilder: SQLQueryBuilderWrapper::UPDATE( table: 'TuneRatings' ) ->set(col: 'Rating', value: ':__rating__') ->where(cond: 'CreatedBy=:__user_id__') ->where(cond: 'TuneID=:__tune_id__') ->bindValue(name: '__user_id__', value: SessionWrapper::Get(target: SessionElement::USER_ID)) ->bindValue(name: '__tune_id__', value: $_GET['tune-id']) ->bindValue(name: '__rating__', value: $ratingValue) ); } $tuneRatings = $db->RunSelect( queryBuilder: SQLQueryBuilderWrapper::SELECT( table: 'TuneRatings', ) ->cols(cols: [ 'SUM(CASE WHEN T.Rating = 1 THEN 1 ELSE 0 END) AS Likes', 'SUM(CASE WHEN T.Rating = -1 THEN 1 ELSE 0 END) AS Dislikes', ]) ->where(cond: 'TuneID=:__tune_id__') ->bindValue(name: '__tune_id__', value: $_GET['tune-id']) ); echo json_encode([ "LikeCount" => $tuneRatings[0]["Likes"], "DislikeCount" => $tuneRatings[0]["Dislikes"], ]); die();