Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

     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
     (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 everything to the BrightLocation response.

...

installation for the customer.

Code Block
[

...

  {

...


  {
    "Id":

...

        <value>     // Data: SonWin installation number (AINSD.INSTNR), as

...

 string
    "Address":

...

   <value>     // Data: street + house number (AINSD.ADRESSE + AINSD.HUSNUMMER)

...


    "ZipCode":

...

   <value>     // Data: postal code (AINSD.POSTNUM)

...


    "City":

...

      <value>     // Data: city name (IPOST.NAVN, falling back to AINSD.STED; empty string if both null)

...


    "Properties":

...

 null       // Hardcoded

...

                             //   (PropertyType, NumberOfResidents, Size, HouseAge, Cars[], Heating,

                             //    HeatingSecondary, Gadgets[] are all unused today)

...

 null
    "PriceZone":

...

 <value>     // Derived: from ZipCode -> "DK1" if zip >= 6000, "DK2" if zip < 6000,

...

 null if the zip code cannot be

...

 parsed
    "Services":

...

 [            // Data: the electricity service(s) for this installation (empty array if none)

...

      {

...


      {
        "Id":

...

                    <value>  // Data: metering point id / EAN (IndividualMPoints.MeteringPointId, aka AftageNr)

...


        "Type":

...

                                          //   always "consumption_trade". (Other types map to water/heating/

                                          //   cooling/tv/broadband/waste/gas_trade, but only El is queried today.)

        "Status":                "Active" // Hardcoded: BrightServiceStatus.Active.ToString().

                                          //   NOTE: this emits the enum NAME "Active" (capital A), NOT the

                                          //   display value "active". TODO in code: derive real status from SonWin.

        "MeasurementResolution": <value>  // Derived from forsyningsart: electricity => "hour"

                                          //   (broadband => "none"; other types default to "none" - TODO).

        "MeasurementId":         <value>  // Data: metering point id (same value as Service.Id / AftageNr)

        "DeliveryPointId":       null     // Hardcoded null: never set by the mapper

        "CostResolution":        null     // Hardcoded null: never set by the mapper

        "CostId":                null     // Hardcoded null: never set by the mapper

        "Properties":            null     // Hardcoded null: BrightServiceProperties (ShowCost,

                                          //   RealtimeMeasurements) is never populated

        "StartDate":             <value>  // Data: current supply start date (SWMarket MeteringPointRoleOccurrence.FromDate),

                                          //   as DateTimeOffset (UTC/zero offset). Required - null fails validation.

        "EndDate":               <value>  // Data: current supply end date (SWMarket ...ToDate), as DateTimeOffset.

                                          //   OMITTED from the JSON entirely when null (JsonIgnore WhenWritingNull);

                                          //   null/absent means the supply has no scheduled end (still active).

      }

    ],

    "Longitude": null        // Hardcoded null: never set by the mapper

    "Latitude":  null        // Hardcoded null: never set by the mapper

  }

...

                  <value>  // Hardcoded "consumption_trade" 
        "Status":                "Active" // Hardcoded: "Active"
        "MeasurementResolution": <value>  // Hardcoded "15min" 
        "MeasurementId":         <value>  // Data: metering point id (same value as Service.Id / AftageNr)
        "DeliveryPointId":       null     // Hardcoded null
        "CostResolution":        null     // Hardcoded null
        "CostId":                null     // Hardcoded null
        "Properties":            null     // Hardcoded null: BrightServiceProperties (ShowCost, RealtimeMeasurements) is never populated
        "StartDate":             <value>  // Data: current supply start date (SWMarket MeteringPointRoleOccurrence.FromDate), as DateTimeOffset (UTC/zero offset). Required - null fails validation.
        "EndDate":               <value>  // Data: current supply end date (SWMarket ...ToDate), as DateTimeOffset.
                                          //   OMITTED from the JSON entirely when null (JsonIgnore WhenWritingNull);
                                          //   null/absent means the supply has no scheduled end (still active).
      }
    ],
    "Longitude": null        // Hardcoded null
    "Latitude":  null        // Hardcoded null
  }
]

Notes:

  - Properties, Longitude and Latitude on the location are always null/absent.

...