All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.imunity.furms.ui.notifications.AlarmNotificationProducer Maven / Gradle / Ivy

There is a newer version: 4.3.1
Show newest version
/*
 * Copyright (c) 2020 Bixbit s.c. All rights reserved.
 * See LICENSE file for licensing information.
 */

package io.imunity.furms.ui.notifications;

import io.imunity.furms.api.alarms.FiredAlarmsService;
import io.imunity.furms.domain.authz.roles.Role;
import io.imunity.furms.ui.user_context.ViewMode;
import io.imunity.furms.ui.views.project.allocations.ResourceAllocationsDetailsView;
import io.imunity.furms.ui.views.user_settings.projects.ProjectView;
import org.springframework.stereotype.Component;

import java.util.stream.Stream;

import static io.imunity.furms.ui.utils.VaadinTranslator.getTranslation;

@Component
class AlarmNotificationProducer implements NotificationProducer{
	private final FiredAlarmsService firedAlarmsService;

	AlarmNotificationProducer(FiredAlarmsService firedAlarmsService) {
		this.firedAlarmsService = firedAlarmsService;
	}

	@Override
	public Stream findAllCurrentUserNotifications() {
		return firedAlarmsService.findAllFiredAlarmsOfCurrentUser().stream()
			.map(activeAlarm -> {
				String translation = getTranslation(
					"notifications.alarm.active",
					activeAlarm.alarm.projectAllocationName,
					activeAlarm.alarm.alarmName
				);
				NotificationBarElement.NotificationBarElementBuilder builder = NotificationBarElement.builder()
					.text(translation);

				if(activeAlarm.roles.contains(Role.PROJECT_ADMIN))
					builder
						.viewMode(ViewMode.PROJECT)
						.redirect(ResourceAllocationsDetailsView.class)
						.resourceId(activeAlarm.alarm.projectId.id.toString())
						.parameter(activeAlarm.alarm.projectAllocationId.id.toString());
				else if(activeAlarm.roles.contains(Role.PROJECT_USER))
					builder
						.viewMode(ViewMode.USER)
						.redirect(ProjectView.class)
						.parameter(activeAlarm.alarm.projectId.id.toString());
				else
					builder
						.viewMode(ViewMode.USER);

				return builder.build();
			});
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy