//POST : /api/Task/CreateTask public IActionResult PostCapturedTime(CapturedTimeModel model) { _uow.SetActiveUserId(Int32.Parse(Request.Headers["CurrentUserId"])); var capturedTime = model.Id != 0 ? _uow.CapturedTimes.SingleOrDefault(u => u.Id == model.Id) : new CapturedTime(); capturedTime.Rate = model.Rate.Value; capturedTime.TaskId = model.TaskId.Value; capturedTime.UserId = model.UserId.Value; capturedTime.StartTime = DateTime.Parse(model.StartTime); capturedTime.EndTime = DateTime.Parse(model.EndTime); capturedTime.Color = model.Color.Value; try { if (isValidTime(model, model.Id.Value != 0)) { if (model.Id == 0) { _uow.CapturedTimes.Add(capturedTime); } _uow.Complete(); return(Ok(new { newId = capturedTime.Id })); } else { return(BadRequest(new { message = "Captured time would exceed maximum of 10 hours a day" })); } } catch (Exception ex) { throw ex; } }
private bool isValidTime(CapturedTimeModel model, bool isUpdate) { var hoursWorked = 0.0M; var startDate = DateTime.Parse(model.StartTime); var endDate = DateTime.Parse(model.EndTime); if (!isUpdate) { hoursWorked = _uow.CapturedTimes.GetCapturefTimePerUserPerDate(startDate, model.UserId.Value); } else { hoursWorked = _uow.CapturedTimes.GetCapturefTimePerUserPerDate(startDate, model.UserId.Value, model.Id.Value); } TimeSpan dateDiff = endDate - startDate; hoursWorked += decimal.Parse(dateDiff.TotalHours.ToString()); return(!(hoursWorked > 10)); }