Esempio n. 1
0
        static void Main()
        {
            Console.WriteLine("Import der Measurements und Sensors in die Datenbank");
            using (UnitOfWork unitOfWorkImport = new UnitOfWork())
            {
                Console.WriteLine("Datenbank löschen");
                unitOfWorkImport.DeleteDatabase();
                Console.WriteLine("Datenbank migrieren");
                unitOfWorkImport.MigrateDatabase();
                Console.WriteLine("Messwerte werden von measurements.csv eingelesen");
                var measurements = ImportController.ReadFromCsv().ToArray();
                if (measurements.Length == 0)
                {
                    Console.WriteLine("!!! Es wurden keine Messwerte eingelesen");
                    return;
                }

                Console.WriteLine(
                    $"  Es wurden {measurements.Count()} Messwerte eingelesen, werden in Datenbank gespeichert ...");
                unitOfWorkImport.MeasurementRepository.AddRange(measurements);
                int countSensors = measurements.GroupBy(m => m.Sensor).Count();
                int savedRows    = unitOfWorkImport.SaveChanges();
                Console.WriteLine(
                    $"{countSensors} Sensoren und {savedRows - countSensors} Messwerte wurden in Datenbank gespeichert!");
                Console.WriteLine();
            }

            using (UnitOfWork unitOfWork = new UnitOfWork())
            {
                Console.WriteLine("Import beendet, Test der gespeicherten Daten");
                Console.WriteLine("--------------------------------------------");
                Console.WriteLine();

                var count = unitOfWork
                            .MeasurementRepository
                            .GetCountMeasurementsForSensor("livingroom", "temperature");
                Console.WriteLine($"Anzahl Messwerte für Sensor temperature in location livingroom: {count}");
                Console.WriteLine();

                var greatestmeasurements = unitOfWork
                                           .MeasurementRepository
                                           .GetLastThreeHighestMeasurements("livingroom", "temperature");
                Console.WriteLine("Letzte 3 höchste Temperaturmesswerte im Wohnzimmer");
                WriteMeasurements(greatestmeasurements);
                Console.WriteLine();

                var average = unitOfWork
                              .MeasurementRepository
                              .GetValidCo2ValuesInOffice("office", "co2", 300, 5000);
                Console.WriteLine($"Durchschnitt der gültigen Co2-Werte (>300, <5000) im office: {average}");
                Console.WriteLine();
                Console.WriteLine("Alle Sensoren mit dem Durchschnitt der Messwerte");

                var avgMeasurements = unitOfWork.MeasurementRepository.GetSensorsWithAvgMeasurements();
                WriteSensorsWithAvgMeasurements(avgMeasurements);
            }

            Console.Write("Beenden mit Eingabetaste ...");
            Console.ReadLine();
        }
        static async System.Threading.Tasks.Task Main()
        {
            Console.WriteLine("Import der Measurements und Sensors in die Datenbank");
            using (UnitOfWork unitOfWorkImport = new UnitOfWork())
            {
                Console.WriteLine("Datenbank löschen");
                unitOfWorkImport.DeleteDatabase();
                Console.WriteLine("Datenbank migrieren");
                unitOfWorkImport.MigrateDatabase();
                Console.WriteLine("Messwerte werden von measurements.csv eingelesen");
                var measurements = ImportController.ReadFromCsv().ToArray();
                if (measurements.Length == 0)
                {
                    Console.WriteLine("!!! Es wurden keine Messwerte eingelesen");
                    return;
                }

                Console.WriteLine(
                    $"  Es wurden {measurements.Count()} Messwerte eingelesen, werden in Datenbank gespeichert ...");
                unitOfWorkImport.MeasurementRepository.AddRange(measurements);
                int countSensors = measurements.GroupBy(m => m.Sensor).Count();
                int savedRows    = unitOfWorkImport.SaveChanges();
                Console.WriteLine(
                    $"{countSensors} Sensoren und {savedRows - countSensors} Messwerte wurden in Datenbank gespeichert!");
                Console.WriteLine();
            }

            using (UnitOfWork unitOfWork = new UnitOfWork())
            {
                Console.WriteLine("Import beendet, Test der gespeicherten Daten");
                Console.WriteLine("--------------------------------------------");
                Console.WriteLine();

                var count = unitOfWork.MeasurementRepository
                            .CountMeasurementsSensor("temperature", "livingroom");
                Console.WriteLine($"Anzahl Messwerte für Sensor temperature in location livingroom: {count}");
                Console.WriteLine();

                var greatestmeasurements = unitOfWork.MeasurementRepository
                                           .GetLast3GreatestMeasurements("temperature", "livingroom"); // TODO
                Console.WriteLine("Letzte 3 höchste Temperaturmesswerte im Wohnzimmer");
                WriteMeasurements(greatestmeasurements);
                Console.WriteLine();

                var average = unitOfWork.MeasurementRepository
                              .GetAverageOfValidCo2("office");
                Console.WriteLine($"Durchschnitt der gültigen Co2-Werte (>300, <5000) im office: {average}");
                Console.WriteLine();
                Console.WriteLine("Alle Sensoren mit dem Durchschnitt der Messwerte");
                // TODO
                var results = await unitOfWork.SensorRepository.GetSensorsAverage();

                Console.WriteLine("Location             Name                 Value");
                for (int i = 0; i < results.Length; i++)
                {
                    var result = results[i];
                    Console.WriteLine($"{result.Item1.Location,-20} {result.Item1.Name,-20} {Math.Round(result.Item2,2),4} {result.Item1.Unit}");
                }
            }

            Console.Write("Beenden mit Eingabetaste ...");
            Console.ReadLine();
        }