public IActionResult ReplaceLine(Guid timesheetId, Guid lineId, [FromBody] DocumentLine documentLine) { logger.LogInformation($"Looking for timesheet {timesheetId} with line {lineId}"); Timecard timecard = repository.Find(timesheetId); if (timecard != null) { if (timecard.Status != TimecardStatus.Draft) { return(StatusCode(409, new InvalidStateError() { })); } if (!timecard.HasLine(lineId)) { return(StatusCode(409, new LineNotFoundError() { })); } timecard.deleteLine(lineId); var annotatedLine = timecard.AddLine(documentLine); repository.Update(timecard); return(Ok(annotatedLine)); } else { return(NotFound()); } }