public void PunchOutTest()
        {
            PunchCruncher cruncher = new PunchCruncher(
                DateTime.Parse(string.Format("{0} 7:55 AM", DateTime.Now.ToShortDateString())),
                DateTime.Parse(string.Format("{0} 12:20 PM", DateTime.Now.ToShortDateString())),
                DateTime.Parse(string.Format("{0} 1:27 PM", DateTime.Now.ToShortDateString())),
                480, false);

            Assert.AreEqual(DateTime.Parse(string.Format("{0} 4:53 PM", DateTime.Now.ToShortDateString())).ToString(), cruncher.GetPunchOut().ToString());
        }
        public PunchResponse Post(PunchRequest request)
        {
            PunchCruncher cruncher = null;

            try
            {
                cruncher = new PunchCruncher(
                    DateTime.Parse(request.PunchIn),
                    DateTime.Parse(request.LunchOut),
                    DateTime.Parse(request.LunchIn),
                    Convert.ToInt32(request.TargetTotalMinutes),
                    Convert.ToBoolean(request.IsLunchOverrideEnabled));

                return(new PunchResponse {
                    Result = cruncher.GetPunchOut().ToString(), IsSuccessful = true
                });
            }
            catch (ArgumentException exception)
            {
                return(new PunchResponse {
                    Result = exception.Message, IsSuccessful = false
                });
            }
        }