/*
 *******************************************************************************
 * Copyright (c) 2019 Contributors to the Eclipse Foundation
 *
 * See the NOTICE file(s) distributed with this work for additional
 * information regarding copyright ownership.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * SPDX-License-Identifier: EPL-2.0
 *******************************************************************************
 */
package org.eclipse.openk.contactbasedata.viewmodel;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.UUID;

@Data
public class ContactPersonDto implements Serializable {

    private String firstName;
    private String lastName;
    private String title;

    //from Contact
    @JsonProperty("contactId")
    private UUID contactUuid;
    private String contactType;
    private String note;

    //from Company
    @JsonProperty("companyContactId")
    private UUID companyContactUuid;
    private String companyName;
    private String companyType;
    private String hrNumber;

    // from RefPersonType
    private String refPersonTypeType;
    private String refPersonTypeDescription;

    //from RefSalutation
    private String refSalutationType;
    private String refSalutationDescription;
}
