---
title: MenuService
summary: API reference for MenuService.
status: draft
owner: SAIF Documentation
last_reviewed: 2026-09-17
library: SAIF.Framework.Web.Mvc
reference_type: package
---

# MenuService

Implements `IMenuService`, querying the Oracle-backed `BusinessOnlineMenuItem` NHibernate repository for a user's visible menu items and favorites, always unioning in the shared `UNSECURED` menu.

## Purpose
- Implements `IMenuService`, querying the Oracle-backed `BusinessOnlineMenuItem` NHibernate repository for a user's visible menu items and favorites, always unioning in the shared `UNSECURED` menu.
- Registered `InstancePerRequest` over a named `"menu"` NHibernate unit of work; see [OP-12](../../operations/op-12-retrieve-the-business-online-menu-for-a-user.md).

## Context
- Namespace: `SAIF.Web.Mvc`
- Assembly/package: `SAIF.Framework.Web.Mvc (source-shipping NuGet package)`
- Kind: class (service)

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| MenuService(IRepository<DataModel.Menu.BusinessOnlineMenuItem>) | `public MenuService(IRepository<DataModel.Menu.BusinessOnlineMenuItem> menuRepository)` | Constructor-injected NHibernate repository used to query menu rows. |
| GetBusinessOnlineMenu(string mailId) | `public BusinessOnlineMenu GetBusinessOnlineMenu(string mailId)` | Strips any domain prefix from `mailId`, queries visible rows for the user plus `UNSECURED`, and partitions them into `Favorites` and `Items`; see the "Retrieve the Business Online menu for a user" operation. |

## Behavioral notes
- Rows are filtered case-insensitively on `MailId` and `IsVisible == "Y"`, ordered by `SortOrder` (see [BR-28](../../business-rules.md#br-28-only-visible-menu-rows-are-returned), [BR-29](../../business-rules.md#br-29-menu-rows-are-ordered-by-sort-order)).

## Sources
- `src/Web.Mvc/Classes/MenuService.cs`
