ContactAddress.java

package no.nav.data.team.contact.domain;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.FieldNameConstants;
import no.nav.data.common.validator.Validated;
import no.nav.data.common.validator.Validator;
import no.nav.data.team.contact.dto.ContactAddressResponse;
import no.nav.data.team.integration.slack.SlackClient;

import static org.apache.commons.lang3.StringUtils.trimToNull;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
public class ContactAddress implements Validated {

    private String address;
    private Channel type;

    @Override
    public void format() {
        setAddress(trimToNull(address));
    }

    @Override
    public void validateFieldValues(Validator<?> validator) {
        validator.checkNull(Fields.type, type);
        validator.checkNull(Fields.address, address);
        if (type == Channel.EPOST) {
            validator.checkEmail(Fields.address, address);
        }
    }

    public ContactAddressResponse toResponse(SlackClient slackClient) {
        return ContactAddressResponse.builder()
                .address(address)
                .type(type)
                .slackChannel(type == Channel.SLACK ? slackClient.getChannel(address) : null)
                .slackUser(type == Channel.SLACK_USER ? slackClient.getUserBySlackId(address) : null)
                .build();
    }
}