FlexitimeTracker/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/Controllers/UsersController.cs
chris.watts90@outlook.com cdac61b18d added pagination to the repository GetUser method.
added pagesixe to userlist object.
added total user count to enable PageCount to work correctly.
added GET_TOTAL_USER_COUNT and GET_ALL_USERS_PAGINATE sqlite procedures to support pagination.
updated methods in SQLiteRepository to support pagination procedures and pagination properties of UserList.
updated UsersController to support pagination parameters.
tidied html script tags.
added pagination buttons at the bottom of user page. including drop down to select PageSize
added setPageSize, goToUserPage and setPagination methods to the viewmodel.
updated other methods for sammy etc to work with pagesize and PageNumber params.
#11
2017-02-12 22:26:00 +00:00

85 lines
2.7 KiB
C#

using System;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Web.Http;
using WindowsDataCenter.Helpers;
using Interfaces;
namespace WindowsDataCenter
{
[RoutePrefix("api/users")]
public class UsersController : ApiController
{
private readonly IRepository _repo;
public UsersController(IRepository repo)
{
if(repo == null) { throw new ArgumentNullException(nameof(repo));}
_repo = repo;
}
[HttpGet]
[Route("")]
[CacheControl(MaxAge = 0)]
public IHttpActionResult GetUsers([FromUri] string query = "",[FromUri] int pageSize = -1, [FromUri] int pageNumber =-1)
{
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);
}
[HttpGet]
[Route("{id:int}")]
[CacheControl(MaxAge = 0)]
public IHttpActionResult GetUserDetails(int id)
{
var ret = _repo.GetUser(id);
var resp = Request.CreateResponse(HttpStatusCode.OK, ret);
return ResponseMessage(resp);
}
[HttpPost]
[Route("create")]
[CacheControl(MaxAge = 0)]
public IHttpActionResult CreateUser([FromBody] User user)
{
int userId;
_repo.UpdateUser(user, out userId);
//TODO return ID.
return ResponseMessage(new HttpResponseMessage(HttpStatusCode.OK) {Content = new StringContent("unknownIdTODO")});
}
[HttpPost]
[Route("edit")]
[CacheControl(MaxAge=0)]
public IHttpActionResult EditUser([FromBody] User user)
{
int userId;
_repo.UpdateUser(user, out userId);
var resp = Request.CreateResponse(HttpStatusCode.OK, userId);
return ResponseMessage(resp);
//ResponseMessage(new HttpResponseMessage(HttpStatusCode.Created)
//{
// //TODO: return ID
// Content = new StringContent("TODO:return UserID")
//});
}
}
}