Sha256: 9f94d07fe50647b79422b3574084397bec92e4fe839974082b9befc6bd7ee90d

Contents?: true

Size: 908 Bytes

Versions: 1

Compression:

Stored size: 908 Bytes

Contents

# frozen_string_literal: true

class Manager
  attr_accessor :id, :name, :email, :phone

  def initialize(id, name, email, phone)
    validate_null("name", name)
    validate_null("email", email)
    validate_null("phone", phone)

    @id = id
    @name = name
    @email = email
    @phone = phone

    unless valid_email?
      raise ArgumentError, "Invalid email format"
    end

    unless valid_phone?
      raise ArgumentError, "Invalid phone number format"
    end
  end

  def validate_null(name, value)
    if value.nil?
      raise ArgumentError, "Argument '#{name}' cannot be null"
    end
  end

  def valid_email?
    email_regex = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i
    !!(email =~ email_regex)
  end

  def valid_phone?
    phone_regex = /\A(\+7|8)\s?\(?\d{3}\)?\s?\d{3}[\s-]?\d{2}[\s-]?\d{2}\z/
    !!(phone =~ phone_regex)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
papaSquidLib-0.1.0 lib/models/manager.rb