예제 #1
0
        private static void ImportAnomalyVictims()
        {
            var context        = new MassDefectDB();
            var json           = File.ReadAllText(AnomalyVictimsPath);
            var anomalyVictims = JsonConvert.DeserializeObject <IEnumerable <AnomayVictimsDTO> >(json);

            foreach (var av in anomalyVictims)
            {
                if (av.Id == null || av.Person == null)
                {
                    Console.WriteLine(Constants.ImportErrorMessage);
                    continue;
                }


                var anomalyEntity = context.Anomalies.FirstOrDefault(a => a.Id == av.Id.Value);
                var personEntity  = context.Persons.FirstOrDefault(p => p.Name == av.Person);


                if (anomalyEntity == null || personEntity == null)
                {
                    Console.WriteLine(Constants.ImportErrorMessage);
                    continue;
                }

                anomalyEntity.Victims.Add(personEntity);
                Console.WriteLine("success!!!");
            }

            context.SaveChanges();
        }
예제 #2
0
        /// Softuni solution
        //private static Star GetStarByName(string starName, MassDefectContext context)
        //{
        //    foreach (var star in context.Stars)
        //    {
        //        if (star.Name == starName)
        //        {
        //            return star;
        //        }
        //    }

        //    return null;
        //}

        private static void ImportStars()
        {
            var context = new MassDefectDB();
            var json    = File.ReadAllText(StarsPath);
            var stars   = JsonConvert.DeserializeObject <IEnumerable <StarDTO> >(json);

            foreach (var star in stars)
            {
                if (star.Name == null || star.SolarSystem == null)
                {
                    Console.WriteLine(Constants.ImportErrorMessage);
                    continue;
                }

                var starEntity = new Star
                {
                    Name        = star.Name,
                    SolarSystem = context.SolarSystems.FirstOrDefault(s => s.Name == star.Name)
                };

                if (star.SolarSystem == null)
                {
                    Console.WriteLine(Constants.ImportErrorMessage);
                    continue;
                }

                context.Stars.Add(starEntity);
                Console.WriteLine(Constants.ImportNamedEntitySuccessMessage, "Star", starEntity.Name);
            }

            context.SaveChanges();
        }
예제 #3
0
        private static void ImportPlanets()
        {
            var context = new MassDefectDB();
            var json    = File.ReadAllText(PlanetsPath);
            var planets = JsonConvert.DeserializeObject <IEnumerable <PlanetDTO> >(json);

            foreach (var planet in planets)
            {
                if (planet.Name == null || planet.SolarSystem == null || planet.Sun == null)
                {
                    Console.WriteLine(Constants.ImportErrorMessage);
                    continue;
                }

                var planetEntity = new Planet
                {
                    Name        = planet.Name,
                    Sun         = context.Stars.FirstOrDefault(s => s.Name == planet.Sun),
                    SolarSystem = context.SolarSystems.FirstOrDefault(ss => ss.Name == planet.SolarSystem)
                };

                if (planetEntity.Sun == null || planetEntity.SolarSystem == null)
                {
                    Console.WriteLine(Constants.ImportErrorMessage);
                    continue;
                }

                context.Planets.Add(planetEntity);
                Console.WriteLine(Constants.ImportNamedEntitySuccessMessage, "Planets", planetEntity.Name);
            }

            context.SaveChanges();
        }
예제 #4
0
        private static void ImportPersons()
        {
            var context = new MassDefectDB();
            var json    = File.ReadAllText(PersonsPath);
            var persons = JsonConvert.DeserializeObject <IEnumerable <PersonDTO> >(json);

            foreach (var person in persons)
            {
                if (person.Name == null || person.HomePlanet == null)
                {
                    Console.WriteLine(Constants.ImportErrorMessage);
                    continue;
                }

                var personEntity = new Person
                {
                    Name       = person.Name,
                    HomePlanet = context.Planets.FirstOrDefault(p => p.Name == person.HomePlanet)
                };

                if (personEntity.HomePlanet == null)
                {
                    Console.WriteLine(Constants.ImportErrorMessage);
                    continue;
                }

                context.Persons.Add(personEntity);
                Console.WriteLine(Constants.ImportNamedEntitySuccessMessage, "Person", personEntity.Name);
            }

            context.SaveChanges();
        }
