isCompleted property

bool get isCompleted

Implementation

bool get isCompleted {
  bool edited = checkpointEditingStatus == CheckpointEditingStatus.completed;
  bool statusIsOk =
      status == ChecklistGroupStatus.completed &&
      checkpointEditingStatus != CheckpointEditingStatus.editing;

  bool comesInBStatusAndWithData = switch (checkpointType) {
    CheckpointType.documentField =>
      status == ChecklistGroupStatus.inProcess &&
          isOk != null &&
          refDocfieldVal1.isNotEmpty,
    _ => status == ChecklistGroupStatus.inProcess && isOk != null,
  };

  bool editing = checkpointEditingStatus == CheckpointEditingStatus.editing;

  if (edited || statusIsOk) {
    switch (checkpointType) {
      case CheckpointType.signature:
        return signatures.isNotEmpty &&
            signatures.last.content.isNotEmpty &&
            signatures.last.firstName.isNotEmpty &&
            signatures.last.lastName.isNotEmpty;
      case CheckpointType.comment:
        return commentString.isNotEmpty;
      default:
        break;
    }
  }

  return edited || statusIsOk || (comesInBStatusAndWithData && !editing);
}