IdentityVerificationStatusEnum.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. namespace App\Enums;
  3. use App\Traits\EnumHelper;
  4. enum IdentityVerificationStatusEnum: string
  5. {
  6. use EnumHelper;
  7. case NOT_STARTED = 'not_started';
  8. case PENDING = 'pending';
  9. case APPROVED = 'approved';
  10. case IN_REVIEW = 'in_review';
  11. case DECLINED = 'declined';
  12. case EXPIRED = 'expired';
  13. public static function fromDidit(string $diditStatus): self
  14. {
  15. return match ($diditStatus) {
  16. 'Approved' => self::APPROVED,
  17. 'Declined' => self::DECLINED,
  18. 'In Review', 'Resubmitted' => self::IN_REVIEW,
  19. 'Not Started', 'In Progress',
  20. 'Awaiting User' => self::PENDING,
  21. 'Abandoned', 'Expired' => self::NOT_STARTED,
  22. 'Kyc Expired' => self::EXPIRED,
  23. default => self::PENDING,
  24. };
  25. }
  26. public static function diditTerminalStatuses(): array
  27. {
  28. return ['Approved', 'Declined', 'In Review', 'Abandoned'];
  29. }
  30. public function isFinished(): bool
  31. {
  32. return in_array($this, [self::APPROVED, self::DECLINED, self::IN_REVIEW], true);
  33. }
  34. public function allowsNewAttempt(): bool
  35. {
  36. return in_array($this, [self::NOT_STARTED, self::DECLINED, self::EXPIRED], true);
  37. }
  38. public function label(): string
  39. {
  40. return match ($this) {
  41. self::NOT_STARTED => __('identity_verification.status.not_started'),
  42. self::PENDING => __('identity_verification.status.pending'),
  43. self::APPROVED => __('identity_verification.status.approved'),
  44. self::IN_REVIEW => __('identity_verification.status.in_review'),
  45. self::DECLINED => __('identity_verification.status.declined'),
  46. self::EXPIRED => __('identity_verification.status.expired'),
  47. };
  48. }
  49. }