@using CommunityToolkit.Mvvm.Messaging @using salesbook.Shared.Core.Dto @using salesbook.Shared.Core.Dto.Activity @using salesbook.Shared.Core.Dto.PageState @using salesbook.Shared.Core.Entity @using salesbook.Shared.Core.Interface.System.Network @using salesbook.Shared.Core.Messages.Activity.Copy @using salesbook.Shared.Core.Messages.Activity.New @using salesbook.Shared.Core.Messages.Contact @using salesbook.Shared.Core.Messages.Notification.Loaded @using salesbook.Shared.Core.Messages.Notification.NewPush @inject IDialogService Dialog @inject IMessenger Messenger @inject CopyActivityService CopyActivityService @inject NewPushNotificationService NewPushNotificationService @inject NotificationState Notification @inject INetworkService NetworkService @inject NotificationsLoadedService NotificationsLoadedService
@code { private bool IsVisible { get; set; } = true; private bool PlusVisible { get; set; } = true; protected override Task OnInitializedAsync() { InitMessage(); NavigationManager.LocationChanged += (_, args) => { var location = args.Location.Remove(0, NavigationManager.BaseUri.Length); var newIsVisible = new List { "Calendar", "Users", "Notifications", "Commessa" } .Contains(location); var newPlusVisible = new List { "Calendar", "Users", "Commessa" } .Contains(location); if (IsVisible == newIsVisible && PlusVisible == newPlusVisible) return; IsVisible = newIsVisible; PlusVisible = newPlusVisible; StateHasChanged(); }; return Task.CompletedTask; } private Task CreateActivity() => CreateActivity(null); private async Task CreateActivity(ActivityDTO? activity) { var result = await ModalHelpers.OpenActivityForm(Dialog, activity, null); if (result is { Canceled: false, Data: not null } && result.Data.GetType() == typeof(StbActivity)) { Messenger.Send(new NewActivityMessage(((StbActivity)result.Data).ActivityId)); } } private async Task CreateUser() { var result = await ModalHelpers.OpenUserForm(Dialog, null); if (result is { Canceled: false, Data: not null } && result.Data.GetType() == typeof(CRMCreateContactResponseDTO)) { Messenger.Send(new NewContactMessage((CRMCreateContactResponseDTO)result.Data)); } } private void NewNotificationReceived(WtbNotification notification) { Notification.ReceivedNotifications.Add(notification); InvokeAsync(StateHasChanged); } private void InitMessage() { CopyActivityService.OnCopyActivity += async dto => await CreateActivity(dto); NewPushNotificationService.OnNotificationReceived += NewNotificationReceived; NotificationsLoadedService.OnNotificationsLoaded += () => InvokeAsync(StateHasChanged); } }