// Path: app/utils/BasicRequests.java
// public class BasicRequests {
// 
// 	public static class deleteRequest {
// 		public Long id;
// 		public deleteRequest() {}
// 	}
// 	public static class deleteRequestMongoModel {
// 		public String id;
// 		public deleteRequestMongoModel() {}
// 	}
// 
// 	public static class filterRequest {
// 		public String term;
// 	}
// 	
// 	public static class listingRequest {
// 		public Integer p;
// 		public String list_order_by;
// 		public String order_dir = "";
// 		public Byte resultsPerPage;
// 		
// 		protected Integer totalResults = 0;
// 		protected Integer totalPages = 0;
// 		protected Byte paginationSectionSize = 6;
// 		
// 		public listingRequest() {
// 			p = 1;
// 			resultsPerPage = 25;
// 		}
// 		
// 		public void setTotalResults(Integer results) {
// 			totalResults = results;
// 			this.totalPages = (int)( Math.ceil( (double)totalResults / (double)resultsPerPage  ) );
// 		}
// 		public Integer getTotalPages() {
// 			return totalPages;
// 		}
// 		public Integer getTotalResults() {
// 			return totalResults;
// 		}
// 		public int getNextSetOfPages() {
// 			if( this.getTotalPages() - p > paginationSectionSize ) 
// 				return p >= paginationSectionSize ? p + paginationSectionSize : ( paginationSectionSize + 3 <= this.getTotalPages() ? paginationSectionSize + 3 : this.getTotalPages() );
// 			return this.getTotalPages();
// 			
// 		}
// 		public int getFirstSetOfPages() {
// 			if( p - paginationSectionSize >= 1 ) return p - paginationSectionSize;
// 			else return 1;
// 		}
// 		public int getResultsPerPage() {
// 			return resultsPerPage;
// 		}
// 		public Integer getCurrentPage () {
// 			return p;
// 		}
// 	}
// 	
// 	
// 	
// }
// 
// Path: app/models/Administrator.java
// @MongoCollection(name = "administrators")
// public class Administrator {
// 
// 	public static JacksonDBCollection<Administrator.Model, String> coll = MongoDB.getCollection("administrators", Administrator.Model.class, String.class);
// 	public static class Model {
// 		@ObjectId
// 		@Id
// 		public String _id;
// 		
// 		public Date createdAt;
// 		public Date lastLoginAt;
// 		public Date lastUpdatedAt;
// 		
// 		@Required
// 		public String username;
// 		public String password;
// 	}
// 	
// 
// 	public static WriteResult<Administrator.Model, String> save(Administrator.Model ob) {
// 		return coll.save( ob );
// 	}
// 	public static WriteResult<Administrator.Model, String> update(String id, Administrator.Model ob) {
// 		return coll.updateById(id , ob);
// 	}
// }
// 
// Path: app/models/User.java
// @MongoCollection(name = "users")
// public class User {
// 
// 	public static JacksonDBCollection<User.Model, String> coll = MongoDB.getCollection("users", User.Model.class, String.class);
// 
// 	public static class Model {
// 		@ObjectId
// 		@Id
// 		public String _id;
// 	
// 		@Required
// 		public String username;
// 		public String password;
// 		
// 		public Date createdAt;
// 		public Date lastLoginAt;
// 		public Date lastUpdatedAt;
// 		
// 		public String email;
// 		
// 		public String domainsString;
// 		public List<String> domains;
// 	}
// 	
// 	public static WriteResult<User.Model, String> save(User.Model ob) {
// 		return coll.save(ob);
// 	}
// 	public static WriteResult<User.Model, String> update(String id, User.Model ob) {
// 		return coll.updateById(id , ob);
// 	}
// 	
// 	public static Boolean isDomainTrackable(String domain, User.Model ob) {
// 		if( ob.domains.contains(domain) ) return true;
// 		for(String in : ob.domains) {
// 			if( in.substring(0, 1).equals(".") ) {
// 				if( domain.contains(in) || ( "."+domain ).contains( in ) ) return true;
// 			}
// 		}
// 		return false;
// 	}
// 	
// 	public static Integer getSessionsCount(User.Model ob) {
// 		return TrackSession.coll.find( DBQuery.is("userId", new org.bson.types.ObjectId( ob._id ) ) ).count();
// 	}
// 	
// }


import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import org.bson.types.ObjectId;
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.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.users.*;
import static play.libs.Json.toJson;
import play.mvc.Security;
package controllers;








@Security.Authenticated(AdminSecurity.class)
public class Users extends Controller {

	public static String module = "Users";
	public static String basePath = controllers.routes.Users.index().toString();
	
	public static class deleteRequest {
		public Long id;
		public deleteRequest() {}
	}
	