예제 #5
0
        public static void Main(string[] args)
        {
            var context = new MassDefectDB();

            ExportPlantesWichAreNotAnomalyOrigins(context);
            ExportPeopleWhichHaveNotBeenVictims(context);
            ExportTopAnomaly(context);
        }
예제 #6
0
        private static void ExportPlantesWichAreNotAnomalyOrigins(MassDefectDB context)
        {
            var exportedPlanets = context.Planets
                                  .Where(p => p.OriginAnomalies.Count == 0) // !p.OriginAnomalies.Any()
                                  .Select(p => new
            {
                name = p.Name
            });

            var planetsAsJson = JsonConvert.SerializeObject(exportedPlanets, Formatting.Indented);

            File.WriteAllText("planets.json", planetsAsJson);
        }
예제 #7
0
        private static void ImportAnomalies()
        {
            var context   = new MassDefectDB();
            var json      = File.ReadAllText(AnomaliesPath);
            var anomalies = JsonConvert.DeserializeObject <IEnumerable <AnomalyDTO> >(json);

            foreach (var anomaly in anomalies)
            {
                if (anomaly.OriginPlanet == null || anomaly.TeleportPlanet == null)
                {
                    Console.WriteLine(Constants.ImportErrorMessage);
                    continue;
                }

                // Neno
                //var anomalyEntity = new Anomaly();
                //var an = context.Anomalies.FirstOrDefault(a => a.OriginPlanet.Name == anomaly.OriginPlanet);

                //if (an != null)
                //{
                //    anomalyEntity.OriginPlanet = an.OriginPlanet;
                //    anomalyEntity.TeleportPlanet = an.TeleportPlanet;
                //}

                var anomalyEntity = new Anomaly();

                var originAnomaly         = context.Anomalies.FirstOrDefault(a => a.OriginPlanet.Name == anomaly.OriginPlanet);
                var teleportPlanetAnomaly = context.Anomalies.FirstOrDefault(t => t.TeleportPlanet.Name == anomaly.TeleportPlanet);

                if (originAnomaly != null)
                {
                    anomalyEntity.OriginPlanet = originAnomaly.OriginPlanet;
                }

                if (teleportPlanetAnomaly != null)
                {
                    anomalyEntity.TeleportPlanet = teleportPlanetAnomaly.TeleportPlanet;
                }

                if (anomalyEntity.OriginPlanet == null || anomalyEntity.TeleportPlanet == null)
                {
                    Console.WriteLine(Constants.ImportErrorMessage);
                    continue;
                }

                context.Anomalies.Add(anomalyEntity);
                Console.WriteLine(Constants.ImportUnnamedEntitySuccessMessage);
            }

            context.SaveChanges();
        }
예제 #8
0
        public static void Main(string[] args)
        {
            var xml           = XDocument.Load(NewAnomaliesPath);
            var anomalyNodes  = xml.XPathSelectElements("anomalies/anomaly");
            var context       = new MassDefectDB();
            var anomalyEntity = new Anomaly();

            foreach (var anomalyNode in anomalyNodes)
            {
                var originPlanetName   = anomalyNode.Attribute("origin-planet");
                var teleportPlanetName = anomalyNode.Attribute("teleport-planet");

                if (originPlanetName == null || teleportPlanetName == null)
                {
                    Console.WriteLine(Constants.ImportErrorMessage);
                    continue;
                }
                else
                {
                    anomalyEntity.OriginPlanet   = context.Planets.FirstOrDefault(p => p.Name == originPlanetName.Value);
                    anomalyEntity.TeleportPlanet = context.Planets.FirstOrDefault(tp => tp.Name == teleportPlanetName.Value);
                }

                //var anomalyEntity = new Anomaly
                //{
                //    OriginPlanet = context.Planets.FirstOrDefault(p => p.Name == originPlanetName.Value),
                //    TeleportPlanet = context.Planets.FirstOrDefault(tp => tp.Name == teleportPlanetName.Value)
                //};

                if (anomalyEntity.OriginPlanet == null || anomalyEntity.TeleportPlanet == null)
                {
                    Console.WriteLine(Constants.ImportErrorMessage);
                    continue;
                }

                context.Anomalies.Add(anomalyEntity);
                Console.WriteLine(Constants.ImportUnnamedEntitySuccessMessage);

                var victimsNodes = anomalyNode.XPathSelectElements("victims/victim");
                foreach (var victimNode in victimsNodes)
                {
                    ImportVictims(victimNode, context, anomalyEntity);
                }

                context.SaveChanges();
            }
        }
