18F/e-QIP-prototype

View on GitHub
api/benefit.go

Summary

Maintainability
A
1 hr
Test Coverage
package api

import (
    "encoding/json"
)

// Benefit payload type.
type Benefit struct {
    PayloadBegin                         Payload `json:"Began,omitempty" sql:"-"`
    PayloadEnd                           Payload `json:"End,omitempty" sql:"-"`
    PayloadFrequency                     Payload `json:"Frequency,omitempty" sql:"-"`
    PayloadOtherFrequency                Payload `json:"OtherFrequency,omitempty" sql:"-"`
    PayloadOtherFrequencyTypeExplanation Payload `json:"OtherFrequencyTypeExplanation,omitempty" sql:"-"`
    PayloadReceived                      Payload `json:"Received,omitempty" sql:"-"`
    PayloadCountry                       Payload `json:"Country" sql:"-"`
    PayloadValue                         Payload `json:"Value" sql:"-"`
    PayloadValueEstimated                Payload `json:"ValueEstimated" sql:"-"`
    PayloadReason                        Payload `json:"Reason" sql:"-"`
    PayloadObligated                     Payload `json:"Obligated" sql:"-"`
    PayloadObligatedExplanation          Payload `json:"ObligatedExplanation" sql:"-"`

    Begin                         *DateControl `json:"-"`
    End                           *DateControl `json:"-"`
    Frequency                     *Radio       `json:"-"`
    OtherFrequency                *Textarea    `json:"-"`
    OtherFrequencyTypeExplanation *Textarea    `json:"-"`
    Received                      *DateControl `json:"-"`
    Country                       *Country     `json:"-"`
    Value                         *Number      `json:"-"`
    ValueEstimated                *Checkbox    `json:"-"`
    Reason                        *Textarea    `json:"-"`
    Obligated                     *Branch      `json:"-"`
    ObligatedExplanation          *Textarea    `json:"-"`
}

// Unmarshal bytes in to the entity properties.
func (entity *Benefit) Unmarshal(raw []byte) error {
    err := json.Unmarshal(raw, entity)
    if err != nil {
        return err
    }

    if entity.PayloadBegin.Type != "" {
        begin, err := entity.PayloadBegin.Entity()
        if err != nil {
            return err
        }
        entity.Begin = begin.(*DateControl)
    }

    if entity.PayloadEnd.Type != "" {
        end, err := entity.PayloadEnd.Entity()
        if err != nil {
            return err
        }
        entity.End = end.(*DateControl)
    }

    if entity.PayloadFrequency.Type != "" {
        frequency, err := entity.PayloadFrequency.Entity()
        if err != nil {
            return err
        }
        entity.Frequency = frequency.(*Radio)
    }

    if entity.PayloadOtherFrequency.Type != "" {
        otherFrequency, err := entity.PayloadOtherFrequency.Entity()
        if err != nil {
            return err
        }
        entity.OtherFrequency = otherFrequency.(*Textarea)
    }

    if entity.PayloadOtherFrequencyTypeExplanation.Type != "" {
        otherFrequencyTypeExplanation, err := entity.PayloadOtherFrequencyTypeExplanation.Entity()
        if err != nil {
            return err
        }
        entity.OtherFrequencyTypeExplanation = otherFrequencyTypeExplanation.(*Textarea)
    }

    if entity.PayloadReceived.Type != "" {
        received, err := entity.PayloadReceived.Entity()
        if err != nil {
            return err
        }
        entity.Received = received.(*DateControl)
    }

    country, err := entity.PayloadCountry.Entity()
    if err != nil {
        return err
    }
    entity.Country = country.(*Country)

    value, err := entity.PayloadValue.Entity()
    if err != nil {
        return err
    }
    entity.Value = value.(*Number)

    valueEstimated, err := entity.PayloadValueEstimated.Entity()
    if err != nil {
        return err
    }
    entity.ValueEstimated = valueEstimated.(*Checkbox)

    reason, err := entity.PayloadReason.Entity()
    if err != nil {
        return err
    }
    entity.Reason = reason.(*Textarea)

    obligated, err := entity.PayloadObligated.Entity()
    if err != nil {
        return err
    }
    entity.Obligated = obligated.(*Branch)

    obligatedExplanation, err := entity.PayloadObligatedExplanation.Entity()
    if err != nil {
        return err
    }
    entity.ObligatedExplanation = obligatedExplanation.(*Textarea)

    return err
}

// Marshal to payload structure
func (entity *Benefit) Marshal() Payload {
    if entity.Begin != nil {
        entity.PayloadBegin = entity.Begin.Marshal()
    }
    if entity.End != nil {
        entity.PayloadEnd = entity.End.Marshal()
    }
    if entity.Frequency != nil {
        entity.PayloadFrequency = entity.Frequency.Marshal()
    }
    if entity.OtherFrequency != nil {
        entity.PayloadOtherFrequency = entity.OtherFrequency.Marshal()
    }
    if entity.OtherFrequencyTypeExplanation != nil {
        entity.PayloadOtherFrequencyTypeExplanation = entity.OtherFrequencyTypeExplanation.Marshal()
    }
    if entity.Received != nil {
        entity.PayloadReceived = entity.Received.Marshal()
    }
    if entity.Country != nil {
        entity.PayloadCountry = entity.Country.Marshal()
    }
    if entity.Value != nil {
        entity.PayloadValue = entity.Value.Marshal()
    }
    if entity.ValueEstimated != nil {
        entity.PayloadValueEstimated = entity.ValueEstimated.Marshal()
    }
    if entity.Reason != nil {
        entity.PayloadReason = entity.Reason.Marshal()
    }
    if entity.Obligated != nil {
        entity.PayloadObligated = entity.Obligated.Marshal()
    }
    if entity.ObligatedExplanation != nil {
        entity.PayloadObligatedExplanation = entity.ObligatedExplanation.Marshal()
    }
    return MarshalPayloadEntity("benefit", entity)
}