...
exception message in the body.
IMPORTANT SCOPE LIMITATION:
Only ELECTRICITY supply is currently returned. The service query hard-codes
FORSYNINGSART = 0 (El), so even if an installation has water, heat, gas, etc.,
those services are not included today. (SQL for the other supply types exists
but is commented out / future work.)
Call chain:
BrightLocationsController.GetLocations
-> BrightLocationService.GetLocationByCustomerAsync (validation + mapping)
...
-
...
-
...
-
...
(SQL lives in LocationSql; sources are Sonlinc.AINSD / AFORD / AUDEBFORS /
IndividualMPoints + SWMarket.* market tables for the dates.)
--------------------------------------------------------------------------------
METHODS
--------------------------------------------------------------------------------
...
Route: GET /bright/locations
Params:
- customerId (required)
...
- limit (optional)
- (
...
- CancellationToken)
Returns:
- 200 OK -> IEnumerable<BrightLocation>
...
- 400 BadRequest (declared; see note below)
...
- 401
...
- Unauthorized
...
- 404 NotFound (declared; see note below)
What it does:
Returns the list of active locations for a customer, each with its electricity service(s). It first validates the customer exists
(commonValidator.ValidateCustomer) and validates input
and validates input (customerId required; limit, if supplied, must be 1-1000, default 100).
It then loads location headers, loads the electricity services for those installations, attaches each service's current supply start/end dates, and maps and maps everything to the BrightLocation response.
Validation that affects the result (all surface as HTTP 500 with a message): -
- Missing customerId -> "Missing parameter 'CustomerId'."
...
- limit out of range (1-1000) -> "Parameter outside of allowed range..."
...
- No locations found -> "No locations found for customer {id}"
...
- A service with no start date -> "Location with missing supply start
...
- date found for meteringpointid: {id}..."
(Every returned service MUST have a supply start date or the whole call fails. The start/end dates come from the SWMarket supply-range query, which only returns the CURRENTLY active supply: FromDate <= today and ToDate and ToDate is null or in the future.)
NOTE on status codes: although 400 and 404 are declared via
ProducesResponseType, the BadRequest branch is commented out in the
controller. In practice every Every error (bad input, not found, missing dates,
DB failure) currently comes back as HTTP 500 with the message in the body.
...