public IActionResult Delete(Guid id, [FromBody] Deletion deletion) { logger.LogInformation($"Looking for timesheet {id}"); Timecard timecard = repository.Find(id); if (timecard == null) { return(NotFound()); } if (timecard.CanBeDeleted() == false) { return(StatusCode(409, new InvalidStateError() { })); } if (!timecard.IsPermitted(deletion)) { return(StatusCode(409, new InvalidPersonError() { })); } var transition = new Transition(deletion, TimecardStatus.Deleted); logger.LogInformation($"Adding deletion transition {transition}"); timecard.Transitions.Add(transition); repository.Delete(id); return(Ok(transition)); }
public IActionResult Submit(Guid id, [FromBody] Submittal submittal) { logger.LogInformation($"Looking for timesheet {id}"); Timecard timecard = repository.Find(id); if (timecard != null) { if (timecard.Status != TimecardStatus.Draft) { return(StatusCode(409, new InvalidStateError() { })); } if (timecard.Lines.Count < 1) { return(StatusCode(409, new EmptyTimecardError() { })); } if (!timecard.IsPermitted(submittal)) { return(StatusCode(409, new InvalidPersonError() { })); } var transition = new Transition(submittal, TimecardStatus.Submitted); logger.LogInformation($"Adding submittal {transition}"); timecard.Transitions.Add(transition); repository.Update(timecard); return(Ok(transition)); } else { return(NotFound()); } }
public IActionResult Cancel(Guid id, [FromBody] Cancellation cancellation) { logger.LogInformation($"Looking for timesheet {id}"); Timecard timecard = repository.Find(id); if (timecard != null) { if (timecard.Status != TimecardStatus.Draft && timecard.Status != TimecardStatus.Submitted) { return(StatusCode(409, new InvalidStateError() { })); } if (!timecard.IsPermitted(cancellation)) { return(StatusCode(409, new InvalidPersonError() { })); } var transition = new Transition(cancellation, TimecardStatus.Cancelled); logger.LogInformation($"Adding cancellation transition {transition}"); timecard.Transitions.Add(transition); repository.Update(timecard); return(Ok(transition)); } else { return(NotFound()); } }