/*
 *******************************************************************************
 * 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 InternalPersonDto implements Serializable {
    private String firstName;
    private String lastName;
    private String title;
    private String department;
    private String uid;
    private String userRef;

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

    // from RefPersonType
    @JsonProperty("personTypeId")
    private UUID personTypeUuid;
    private String personType;

    //from RefSalutation
    @JsonProperty("salutationId")
    private UUID salutationUuid;
    private String salutationType;
}