Sha256: 75f6cb1dbe66db5592abb9d84d01f7b1c596801f35090050680535ba7cc4300f

Contents?: true

Size: 1.15 KB

Versions: 1

Compression:

Stored size: 1.15 KB

Contents

class Task
  attr_reader :task_id, :completed, :user_id, :date, :description, :manager_id

  def initialize(task_id, user_id, manager_id, date = set_system_date, description = nil, completed = 'Undone')
    validate_null('task_id', task_id)
    validate_null('user_id', user_id)
    validate_null('manager_id', manager_id)

    validate_completed(completed)

    @task_id = task_id
    @user_id = user_id
    @manager_id = manager_id
    @date = date
    @description = description
    @completed = completed

  end

  def to_hash
    {
      task_id: task_id,
      user_id: user_id,
      manager_id: manager_id,
      date: date,
      description: description,
      completed: completed
    }
  end

  private

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

  def set_system_date
    Time.now.strftime("%Y-%m-%d")
  end

  def validate_completed(completed)
    unless completed == 'Done' || completed == 'Undone' || completed == 'Process'
      raise ArgumentError, "Argument '#{completed}' can only be Done, Undone or Process"
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

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