diff --git a/DataCenter_Windows/WindowsDataCenter/Interfaces/IRepository.cs b/DataCenter_Windows/WindowsDataCenter/Interfaces/IRepository.cs
index 6a53b7f..b376c7f 100644
--- a/DataCenter_Windows/WindowsDataCenter/Interfaces/IRepository.cs
+++ b/DataCenter_Windows/WindowsDataCenter/Interfaces/IRepository.cs
@@ -11,7 +11,17 @@ namespace Interfaces
/// Returns with full list of users,
/// plus a total user count. Pagination options are supported.
///
- UserList GetUsers();
+ UserList GetUsers(int pageNumber=-1, int pageSize=-1);
+ /////
+ ///// Get a paginated list of users
+ /////
+ ///// The number of the page to retrieve
+ ///// The size of the pages
+ /////
+ ///// Returns with full list of users,
+ ///// plus a total user count. Pagination options are supported.
+ /////
+ //UserList GetUsers(int pageNumber, int pageSize);
///
/// Search the user list for the following string
///
diff --git a/DataCenter_Windows/WindowsDataCenter/Interfaces/UserList.cs b/DataCenter_Windows/WindowsDataCenter/Interfaces/UserList.cs
index 701dfe7..ef5de0f 100644
--- a/DataCenter_Windows/WindowsDataCenter/Interfaces/UserList.cs
+++ b/DataCenter_Windows/WindowsDataCenter/Interfaces/UserList.cs
@@ -7,10 +7,23 @@ namespace Interfaces
public UserList()
{
Users = new List();
+ PageSize = 10;
}
public string Query { get; set; }
public int UserCount { get { return Users.Count; } }
+ public int TotalUserCount { get; set; }
public List Users { get; set; }
+
+ public int PageCount
+ {
+ get
+ {
+ if (TotalUserCount < PageSize)
+ return 1;
+ return (TotalUserCount / PageSize);
+ }
+ }
+
public int PageSize { get; set; }
public int PageNumber { get; set; }
}
diff --git a/DataCenter_Windows/WindowsDataCenter/SQLiteRepository/SQLiteProcedures.cs b/DataCenter_Windows/WindowsDataCenter/SQLiteRepository/SQLiteProcedures.cs
index 871bba2..f9ad682 100644
--- a/DataCenter_Windows/WindowsDataCenter/SQLiteRepository/SQLiteProcedures.cs
+++ b/DataCenter_Windows/WindowsDataCenter/SQLiteRepository/SQLiteProcedures.cs
@@ -18,5 +18,9 @@ namespace SQLiteRepository
public const string SEARCH_USER_LIST = "SELECT * FROM " + nameof(UserIdentity) + " where(" + nameof(UserIdentity.FirstName) + " Like ? OR " + nameof(UserIdentity.LastName) + " Like ?)";
public const string GET_LAST_TIMELOG_DIRECTION = "SELECT * FROM " + nameof(TimeLogDb) + " where " + nameof(TimeLogDb.UserId_FK) + " = ? order by " + nameof(TimeLogDb.SwipeEventDateTime) + " LIMIT 1";
+
+ public const string GET_ALL_USERS_PAGINATE = "select * from "+ nameof(UserIdentity)+" limit ? offset ?";
+
+ public const string GET_TOTAL_USER_COUNT = "select Max("+nameof(UserIdentity.Id)+") from " + nameof(UserIdentity);
}
}
\ No newline at end of file
diff --git a/DataCenter_Windows/WindowsDataCenter/SQLiteRepository/SQLiteRepository.cs b/DataCenter_Windows/WindowsDataCenter/SQLiteRepository/SQLiteRepository.cs
index f07e277..3da2464 100644
--- a/DataCenter_Windows/WindowsDataCenter/SQLiteRepository/SQLiteRepository.cs
+++ b/DataCenter_Windows/WindowsDataCenter/SQLiteRepository/SQLiteRepository.cs
@@ -23,16 +23,35 @@ namespace SQLiteRepository
_connection.CreateTable();
}
- public UserList GetUsers()
+ public UserList GetUsers(int pageNumber=-1, int pageSize=-1)
{
var ret = new UserList();
-
- var users = _connection.Query(SQLiteProcedures.GET_ALL_USERS);
+ List users;
+ int userCount = -1;
+ if (pageNumber == -1 && pageSize == -1)
+ {
+ users = _connection.Query(SQLiteProcedures.GET_ALL_USERS);
+ userCount = users.Count;
+ }
+ else
+ {
+ users = _connection.Query(SQLiteProcedures.GET_ALL_USERS_PAGINATE,
+ pageSize, (pageNumber-1)*pageSize);
+ userCount = _connection.ExecuteScalar(SQLiteProcedures.GET_TOTAL_USER_COUNT);
+ }
if (!users.Any())
{
- ret.PageNumber = 1;
- ret.PageSize = 20;
+ if (pageNumber == -1 && pageSize == -1)
+ {
+ ret.PageNumber = 1;
+ ret.PageSize = 20;
+ }
+ else
+ {
+ ret.PageNumber = pageNumber;
+ ret.PageSize = pageSize;
+ }
return ret;
}
@@ -54,9 +73,17 @@ namespace SQLiteRepository
}
ret.Users.Add(userObj);
}
- ret.PageSize = 20;
- ret.PageNumber = 1;
-
+ if (pageNumber == -1 && pageSize == -1)
+ {
+ ret.PageSize = 1; //TODO: switch to ret.UserCount
+ ret.PageNumber = 1;
+ }
+ else
+ {
+ ret.PageSize = pageSize;
+ ret.PageNumber = pageNumber;
+ }
+ ret.TotalUserCount = userCount;
return ret;
}
diff --git a/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/Controllers/UsersController.cs b/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/Controllers/UsersController.cs
index 73de953..2c85d61 100644
--- a/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/Controllers/UsersController.cs
+++ b/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/Controllers/UsersController.cs
@@ -24,8 +24,21 @@ namespace WindowsDataCenter
[CacheControl(MaxAge = 0)]
public IHttpActionResult GetUsers([FromUri] string query = "",[FromUri] int pageSize = -1, [FromUri] int pageNumber =-1)
{
- var userList = query == string.Empty ? _repo.GetUsers() : _repo.Search(query);
- userList.Query = query == string.Empty ? null : query;
+ UserList userList = new UserList();
+ pageNumber = pageNumber == -1 ? 1 : pageNumber;
+ pageSize = pageSize == -1 ? 1 : pageSize;
+ userList = query == string.Empty ? _repo.GetUsers(pageNumber, pageSize) : _repo.Search(query);
+ if (query != string.Empty)
+ {
+ userList.Query = query;
+ userList.PageNumber = 1;
+ userList.PageSize = userList.UserCount;
+ }
+ else
+ userList.Query = null;
+
+ userList.PageNumber = pageNumber;
+ userList.PageSize = pageSize;
var msg = Request.CreateResponse(HttpStatusCode.OK, userList);
return ResponseMessage(msg);
diff --git a/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/www/index.html b/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/www/index.html
index d1257fa..667f93f 100644
--- a/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/www/index.html
+++ b/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/www/index.html
@@ -1,9 +1,7 @@
Flexi Time Data Viewer
-
-
+
@@ -61,28 +59,46 @@
-
- | ID |
- UserId |
- firstName |
- lastName |
- |
- |
-
+
+ | ID |
+ UserId |
+ firstName |
+ lastName |
+ |
+ |
+
-
- |
- |
- |
- |
- |
- |
-
+
+ |
+ |
+ |
+ |
+ |
+ |
+
+
diff --git a/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/www/spa.js b/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/www/spa.js
index 6adf91d..ce38a02 100644
--- a/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/www/spa.js
+++ b/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/www/spa.js
@@ -35,11 +35,7 @@
}
var url = "timelogs" + "/" + userId;
if (args) {
- var appender = "?";
- args.forEach(function(arg) {
- url += appender + arg.key + "=" + arg.value;
- appender = "&";
- });
+ url = self.createRequestUrl(url, args, false, true);
}
location.hash = url;
};
@@ -80,16 +76,16 @@
* @param {string} routePath
* @param {Array