package org.karmaexchange.resources.derived;
import org.karmaexchange.auth.GlobalUid;
import org.karmaexchange.auth.GlobalUidMapping;
import org.karmaexchange.auth.GlobalUidType;
import org.karmaexchange.auth.AuthProvider.UserInfo;
import org.karmaexchange.dao.KeyWrapper;
import org.karmaexchange.dao.Organization;
import org.karmaexchange.dao.User;
import org.karmaexchange.dao.User.RegisteredEmail;
import com.googlecode.objectify.Key;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
public class BaseSourceUser {
private String firstName;
private String lastName;
private String email;
public BaseSourceUser(User user) {
firstName = user.getFirstName();
lastName= user.getLastName();
// If the primary email changes we need new mapping info at the source db.
// TODO(avaliani): Think about how to address this. One way to store for each db
// the contact id.
// We need to handle correctly the case that a user changes their primary email
// address.
email = user.getPrimaryEmail();
}
public Key<GlobalUidMapping> createGlobalUidMappingKey() {
return GlobalUidMapping.getKey(
new GlobalUid(GlobalUidType.EMAIL, email));
}
public UserInfo createUser(Key<Organization> eventListingOrgKey) {
User newUser = User.create();
newUser.setFirstName(firstName);
newUser.setLastName(lastName);
newUser.getRegisteredEmails().add(new RegisteredEmail(email, true));
newUser.getEventOrgs().add(KeyWrapper.create(eventListingOrgKey));
return new UserInfo(newUser);
}
}