FlexitimeTracker/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/Controllers/TimelogController.cs
Chris.Watts90@outlook.com 00a6894197 added trace logging to the controller classes.
changed nlog config file to output trace logging.
#9
2017-02-13 14:07:09 +00:00

54 lines
1.7 KiB
C#

using System;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Web.Http;
using WindowsDataCenter.Helpers;
using Interfaces;
using Newtonsoft.Json;
namespace WindowsDataCenter
{
[RoutePrefix("api/timelogs")]
public class TimelogController: ApiController
{
private readonly IRepository _repo;
private readonly ILogger _logger;
public TimelogController(IRepository repo, ILogger logger)
{
if (repo == null)
{
throw new ArgumentNullException(nameof(repo));
}
_repo = repo;
if(logger == null) throw new ArgumentNullException(nameof(logger));
_logger = logger;
}
[Route("")]
[CacheControl(MaxAge = 0)]
public IHttpActionResult GetTimeLogs([FromUri]int userId, [FromUri] DateTime? selectedDate = null)
{
_logger.Trace("Getting Time Logs for user with id: {0}, for the calendar week that the date {1} belongs to.", userId, selectedDate);
TimeLogList logList;
if (selectedDate == null)
{
logList = _repo.GetTimeLogs(userId);
}
else
{
logList = _repo.GetTimeLogs(userId, selectedDate.Value);
}
_logger.Trace("Got Time logs for the user: {0}, returned {1} records", userId, logList.TimeLogCount);
var msg = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StringContent(JsonConvert.SerializeObject(logList), Encoding.UTF8, "application/json")
};
return ResponseMessage(msg);
}
}
}