UserDataDTO.java

package edu.ucsb.cs156.dining.models;

import edu.ucsb.cs156.dining.entities.User;
import edu.ucsb.cs156.dining.statuses.ModerationStatus;
import java.time.LocalDate;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;

@Data
@AllArgsConstructor
@Builder
public class UserDataDTO {
  private long id;
  private String email;
  private String googleSub;
  private String pictureUrl;
  private String fullName;
  private String givenName;
  private String familyName;
  private boolean emailVerified;
  private String locale;
  private String hostedDomain;
  private String alias;
  private String proposedAlias;
  private ModerationStatus status;
  private LocalDate dateApproved;
  private boolean admin;
  private boolean moderator;

  public static UserDataDTO from(User user, boolean isAdmin, boolean isModerator) {
    return UserDataDTO.builder()
        .id(user.getId())
        .email(user.getEmail())
        .googleSub(user.getGoogleSub())
        .pictureUrl(user.getPictureUrl())
        .fullName(user.getFullName())
        .givenName(user.getGivenName())
        .familyName(user.getFamilyName())
        .emailVerified(user.getEmailVerified())
        .locale(user.getLocale())
        .hostedDomain(user.getHostedDomain())
        .alias(user.getAlias())
        .proposedAlias(user.getProposedAlias())
        .status(user.getStatus())
        .dateApproved(user.getDateApproved())
        .admin(isAdmin)
        .moderator(isModerator)
        .build();
  }
}