예제 #9
0
        private static void ExportPeopleWhichHaveNotBeenVictims(MassDefectDB context)
        {
            var peopleToExport = context.Persons
                                 .Where(p => !p.Anomalies.Any())
                                 .Select(p => new
            {
                name       = p.Name,
                homePlanet = new
                {
                    name = p.HomePlanet.Name
                }
            });

            var personsAsJson = JsonConvert.SerializeObject(peopleToExport, Formatting.Indented);

            File.WriteAllText("people.json", personsAsJson);
        }
예제 #10
0
        private static void ImportVictims(XElement victimNode, MassDefectDB context, Anomaly anomaly)
        {
            var victimNameAttr = victimNode.Attribute("name");

            if (victimNameAttr == null)
            {
                Console.WriteLine(Constants.ImportErrorMessage);
                return;
            }

            var personEntity = context.Persons.FirstOrDefault(p => p.Name == victimNameAttr.Value);

            if (personEntity == null)
            {
                Console.WriteLine(Constants.ImportErrorMessage);
                return;
            }

            anomaly.Victims.Add(personEntity);
        }
예제 #11
0
        private static void ExportTopAnomaly(MassDefectDB context)
        {
            var topAnomaly = context.Anomalies
                             .OrderByDescending(a => a.Victims.Count)
                             .Select(a => new
            {
                a.Id,
                originPlanet = new
                {
                    a.OriginPlanet.Name
                },
                teleportPlanet = new
                {
                    a.TeleportPlanet.Name
                },
                victimsCount = a.Victims.Count
            });

            var anomaliesAsJson = JsonConvert.SerializeObject(topAnomaly, Formatting.Indented);

            File.WriteAllText("anomalies.json", anomaliesAsJson);
        }
예제 #12
0
        private static void ImportSolarSystems()
        {
            var context      = new MassDefectDB();
            var json         = File.ReadAllText(SolarSystemPath);
            var solarSystems = JsonConvert.DeserializeObject <IEnumerable <SolarSystemDTO> >(json);

            foreach (var solarSystem in solarSystems)
            {
                if (solarSystem.Name == null)
                {
                    Console.WriteLine(Constants.ImportErrorMessage);
                    continue;
                }

                var solarSystemEntity = new SolarSystem
                {
                    Name = solarSystem.Name
                };

                context.SolarSystems.Add(solarSystemEntity);
                Console.WriteLine(Constants.ImportNamedEntitySuccessMessage, "Solar System", solarSystemEntity.Name);
            }
            context.SaveChanges();
        }
예제 #13
0
        public static void Main(string[] args)
        {
            var context           = new MassDefectDB();
            var exportedAnomalies = context.Anomalies
                                    .Select(a => new
            {
                id             = a.Id,
                originPlanet   = a.OriginPlanet.Name,
                teleportPlanet = a.TeleportPlanet.Name,
                victims        = a.Victims.Select(v => v.Name)
            })
                                    .OrderBy(a => a.id);

            var xmlDocument = new XElement("anomalies");

            foreach (var exportedAnomaly in exportedAnomalies)
            {
                var anomalyNode = new XElement("anomaly");
                anomalyNode.Add(new XAttribute("id", exportedAnomaly.id));
                anomalyNode.Add(new XAttribute("origin-planet", exportedAnomaly.originPlanet));
                anomalyNode.Add(new XAttribute("teleport-planet", exportedAnomaly.teleportPlanet));

                var victimsNode = new XElement("victims");
                foreach (var v in exportedAnomaly.victims)
                {
                    var victimNode = new XElement("victim");
                    victimNode.Add(new XAttribute("name", v));
                    victimsNode.Add(victimNode);
                }

                anomalyNode.Add(victimsNode);
                xmlDocument.Add(anomalyNode);
            }

            xmlDocument.Save("../../anomalies.xml");
        }