Alle organisasjoner ender opp med å jonglere mellom en chatteapp, en e-postklient og det systemet som driver selve nettsiden eller butikken — tre verktøy, tre innlogginger og konstant bytting av faner bare for å få et svar fra en kollega eller en kunde.
Problemet det løser: Ansatte skal ikke måtte forlate arbeidsområdet hvor de administrerer innhold, bestillinger og arrangementer bare for å stille en kollega et raskt spørsmål eller sjekke innboksen.
Hvordan det hjelper:
Den gode arbeidsdagen: Et raskt spørsmål til en kollega og et svar på en kundes e-post kan begge håndteres uten å forlate siden du allerede jobber i.
Å redusere antall verktøy ansatte må håndtere er ikke bare en praktisk fordel — det betyr færre innlogginger å administrere, færre steder der en melding kan forsvinne, og mindre tid brukt på å skifte kontekst. At chat og e-post blir en del av samme arbeidsområde som innhold, CRM og bestillinger betyr at hver samtale skjer rett ved siden av dataene den handler om.
Chat er implementert av ChatItemService (ExireNexus.Services/Services/ChatService.cs, pluss partials ChatService.Groups.cs og ChatService.Messages.cs), støttet av modellene Chat, ChatUser og MessageItem (ExireNexus.Shared/Models).
Viktige implementeringspunkter:
GetOrCreateOneToOneChatAsync og CreateGroupChatAsync håndterer opprettelse/oppslag av chatter, mens SendMessageAsync, MarkMessagesAsReadAsync og GetTotalUnreadCountAsync driver den daglige meldingsopplevelsen.RenameChatAsync, AddMemberAsync, RemoveMemberAsync, LeaveChatAsync — håndheves gjennom at den forespørrende brukeren er medlem, og sørger for at gruppeendringer er begrenset til faktiske deltakere.GetConversationsAsync og GetChatDetailsAsync returnerer DTO-er (ConversationSummaryDto, ChatDetailsDto, MessageDto) tilpasset Backstage-grensesnittet (ExireNexus.Backstage/Components/VisitorArea/Chat/ConversationList.razor, ConversationView.razor), og holder tjenestens persistensmodeller separate fra det som sendes til klienten.IFileService, ved å gjenbruke plattformens delte filopplastings-pipeline i stedet for en chat-spesifikk en.IChatEventNotifier, noe som frakobler tjenestelaget fra den konkrete transporten (f.eks. SignalR) som brukes for å pushe nye meldinger til tilkoblede klienter.E-post er implementert av ImapMailService (ExireNexus.Services/Services/ImapMailService.cs), som bruker MailKit/MimeKit for IMAP (lesing) og SMTP (sending), med MailConfigProvider (ExireNexus.Services/Services/MailConfigProvider.cs) som løser hver leietakers effektive postkasseinnstillinger.
Viktige implementeringspunkter:
IsConfiguredAsync lar UI-en (ExireNexus.Backstage/Components/Editors/Mail/Mail.razor) oppdage om en leietaker har koblet en postkasse før den forsøker å laste mapper eller meldinger.GetFoldersAsync og GetMessagesAsync returnerer lette sammendrag (MailboxFolder, MailMessageSummary i ExireNexus.Shared/Models/Email/MailInboxModels.cs) for rask listegjengivelse, mens GetMessageAsync laster hele meldingsinnholdet og vedleggsmetadata bare når en melding åpnes.GetAttachmentAsync i stedet for å lastes ned på forhånd, noe som unngår unødvendig båndbredde for meldinger med store vedlegg brukeren aldri åpner.SendAsync sender via SMTP og legger til en kopi i Sendt-mappen, i tråd med oppførselen brukere forventer fra en standard e-postklient.IMailConfigProvider, slik at legitimasjon alltid løses per leietaker i stedet for å caches globalt — konfigurasjonen finnes i MailSettings.razor (ExireNexus.Backstage/Components/Editors/Settings).