Å koordinere frivillige er en av de vanskeligste oppgavene i enhver organisasjon — team, mannskaper, kurs, ledere og varierende tilgjengelighet, alt på en gang.
Problemet det løser: Regneark og post-it-lapper skalerer ikke. Ledere mister oversikten over hvem som er aktive, hvem som har utløpt, og hvem som faktisk er på hvilket team.
Hvordan det hjelper:
Den behagelige arbeidsdagen: Koordinatorer bruker mindre tid på å spørre «hvem er på dette teamet igjen?» og mer tid på å faktisk lede folk.
Frivillighetsdrevne organisasjoner (kirker, ideelle organisasjoner, arrangementsprodusenter) lykkes eller sliter basert på hvor godt de kan se og administrere sine frivillige. En dedikert, ikke-kommersiell modell for planlegging av frivillige unngår å tvinge frivilligkoordinering gjennom et system designet for betalte medlemskap eller kunderegistre.
People-modulen er implementert i ExireNexus.Services/Services/UserGroupService.cs (IUserGroupService) mot modellene UserGroup og UserGroupMember i ExireNexus.Shared/Models.
Nøkkelpunkter i implementasjonen:
UserGroup støtter en UserGroupType-enum (Team, Crew, Volunteer, Organization og kommersielle medlemskapstyper), slik at den samme underliggende tabellen og tjenesten kan betjene både koordinering av personer og brukstilfeller for betalt medlemskap uten å duplisere modeller.GetPeopleGroupsAsync(UserGroupType? groupType = null) henter ikke-slettede grupper, eventuelt filtrert etter type — det dedikerte inngangspunktet for People-modulen, holdt atskilt fra handelsorienterte medlemskapsspørringer selv om de deler samme tjeneste og tabell.UserGroupMember) inneholder ActiveFrom / Expires-datoer, og GetGroupMembersOrderedAsync returnerer medlemmer sortert med ledere først, deretter etter visningsrekkefølge (ItemOrder), deretter navn — noe som gir Backstage UI en ferdig, fornuftig rekkefølge for medlemslisten uten sorteringslogikk på klientsiden.GetMembershipsForUserAsync og GetUserGroupsByUserIdAsync støtter omvendt oppslag — «hvilke grupper er denne personen i» — inkludert valgfri inkludering av utløpte medlemskap for historisk rapportering.GetOrganizationUnitsAsync returnerer alle organisasjonstype-grupper (med ledere og medlemmer forhåndslastet) slik at Backstage-organisasjonsbyggeren kan sette sammen et fullt hierarki på klientsiden uten N+1-spørringer.Category (selvrefererende gjennom ParentCategoryId), plattformens delte organisatoriske enhet, i stedet for å introdusere et separat hierarkibegrep kun for personer.I tråd med plattformens arkitekturprinsipp ble frivillig-/personplanlegging lagt til som ny funksjonalitet i eksisterende UserGroupService i stedet for en parallell tjeneste — og beholdt én autoritativ kilde for alle gruppe- og medlemskapsdata.