use of io.lumeer.api.model.NotificationsSettings in project engine by Lumeer.
the class UserFacade method patchNewUserDefaultData.
private void patchNewUserDefaultData(User user, List<Project> projects, List<InitialUserData> dataList, Map<String, List<DefaultViewConfig>> configsMap) {
// global settings
InitialUserData data = dataList.stream().filter(datum -> datum.getProjectId() == null).findFirst().orElse(null);
if (data != null) {
var language = data.getLanguage() != null ? data.getLanguage().toString() : null;
user.setLanguage(language);
user.setNotifications(new NotificationsSettings(data.getNotifications(), language));
}
for (Project project : projects) {
InitialUserData projectData = dataList.stream().filter(datum -> Objects.equals(datum.getProjectId(), project.getId())).findFirst().orElse(data);
if (projectData != null && projectData.getDashboard() != null) {
configsMap.computeIfAbsent(project.getId(), id -> new ArrayList<>());
var defaultViewConfig = new DefaultViewConfig("default", Perspective.Search.getValue(), projectData.getDashboard(), ZonedDateTime.now());
defaultViewConfig.setUserId(user.getEmail());
configsMap.get(project.getId()).add(defaultViewConfig);
}
}
}
use of io.lumeer.api.model.NotificationsSettings in project engine by Lumeer.
the class UserCodec method decode.
@Override
@SuppressWarnings("unchecked")
public User decode(final BsonReader bsonReader, final DecoderContext decoderContext) {
Document bson = documentCodec.decode(bsonReader, decoderContext);
String id = bson.getObjectId(ID).toHexString();
String name = bson.getString(NAME);
String email = bson.getString(EMAIL);
List<String> authIds = bson.get(AUTH_IDS, List.class);
// old style
Set<String> organizations;
if (bson.containsKey(ALL_GROUPS)) {
List<Document> documentList = bson.get(ALL_GROUPS, List.class);
organizations = convertGroupsMapToOrganizations(documentList);
} else {
List<String> organizationsList = bson.getList(ORGANIZATIONS, String.class);
organizations = organizationsList != null ? new HashSet<>(organizationsList) : Collections.emptySet();
}
String defaultOrganizationId = bson.getString(DEFAULT_ORGANIZATION_ID);
String defaultProjectId = bson.getString(DEFAULT_PROJECT_ID);
List<String> wishes = bson.get(User.WISHES, List.class);
Boolean agreement = bson.getBoolean(AGREEMENT);
ZonedDateTime agreementDate = null;
if (bson.getDate(AGREEMENT_DATE) != null) {
agreementDate = ZonedDateTime.ofInstant(bson.getDate(AGREEMENT_DATE).toInstant(), ZoneOffset.UTC);
}
Boolean newsletter = bson.getBoolean(NEWSLETTER);
Boolean wizardDismissed = bson.getBoolean(WIZARD_DISMISSED);
Boolean affiliatePartner = bson.getBoolean(AFFILIATE_PARTNER);
Boolean emailVerified = bson.getBoolean(EMAIL_VERIFIED);
String referral = bson.getString(REFERRAL);
String language = bson.getString(LANGUAGE);
String timeZone = bson.getString(TIME_ZONE);
List<NotificationSetting> notificationSettings;
final String notificationsLanguage = bson.getString(NOTIFICATIONS_LANGUAGE);
List<Document> notifications = bson.getList(NOTIFICATIONS, Document.class);
if (notifications != null && notifications.size() != 2 && notifications.size() != 0) {
// it is not empty and it does not contain just the following 2 settings
notificationSettings = new ArrayList<>(notifications).stream().map(NotificationSettingCodec::convertFromDocument).collect(Collectors.toList());
if (notificationSettings.stream().filter(ns -> ns.getNotificationType() == NotificationType.TASK_COMMENTED && ns.getNotificationChannel() == NotificationChannel.Internal).findFirst().isEmpty()) {
notificationSettings.add(new NotificationSetting(NotificationType.TASK_COMMENTED, NotificationChannel.Internal, NotificationFrequency.Immediately));
notificationSettings.add(new NotificationSetting(NotificationType.TASK_MENTIONED, NotificationChannel.Internal, NotificationFrequency.Immediately));
}
if (notificationSettings.stream().filter(ns -> ns.getNotificationType() == NotificationType.TASK_REOPENED && ns.getNotificationChannel() == NotificationChannel.Internal).findFirst().isEmpty()) {
notificationSettings.add(new NotificationSetting(NotificationType.TASK_REOPENED, NotificationChannel.Internal, NotificationFrequency.Immediately));
}
if (notificationSettings.stream().anyMatch(ns -> ns.getNotificationType() == NotificationType.TASK_ASSIGNED && ns.getNotificationChannel() == NotificationChannel.Email) && notificationSettings.stream().filter(ns -> ns.getNotificationType() == NotificationType.TASK_REOPENED && ns.getNotificationChannel() == NotificationChannel.Email).findFirst().isEmpty()) {
notificationSettings.add(new NotificationSetting(NotificationType.TASK_REOPENED, NotificationChannel.Email, NotificationFrequency.Immediately));
}
} else {
notificationSettings = List.of(new NotificationSetting(NotificationType.ORGANIZATION_SHARED, NotificationChannel.Internal, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.PROJECT_SHARED, NotificationChannel.Internal, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.COLLECTION_SHARED, NotificationChannel.Internal, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.VIEW_SHARED, NotificationChannel.Internal, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.BULK_ACTION, NotificationChannel.Internal, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.TASK_ASSIGNED, NotificationChannel.Internal, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.TASK_REOPENED, NotificationChannel.Internal, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.TASK_UPDATED, NotificationChannel.Internal, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.TASK_REMOVED, NotificationChannel.Internal, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.TASK_UNASSIGNED, NotificationChannel.Internal, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.STATE_UPDATE, NotificationChannel.Internal, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.DUE_DATE_SOON, NotificationChannel.Internal, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.PAST_DUE_DATE, NotificationChannel.Internal, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.DUE_DATE_CHANGED, NotificationChannel.Internal, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.TASK_COMMENTED, NotificationChannel.Internal, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.TASK_MENTIONED, NotificationChannel.Internal, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.ORGANIZATION_SHARED, NotificationChannel.Email, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.PROJECT_SHARED, NotificationChannel.Email, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.COLLECTION_SHARED, NotificationChannel.Email, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.VIEW_SHARED, NotificationChannel.Email, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.BULK_ACTION, NotificationChannel.Email, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.TASK_ASSIGNED, NotificationChannel.Email, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.TASK_REOPENED, NotificationChannel.Email, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.TASK_UPDATED, NotificationChannel.Email, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.TASK_REMOVED, NotificationChannel.Email, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.TASK_UNASSIGNED, NotificationChannel.Email, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.STATE_UPDATE, NotificationChannel.Email, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.DUE_DATE_SOON, NotificationChannel.Email, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.PAST_DUE_DATE, NotificationChannel.Email, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.DUE_DATE_CHANGED, NotificationChannel.Email, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.TASK_COMMENTED, NotificationChannel.Email, NotificationFrequency.Immediately), new NotificationSetting(NotificationType.TASK_MENTIONED, NotificationChannel.Email, NotificationFrequency.Immediately));
}
Document hints = bson.get(HINTS, Document.class);
NotificationsSettings settings = new NotificationsSettings(notificationSettings, notificationsLanguage);
User user = new User(id, name, email, organizations, wishes, agreement, agreementDate, newsletter, wizardDismissed, referral, settings, new DataDocument(hints == null ? new Document() : hints));
user.setAuthIds(authIds != null ? new HashSet<>(authIds) : new HashSet<>());
user.setDefaultWorkspace(new DefaultWorkspace(defaultOrganizationId, defaultProjectId));
user.setAffiliatePartner(affiliatePartner != null && affiliatePartner);
user.setEmailVerified(emailVerified != null && emailVerified);
user.setTimeZone(timeZone);
user.setLanguage(language);
Document onboarding = bson.get(ONBOARDING, Document.class);
UserOnboarding userOnboarding = onboarding != null ? UserOnboardingCodec.convertFromDocument(onboarding) : new UserOnboarding();
user.setOnboarding(userOnboarding);
return user;
}
Aggregations