/**
 * Created by eri_k on 2/20/2016.
 */
package eu.dnetlib.usagestats.repos;


import eu.dnetlib.usagestats.domain.UsageStats;
import org.apache.log4j.Logger;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import org.springframework.stereotype.Repository;

import java.util.ArrayList;
import java.util.List;


@RepositoryRestResource(collectionResourceRel = "projectStats", path = "projectStats")
@Repository
public class ProjectRepo extends BaseRepository {

    private Logger log = Logger.getLogger(this.getClass());


    public UsageStats getClicks(String projectId) {

        String query = "select p.id, p.title, sum (ps.numberofviews) from project p, usagestats.projectsstats ps " +
                "where ps.projectid=p.id and p.id=? group by p.id, p.title;";

        List<String> values = new ArrayList<String>();
        values.add(projectId);

        List<UsageStats> results = executePreparedQuery(query, values);
        if (!results.isEmpty()) return results.get(0);

        return new UsageStats();

    }


    public List<UsageStats> getMostPopular() {
        String query = "select p.id, p.title , sum (ps.numberofviews) from project p, usagestats.projectsstats ps where " +
                "ps.projectid=p.id group by p.id, p.title order by  sum(ps.numberofviews)  desc limit 10;";

        return executeQuery(query);
    }


    public List<UsageStats> getMostPopularPubs(String projectId) {

        String query = "select r.id, r.title , sum(rs.numberofviews) from result r, usagestats.resultsstats rs, " +
                "project_results pr  where r.id=pr.result and pr.id=? and  rs.resultid=r.id group by r.id, r. title order by  sum(rs.numberofviews)  desc limit 10;";


        List<String> values = new ArrayList<String>();
        values.add(projectId);
        return executePreparedQuery(query, values);

    }


    public List<UsageStats> getPopularityOverTime(String projectId) {

        String query = "select ps.projectid, ps.timestamp_month , ps.numberofviews from usagestats.projectsstats ps " +
                " where   ps.projectid=?  order by ps.timestamp_month  desc ;";
        List<String> values = new ArrayList<String>();
        values.add(projectId);
        return executePreparedQuery(query, values);

    }


}