	public static Result index() {
		Http.Context.current().args.put("admin_module", "Users");
		Http.Context.current().args.put("admin_parent_section", "users");
		
// Path: app/utils/BasicRequests.java
// public class BasicRequests {
// 
// 	public static class deleteRequest {
// 		public Long id;
// 		public deleteRequest() {}
// 	}
// 	public static class deleteRequestMongoModel {
// 		public String id;
// 		public deleteRequestMongoModel() {}
// 	}
// 
// 	public static class filterRequest {
// 		public String term;
// 	}
// 	
// 	public static class listingRequest {
// 		public Integer p;
// 		public String list_order_by;
// 		public String order_dir = "";
// 		public Byte resultsPerPage;
// 		
// 		protected Integer totalResults = 0;
// 		protected Integer totalPages = 0;
// 		protected Byte paginationSectionSize = 6;
// 		
// 		public listingRequest() {
// 			p = 1;
// 			resultsPerPage = 25;
// 		}
// 		
// 		public void setTotalResults(Integer results) {
// 			totalResults = results;
// 			this.totalPages = (int)( Math.ceil( (double)totalResults / (double)resultsPerPage  ) );
// 		}
// 		public Integer getTotalPages() {
// 			return totalPages;
// 		}
// 		public Integer getTotalResults() {
// 			return totalResults;
// 		}
// 		public int getNextSetOfPages() {
// 			if( this.getTotalPages() - p > paginationSectionSize ) 
// 				return p >= paginationSectionSize ? p + paginationSectionSize : ( paginationSectionSize + 3 <= this.getTotalPages() ? paginationSectionSize + 3 : this.getTotalPages() );
// 			return this.getTotalPages();
// 			
// 		}
// 		public int getFirstSetOfPages() {
// 			if( p - paginationSectionSize >= 1 ) return p - paginationSectionSize;
// 			else return 1;
// 		}
// 		public int getResultsPerPage() {
// 			return resultsPerPage;
// 		}
// 		public Integer getCurrentPage () {
// 			return p;
// 		}
// 	}
// 	
// 	
// 	
// }
// 
// Path: app/models/Administrator.java
// @MongoCollection(name = "administrators")
// public class Administrator {
// 
// 	public static JacksonDBCollection<Administrator.Model, String> coll = MongoDB.getCollection("administrators", Administrator.Model.class, String.class);
// 	public static class Model {
// 		@ObjectId
// 		@Id
// 		public String _id;
// 		
// 		public Date createdAt;
// 		public Date lastLoginAt;
// 		public Date lastUpdatedAt;
// 		
// 		@Required
// 		public String username;
// 		public String password;
// 	}
// 	
// 
// 	public static WriteResult<Administrator.Model, String> save(Administrator.Model ob) {
// 		return coll.save( ob );
// 	}
// 	public static WriteResult<Administrator.Model, String> update(String id, Administrator.Model ob) {
// 		return coll.updateById(id , ob);
// 	}
// }
// 
// Path: app/models/User.java
// @MongoCollection(name = "users")
// public class User {
// 
// 	public static JacksonDBCollection<User.Model, String> coll = MongoDB.getCollection("users", User.Model.class, String.class);
// 
// 	public static class Model {
// 		@ObjectId
// 		@Id
// 		public String _id;
// 	
// 		@Required
// 		public String username;
// 		public String password;
// 		
// 		public Date createdAt;
// 		public Date lastLoginAt;
// 		public Date lastUpdatedAt;
// 		
// 		public String email;
// 		
// 		public String domainsString;
// 		public List<String> domains;
// 	}
// 	
// 	public static WriteResult<User.Model, String> save(User.Model ob) {
// 		return coll.save(ob);
// 	}
// 	public static WriteResult<User.Model, String> update(String id, User.Model ob) {
// 		return coll.updateById(id , ob);
// 	}
// 	
// 	public static Boolean isDomainTrackable(String domain, User.Model ob) {
// 		if( ob.domains.contains(domain) ) return true;
// 		for(String in : ob.domains) {
// 			if( in.substring(0, 1).equals(".") ) {
// 				if( domain.contains(in) || ( "."+domain ).contains( in ) ) return true;
// 			}
// 		}
// 		return false;
// 	}
// 	
// 	public static Integer getSessionsCount(User.Model ob) {
// 		return TrackSession.coll.find( DBQuery.is("userId", new org.bson.types.ObjectId( ob._id ) ) ).count();
// 	}
// 	
// }


// Path: app/controllers/Users.java
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import org.bson.types.ObjectId;
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.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.users.*;
import static play.libs.Json.toJson;
import play.mvc.Security;

package controllers;








@Security.Authenticated(AdminSecurity.class)
public class Users extends Controller {

	public static String module = "Users";
	public static String basePath = controllers.routes.Users.index().toString();
	
	public static class deleteRequest {
		public Long id;
		public deleteRequest() {}
	}
	
	public static Result index() {
		Http.Context.current().args.put("admin_module", "Users");
		Http.Context.current().args.put("admin_parent_section", "users");
		
		utils.BasicRequests.listingRequest params = form( utils.BasicRequests.listingRequest.class ).bindFromRequest().get();