using System;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using Interfaces;

namespace WindowsDataCenter
{
    /// <summary>
    /// 
    /// </summary>
    [RoutePrefix("api/swipedata")]
    public class SwipeDataController : ApiController
    {
        private readonly IRepository _repo;
        private readonly ILogger _logger;

        /// <summary>
        /// 
        /// </summary>
        /// <param name="repo"></param>
        /// <param name="logger"></param>
        public SwipeDataController(IRepository repo, ILogger logger)
        {
            if(repo == null) throw new ArgumentNullException(nameof(repo));
            _repo = repo;
            if(logger == null) throw new ArgumentNullException(nameof(logger));
            _logger = logger;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="cData"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("")]
        public IHttpActionResult PostData([FromBody] CardData cData)
        {
            int logId;
            var resp = _repo.LogEventTime(new Identifier {UniqueId = cData.CardUId}, out logId);
            _logger.Trace("Received new \"Swipe Event\" for UId: {0} at {1}, direction is : {2}", cData.CardUId,
                DateTime.UtcNow, resp.Direction);
            return Ok(new {Id = logId, resp.Direction});
        }
    }
}