private async void TestCaseSaveCommandHandler()
        {
            bool verificationFailed = false;

            if (TestCaseUnderCreation.TestedAt == null)
            {
                window.TestCaseTestCenterRequired.Visibility = Visibility.Visible;
                verificationFailed = true;
            }
            else
            {
                window.TestCaseTestCenterRequired.Visibility = Visibility.Hidden;
            }

            if (TestCaseUnderCreation.TestedCitizen == null)
            {
                window.TestCaseCitizenRequired.Visibility = Visibility.Visible;
                verificationFailed = true;
            }
            else
            {
                window.TestCaseCitizenRequired.Visibility = Visibility.Hidden;
            }

            if (TestCaseUnderCreation.Status == string.Empty)
            {
                window.TestCaseStatusRequired.Visibility = Visibility.Visible;
                verificationFailed = true;
            }
            else
            {
                window.TestCaseStatusRequired.Visibility = Visibility.Hidden;
            }

            if (TestCaseUnderCreation.Date == default)
            {
                window.TestCaseDateRequired.Visibility = Visibility.Visible;
                verificationFailed = true;
            }
            else
            {
                window.TestCaseDateRequired.Visibility = Visibility.Hidden;
            }

            if (verificationFailed)
            {
                return;
            }
            else
            {
                try
                {
                    var client            = new MongoClient("mongodb://127.0.0.1:27017");
                    var db                = client.GetDatabase("CovidTracking");
                    var citizenCollection = db.GetCollection <Citizen>("Citizens");

                    var update = Builders <Citizen> .Update.AddToSet("Tests", TestCaseUnderCreation);

                    citizenCollection.FindOneAndUpdate(o => o.Id == TestCaseUnderCreation.CitizenId, update);

                    TestCaseUnderCreation = new CitizenTestedAtTestCenter();
                    RaisePropertyChanged("TestCases");
                }
                catch (Exception e)
                {
                    StringBuilder exceptionString = new StringBuilder();
                    while (e != null)
                    {
                        exceptionString.AppendLine(e.Message);
                        e = e.InnerException;
                    }
                    MessageBox.Show(exceptionString.ToString());
                }
            }
        }
        private async void TestCaseSaveCommandHandler()
        {
            bool verificationFailed = false;

            if (TestCaseUnderCreation.TestCenterName == string.Empty)
            {
                Window.TestCaseTestCenterRequired.Visibility = Visibility.Visible;
                verificationFailed = true;
            }
            else
            {
                Window.TestCaseTestCenterRequired.Visibility = Visibility.Hidden;
            }

            if (TestCaseUnderCreation.CitizenSSN == string.Empty)
            {
                Window.TestCaseCitizenRequired.Visibility = Visibility.Visible;
                verificationFailed = true;
            }
            else
            {
                Window.TestCaseCitizenRequired.Visibility = Visibility.Hidden;
            }

            if (TestCaseUnderCreation.Status == string.Empty)
            {
                Window.TestCaseStatusRequired.Visibility = Visibility.Visible;
                verificationFailed = true;
            }
            else
            {
                Window.TestCaseStatusRequired.Visibility = Visibility.Hidden;
            }

            if (TestCaseUnderCreation.Date == default)
            {
                Window.TestCaseDateRequired.Visibility = Visibility.Visible;
                verificationFailed = true;
            }
            else
            {
                Window.TestCaseDateRequired.Visibility = Visibility.Hidden;
            }

            if (verificationFailed)
            {
                return;
            }
            else
            {
                try
                {
                    using (var context = new TrackerContext())
                    {
                        context.Add(TestCaseUnderCreation);
                        await context.SaveChangesAsync();

                        TestCaseUnderCreation = new CitizenTestedAtTestCenter();
                    }
                    RaisePropertyChanged("TestCases");
                }
                catch (Exception e)
                {
                    StringBuilder exceptionString = new StringBuilder();
                    while (e != null)
                    {
                        exceptionString.AppendLine(e.Message);
                        e = e.InnerException;
                    }
                    MessageBox.Show(exceptionString.ToString());
                }
            }
        }
