================================================================================

 BrightProductsController - Summary & Response Structures

 File: SonWinCommonAPI/Controllers/BrightProductsController.cs

================================================================================


--------------------------------------------------------------------------------

 WHAT THE CONTROLLER DOES

--------------------------------------------------------------------------------

BrightProductsController is meant to expose the price products and tariffs for a

specific customer and service within a date range, from the SonWin/Sonlinc

system, shaped into the "Bright" product contract. On any thrown exception logs the error and returns HTTP 500 with the exception message in the body.

--------------------------------------------------------------------------------

 METHODS

--------------------------------------------------------------------------------


1) GetProducts

   Route:    GET /bright/products

   Params:  

   Returns: 

   What it does:

     Return the list of price products/tariffs for a given customer

     and service that are valid within the requested date range.

     It first validates the customer exists , then asks

     the repository for the matching DbProduct rows, groups them by ServiceId,

     and maps each group to a BrightProduct with a nested list of BrightPrice.


   Validation that affects the result (all surface as HTTP 500 with a message):

Run claude !