public void ReturnCorrectDistributionId()
        {
            string value  = "1900033146143";
            var    result = MpanHelper.Split(value);

            Assert.Equal(result.Result.DistributionId, "19");
        }
        public void ReturnCorrectCheckDigit()
        {
            string value  = "1900033146143";
            var    result = MpanHelper.Split(value);

            Assert.Equal(result.Result.CheckDigit, "143");
        }
        public void ReturnTrueGivenValueLengthGreaterThan12InLength()
        {
            string value  = "1900033146143";
            var    result = MpanHelper.Split(value);

            Assert.True(result.Complete, $"{value} should not be mpan");
        }
        public void ReturnFalseGivenValueLengthLessThan12InLength()
        {
            string value  = "143234";
            var    result = MpanHelper.Split(value);

            Assert.False(result.Complete, $"{value} should not be mpan");
        }
        public void ReturnCorrectResult()
        {
            string value  = "009998071900033146143";
            var    result = MpanHelper.Split(value);

            Assert.Equal(result.Result.Mpan, "009998071900033146143");
            Assert.Equal(result.Result.SupplyPointRef, "1900033146143");
            Assert.Equal(result.Result.ProfileType, "00");
            Assert.Equal(result.Result.MeterTimeSwitchCode, "999");
            Assert.Equal(result.Result.LLF, "807");
            Assert.Equal(result.Result.DistributionId, "19");
            Assert.Equal(result.Result.UniqueIdentifer, "00033146");
            Assert.Equal(result.Result.CheckDigit, "143");
        }
Beispiel #6
0
        public void ShouldReturnCorrectMarketParticipantId(int distributionId, string expected)
        {
            var result = MpanHelper.GetMarketParticipantId(distributionId);

            Assert.Equal(expected, result);
        }
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                          .AddEnvironmentVariables();

            Configuration = builder.Build();

            Config = new Dictionary <string, object>
            {
                { "group.id", Configuration["GROUP_ID"] },
                { "bootstrap.servers", Configuration["KAFKA_END_POINT"] }
            };

            // Create the consumer
            using (var consumer = new Consumer <string, string>(Config, new StringDeserializer(Encoding.UTF8), new StringDeserializer(Encoding.UTF8)))
            {
                // Subscribe to the OnMessage event
                consumer.OnMessage += async(obj, msg) => {
                    Console.WriteLine($"Received Raw Consumption: {msg.Value}");
                    var data = JsonConvert.DeserializeObject <Consumption>(msg.Value);

                    // Parser mpan to get the MarketParticantId and LLF
                    var mpan = MpanParser.Split(data.Mpan);

                    if (mpan.Complete)
                    {
                        var transformed =
                            new Calculate(data,
                                          new GetFactors(MpanHelper.GetMarketParticipantId(mpan.Result.DistributionId), mpan.Result.LLF, data.Date, data.StartTime).Results)
                            .Transform();

                        Publish(transformed);
                    }
                };

                consumer.OnLog += (obj, e) => {
                };
                // Subscribe to the Kafka topic
                consumer.Subscribe(new List <string> {
                    Configuration["CONSUMER_TOPIC"]
                });

                // Handle Cancel Keypress
                var cancelled = false;
                Console.CancelKeyPress += (_, e) =>
                {
                    e.Cancel  = true; // Prevent the process from terminating
                    cancelled = true;
                };

                Console.WriteLine("Ctrl-C to exit");

                // Poll for messages
                while (!cancelled)
                {
                    consumer.Poll(-1);
                }
            }
        }