/**
 * 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.beans.factory.annotation.Autowired;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import org.springframework.stereotype.Repository;

import javax.sql.DataSource;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

@RepositoryRestResource(collectionResourceRel = "resultStats", path = "resultStats")
@Repository
public class ResultRepo extends BaseRepository {
    private Logger log = Logger.getLogger(this.getClass());

    public UsageStats getClicks(String id) {

        String query = "select r.id, r.title , sum (rs.numberofviews) from result r, usagestats.resultsstats rs " +
                "where rs.resultid=r.id and r.id=? group by r.id, r. title;";

        List<String> values = new ArrayList<String>();
        values.add(id);

        List<UsageStats> results = executePreparedQuery(query, values);

        if (!results.isEmpty()) return results.get(0);
        return new UsageStats();

    }

    public List<UsageStats> getMostPopular() {

        String query = "select r.id, r.title , sum (rs.numberofviews) from result r, usagestats.resultsstats rs where " +
                "rs.resultid=r.id group by r.id, r. title order by  sum (rs.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 pr.id=? and r.id=pr.result  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 resultId) {

        String query = "select rs.resultid, rs.timestamp_month , rs.numberofviews from  usagestats.resultsstats rs " +
                " where rs.resultid=?  order by rs.timestamp_month  desc ;";
        List<String> values = new ArrayList<String>();
        values.add(resultId);
        return executePreparedQuery(query, values);

    }

}