Пример #3
0
        static void Main(string[] args)
        {
            //CLEAR DATABASE
            using (var context = new TrackerContext())
            {
                context.CitizenTestedAtTestCenters.RemoveRange(context.CitizenTestedAtTestCenters);
                context.CitizenWasAtLocations.RemoveRange(context.CitizenWasAtLocations);
                context.Citizens.RemoveRange(context.Citizens);
                context.TestCenters.RemoveRange(context.TestCenters);
                context.Locations.RemoveRange(context.Locations);
                context.TestCenterManagements.RemoveRange(context.TestCenterManagements);
                context.Municipalities.RemoveRange(context.Municipalities);
                context.SaveChanges();
            }


            //INSERT MUNICIPALITIES
            List <Municipality> municipalities = new List <Municipality>();

            string[] readLines = File.ReadAllLines(@"Municipality.csv");
            foreach (string line in readLines)
            {
                string[]     splitLine    = line.Split(',');
                Municipality municipality = new Municipality();
                municipality.Name       = splitLine[1];
                municipality.Population = int.Parse(splitLine[2]);
                municipalities.Add(municipality);
            }
            using (var context = new TrackerContext())
            {
                foreach (Municipality municipality in municipalities)
                {
                    context.Add(municipality);
                }
                context.SaveChanges();
            }

            //INSERT TEST CENTER MANAGEMENT
            List <TestCenterManagement> testCenterManagements = new List <TestCenterManagement>();

            readLines = File.ReadAllLines(@"TestCenterManagementData");
            foreach (string line in readLines)
            {
                string[]             splitLine  = line.Split(';');
                TestCenterManagement management = new TestCenterManagement();
                management.Name        = splitLine[0];
                management.PhoneNumber = int.Parse(splitLine[1]);
                management.Email       = splitLine[2];
                testCenterManagements.Add(management);
            }
            using (var context = new TrackerContext())
            {
                foreach (TestCenterManagement management in testCenterManagements)
                {
                    context.Add(management);
                }
                context.SaveChanges();
            }

            //INSERT LOCATIONS
            List <Location> locations = new List <Location>();

            readLines = File.ReadAllLines(@"LocationData");
            foreach (string line in readLines)
            {
                string[] splitLine = line.Split(';');
                Location location  = new Location();
                location.Address          = splitLine[0];
                location.MunicipalityName = splitLine[1];
                locations.Add(location);
            }
            using (var context = new TrackerContext())
            {
                foreach (Location location in locations)
                {
                    context.Add(location);
                }
                context.SaveChanges();
            }


            //INSERT TEST CENTERS
            List <TestCenter> testCenters = new List <TestCenter>();

            readLines = File.ReadAllLines(@"TestCenterData");
            foreach (string line in readLines)
            {
                string[]   splitLine  = line.Split(';');
                TestCenter testCenter = new TestCenter();
                testCenter.Name            = splitLine[0];
                testCenter.Hours           = splitLine[1];
                testCenter.ManagementName  = splitLine[2];
                testCenter.LocationAddress = splitLine[3];
                testCenters.Add(testCenter);
            }
            using (var context = new TrackerContext())
            {
                foreach (TestCenter testCenter in testCenters)
                {
                    context.Add(testCenter);
                }
                context.SaveChanges();
            }

            //INSERT CITIZENS
            List <Citizen> citizens = new List <Citizen>();

            readLines = File.ReadAllLines(@"CitizenData");
            foreach (string line in readLines)
            {
                string[] splitLine = line.Split(';');
                Citizen  citizen   = new Citizen();
                citizen.FirstName        = splitLine[0];
                citizen.LastName         = splitLine[1];
                citizen.Sex              = splitLine[2][0];
                citizen.Age              = int.Parse(splitLine[3]);
                citizen.SSN              = splitLine[4];
                citizen.MunicipalityName = splitLine[5];
                citizens.Add(citizen);
            }
            using (var context = new TrackerContext())
            {
                foreach (Citizen citizen in citizens)
                {
                    context.Add(citizen);
                }
                context.SaveChanges();
            }

            //INSERT CITIZENVISITS
            List <CitizenWasAtLocation> citizenWasAtLocations = new List <CitizenWasAtLocation>();

            readLines = File.ReadAllLines(@"LocationVisitedData");
            foreach (string line in readLines)
            {
                string[]             splitLine            = line.Split(';');
                CitizenWasAtLocation citizenWasAtLocation = new CitizenWasAtLocation();
                citizenWasAtLocation.VisitingCitizenSSN     = splitLine[0];
                citizenWasAtLocation.DateOfVisit            = DateTime.Parse(splitLine[1]);
                citizenWasAtLocation.VisitedLocationAddress = splitLine[2];
                citizenWasAtLocations.Add(citizenWasAtLocation);
            }
            using (var context = new TrackerContext())
            {
                foreach (CitizenWasAtLocation citizenWasAtLocation in citizenWasAtLocations)
                {
                    var Location = context.Locations
                                   .Include(b => b.Visits).First(b => b.Address == citizenWasAtLocation.VisitedLocationAddress);
                    Location.Visits.Add(citizenWasAtLocation);
                }
                context.SaveChanges();
            }

            //INSERT TESTS
            List <CitizenTestedAtTestCenter> citizenTestedAtTestCenters = new List <CitizenTestedAtTestCenter>();

            readLines = File.ReadAllLines(@"TestResultData");
            foreach (string line in readLines)
            {
                string[] splitLine = line.Split(';');
                CitizenTestedAtTestCenter citizenTestedAtTestCenter = new CitizenTestedAtTestCenter();
                citizenTestedAtTestCenter.CitizenSSN     = splitLine[0];
                citizenTestedAtTestCenter.Date           = DateTime.Parse(splitLine[1]);
                citizenTestedAtTestCenter.TestCenterName = splitLine[2];
                citizenTestedAtTestCenter.Result         = splitLine[3];
                citizenTestedAtTestCenter.Status         = splitLine[4];
                citizenTestedAtTestCenters.Add(citizenTestedAtTestCenter);
            }
            using (var context = new TrackerContext())
            {
                foreach (CitizenTestedAtTestCenter citizenTestedAtTestCenter in citizenTestedAtTestCenters)
                {
                    var Citizen = context.Citizens
                                  .Include(b => b.Tests).First(b => b.SSN == citizenTestedAtTestCenter.CitizenSSN);
                    Citizen.Tests.Add(citizenTestedAtTestCenter);
                }
                context.SaveChanges();
            }
        }
