Sha256: 3922df0f49ce7937534f6090d580bd4341ea69d2bf8d7bd0ae44340548366752

Contents?: true

Size: 1.01 KB

Versions: 2

Compression:

Stored size: 1.01 KB

Contents

# frozen_string_literal: true
require 'json'
require_relative "../../support/meta_code"
require_relative "./student_abstract.rb"

class StudentShort < AbstractStudent
    attr_reader :fio
    private_attr_writer :git, :contact, :id, :fio

    def initialize(id:, fio:, git:, contact:)
        self.id = id
        self.fio = fio
        self.git = git
        self.contact = contact
    end

    def self.from_student(student) 
        StudentShort.new(
            id: student.id, 
            fio: "#{student.first_name} #{student.last_name.upcase[0]}. #{student.paternal_name.upcase[0]}.",
            git: student.git,
            contact: student.contact
        )
    end

    def self.from_json(json)
      result = JSON.parse(json)
      raise ArgumentError, 'Missing field: fio' unless result.key?('fio')

      fio = result.delete('fio')
      StudentShort.new(
        id: result['id'],
        fio: fio,
        git: result['git'],
        contact: result['contact']
      )
    end    
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rybish_code-2.0.0 lib/source/models/student/student_short.rb
rybish_code-1.1.6 lib/source/models/student/student_short.rb