package controllers;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import org.bson.types.ObjectId;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCursor;
import net.vz.mongodb.jackson.DBQuery;
import net.vz.mongodb.jackson.DBQuery.Query;
import ch.qos.logback.core.Context;
import utils.BasicRequests;
import models.Administrator;
import models.TrackSession;
import models.User;
import play.data.Form;
import play.libs.Json;
import play.mvc.Controller;
import play.mvc.Http;
import play.mvc.Result;
import play.mvc.With;
import views.html.trackedsessions.*;
import static play.libs.Json.toJson;
import play.mvc.Security;
@Security.Authenticated(AdminSecurity.class)
public class TrackedSessions extends Controller {
public static class deleteRequest {
public Long id;
public deleteRequest() {}
}
public static class listingRequest extends utils.BasicRequests.listingRequest {
public String userId;
}
public static Result index() {
Http.Context.current().args.put("admin_module", "Sessions");
Http.Context.current().args.put("admin_parent_section", "sessions");
listingRequest params = form( listingRequest.class ).bindFromRequest().get();
//Listview init
Query adminQuery = DBQuery.exists("host").exists("lastActionAt");
if( params.userId != null && !params.userId.isEmpty() ) {
adminQuery.is("userId", new ObjectId( params.userId ) );
}
net.vz.mongodb.jackson.DBCursor<TrackSession.Model> admins = models.TrackSession.coll.find( adminQuery ).skip( params.resultsPerPage * params.p - params.resultsPerPage )
.limit( params.resultsPerPage )
.sort( new BasicDBObject("lastActionAt", -1) );
params.setTotalResults( models.TrackSession.coll.find( adminQuery ).count() );
//TODO: only list session with tracked actions ?
return ok( listview.render( params , admins ) );
}
}