Пример #4
0
        static void Main(string[] args)
        {
            //CLEAR DATABASE

            /*
             * using (var context = new TrackerContext())
             * {
             *  context.CitizenTestedAtTestCenters.RemoveRange(context.CitizenTestedAtTestCenters);
             *  context.CitizenWasAtLocations.RemoveRange(context.CitizenWasAtLocations);
             *  context.Citizens.RemoveRange(context.Citizens);
             *  context.TestCenters.RemoveRange(context.TestCenters);
             *  context.Locations.RemoveRange(context.Locations);
             *  context.TestCenterManagements.RemoveRange(context.TestCenterManagements);
             *  context.Municipalities.RemoveRange(context.Municipalities);
             *  context.SaveChanges();
             * }
             */

            var client = new MongoClient("mongodb://127.0.0.1:27017");
            var db     = client.GetDatabase("CovidTracking");

            db.DropCollection("LocationVisitDays");
            db.DropCollection("Municipalities");
            db.DropCollection("Locations");
            db.DropCollection("TestCenters");
            db.DropCollection("Citizens");
            db.CreateCollection("Citizens");
            db.CreateCollection("TestCenters");
            db.CreateCollection("Locations");
            db.CreateCollection("Municipalities");
            db.CreateCollection("LocationVisitDays");



            //GET MUNICIPALITIES
            List <Municipality> municipalities = new List <Municipality>();

            string[] readLines = File.ReadAllLines(@"Municipality.csv");
            foreach (string line in readLines)
            {
                string[]     splitLine    = line.Split(',');
                Municipality municipality = new Municipality();
                municipality.Name       = splitLine[1];
                municipality.Population = int.Parse(splitLine[2]);
                municipalities.Add(municipality);
            }

            //GET TESTCENTERMANAGEMENTS
            List <TestCenterManagement> testCenterManagements = new List <TestCenterManagement>();

            readLines = File.ReadAllLines(@"TestCenterManagementData");
            foreach (string line in readLines)
            {
                string[]             splitLine  = line.Split(';');
                TestCenterManagement management = new TestCenterManagement();
                management.Name        = splitLine[0];
                management.PhoneNumber = int.Parse(splitLine[1]);
                management.Email       = splitLine[2];
                testCenterManagements.Add(management);
            }

            //GET LOCATIONS
            List <Location> locations = new List <Location>();

            readLines = File.ReadAllLines(@"LocationData");
            foreach (string line in readLines)
            {
                string[] splitLine = line.Split(';');
                Location location  = new Location();
                location.Address = splitLine[0];
                location.IsIn    = municipalities.Find(m => m.Name == splitLine[1]);
                //Handle circular reference
                if (location.IsIn != null)
                {
                    location.IsIn.LocationsInMunicipality.Add(location);
                }
                locations.Add(location);
            }

            //GET TEST CENTERS
            List <TestCenter> testCenters = new List <TestCenter>();

            readLines = File.ReadAllLines(@"TestCenterData");
            foreach (string line in readLines)
            {
                string[]   splitLine  = line.Split(';');
                TestCenter testCenter = new TestCenter();
                testCenter.Name          = splitLine[0];
                testCenter.Hours         = splitLine[1];
                testCenter.HasManagement = testCenterManagements.Find(t => t.Name == splitLine[2]);
                testCenter.PlacedIn      = locations.Find(t => t.Address == splitLine[3]);
                testCenter.PlacedIn.TestCentersAtLocation.Add(testCenter);
                testCenters.Add(testCenter);
            }

            //GET CITIZENS
            List <Citizen> citizens = new List <Citizen>();

            readLines = File.ReadAllLines(@"CitizenData");
            foreach (string line in readLines)
            {
                string[] splitLine = line.Split(';');
                Citizen  citizen   = new Citizen();
                citizen.FirstName = splitLine[0];
                citizen.LastName  = splitLine[1];
                citizen.Sex       = splitLine[2];
                citizen.Age       = int.Parse(splitLine[3]);
                citizen.SSN       = splitLine[4];
                citizen.LivesIn   = municipalities.Find(m => m.Name == splitLine[5]);
                citizen.LivesIn.CitizensInMunicipality.Add(citizen);
                citizens.Add(citizen);
            }

            //GET CITIZENVISITS
            List <LocationVisitDay> locationVisitDays = new List <LocationVisitDay>();

            readLines = File.ReadAllLines(@"LocationVisitedData");
            foreach (string line in readLines)
            {
                string[]         splitLine = line.Split(';');
                LocationVisitDay foundDay  = locationVisitDays.Find(l =>
                                                                    l.DateOfVisit == DateTime.Parse(splitLine[1], styles: DateTimeStyles.AssumeUniversal) &&
                                                                    l.VisitedLocation.Address == splitLine[2]);
                if (foundDay != null)
                {
                    Citizen foundCitizen = citizens.Find(c => c.SSN == splitLine[0]);
                    foundDay.VisitingCitizens.Add(foundCitizen);
                    foundCitizen.Visits.Add(foundDay);
                }
                else
                {
                    LocationVisitDay locationVisitDay = new LocationVisitDay();
                    locationVisitDay.VisitingCitizens.Add(citizens.Find(c => c.SSN == splitLine[0]));
                    locationVisitDay.DateOfVisit     = DateTime.Parse(splitLine[1], styles: DateTimeStyles.AssumeUniversal);
                    locationVisitDay.VisitedLocation = locations.Find(l => l.Address == splitLine[2]);
                    locationVisitDay.VisitedLocation.Visits.Add(locationVisitDay);
                    locationVisitDays.Add(locationVisitDay);
                }
            }

            //GET TESTS
            readLines = File.ReadAllLines(@"TestResultData");
            foreach (string line in readLines)
            {
                string[] splitLine = line.Split(';');
                CitizenTestedAtTestCenter citizenTestedAtTestCenter = new CitizenTestedAtTestCenter();
                citizenTestedAtTestCenter.TestedCitizen = citizens.Find(c => c.SSN == splitLine[0]);
                citizenTestedAtTestCenter.Date          = DateTime.Parse(splitLine[1], styles: DateTimeStyles.AssumeUniversal);
                citizenTestedAtTestCenter.TestedAt      = testCenters.Find(t => t.Name == splitLine[2]);
                citizenTestedAtTestCenter.TestedAt.Tests.Add(citizenTestedAtTestCenter);
                citizenTestedAtTestCenter.Result = splitLine[3];
                citizenTestedAtTestCenter.Status = splitLine[4];
                citizenTestedAtTestCenter.TestedCitizen.Tests.Add(citizenTestedAtTestCenter);
            }

            var municipalityCollection = db.GetCollection <Municipality>("Municipalities");

            municipalityCollection.InsertMany(municipalities);

            var locationCollection = db.GetCollection <Location>("Locations");

            locationCollection.InsertMany(locations);

            var testCenterCollection = db.GetCollection <TestCenter>("TestCenters");

            testCenterCollection.InsertMany(testCenters);

            var citizenCollection = db.GetCollection <Citizen>("Citizens");

            citizenCollection.InsertMany(citizens);

            var locationVisitCollection = db.GetCollection <LocationVisitDay>("LocationVisitDays");

            locationVisitCollection.InsertMany(locationVisitDays);
        }