Пример #1
0
        public static ProgramMenuOption DisplayProgramMenu()
        {
            System.Console.WriteLine();
            System.Console.WriteLine("PTV DataImport Console. Enter the action number and press enter:");
            System.Console.WriteLine();

            var options = Enum.GetValues(typeof(ProgramMenuOption));

            foreach (var option in options)
            {
                var name  = Enum.GetName(typeof(ProgramMenuOption), option);
                var value = (int)option;

                System.Console.BackgroundColor = ConsoleColor.DarkGreen;
                System.Console.ForegroundColor = ConsoleColor.DarkBlue;
                System.Console.Write("{0}. {1}", value, name);
                System.Console.ResetColor();
                System.Console.WriteLine($" - {Program.GetProgramMenuOptionDescription((ProgramMenuOption)value)}");
            }

            //System.Console.WriteLine("...OR any other key to Exit.");

            ProgramMenuOption result = ProgramMenuOption.Exit;
            var userAction           = System.Console.ReadLine().TrimEnd().ToString();

            Enum.TryParse(userAction, out result);

            System.Console.WriteLine();
            return(result);
        }
Пример #2
0
        private static ProgramMenuOption DisplayProgramMenu()
        {
            Console.WriteLine();
            Console.WriteLine("PTV Excel to JSON. Enter the action number and press enter:");
            Console.WriteLine();

            var options = Enum.GetValues(typeof(ProgramMenuOption));

            foreach (var option in options)
            {
                var name  = Enum.GetName(typeof(ProgramMenuOption), option);
                var value = (int)option;

                Console.BackgroundColor = ConsoleColor.DarkGreen;
                Console.Write("{0}. {1}", value, name);
                Console.ResetColor();
                Console.WriteLine($" - {Program.GetProgramMenuOptionDescription((ProgramMenuOption)value)}");
            }

            ProgramMenuOption result = ProgramMenuOption.Exit;
            var userAction           = Console.ReadLine().Trim();

            Enum.TryParse(userAction, out result);

            Console.WriteLine();
            return(result);
        }
Пример #3
0
        private static string GetProgramMenuOptionDescription(ProgramMenuOption option)
        {
            // quick and dirty descriptions for enum values

            string desc = "No description";

            switch (option)
            {
            case ProgramMenuOption.Exit:
                desc = "Exit the application.";
                break;

            case ProgramMenuOption.All:
                desc = "Generate all JSON files from Excel files.";
                break;

            case ProgramMenuOption.GeneralDescription:
                desc = "Generate general descriptions JSON file from Excel file.";
                break;

            case ProgramMenuOption.LanguageCode:
                desc = "Generate language code JSON file from Excel file.";
                break;

            case ProgramMenuOption.Municipality:
                desc = "Generate municipallity JSON file from Excel file.";
                break;

            case ProgramMenuOption.Organization:
                desc = "Generate organization JSON file from Excel file.";
                break;

            case ProgramMenuOption.CountryCode:
                desc = "Generate country code JSON file from Excel file.";
                break;

            case ProgramMenuOption.IndustrialClasses:
                desc = "Generate industrial classes JSON file from Excel file.";
                break;

            case ProgramMenuOption.BusinessRegion:
                desc = "Generate business regions JSON file from Excel file.";
                break;

            case ProgramMenuOption.HospitalArea:
                desc = "Generate hospital area JSON file from Excel file.";
                break;

            default:
                break;
            }

            return(desc);
        }
Пример #4
0
        public static void ProcessMenuAction(ProgramMenuOption userMenuAction, ILogger logger)
        {
            Console.WriteLine($"Calling '{userMenuAction}'...");
            switch (userMenuAction)
            {
            case ProgramMenuOption.InitialPtvCreate:
                Stopwatch sw      = new Stopwatch();
                Stopwatch swTotal = new Stopwatch();
                swTotal.Start();

                // create and apply migrations
                System.Console.WriteLine("Creating new database...");
                sw.Start();
                FrameworksInitializer.DoMigration(Program.ServiceProvider);
                sw.Stop();
                string msg = $"Database created in {sw.Elapsed}.";
                System.Console.WriteLine(msg);
                logger.LogInformation(msg);
                System.Console.WriteLine();

                // seed system data
                System.Console.WriteLine("Seeding system data to database..");
                sw.Restart();
                FrameworksInitializer.SeedDatabase(Program.ServiceProvider);
                sw.Stop();
                msg = $"System data seeded to database in {sw.Elapsed}.";
                System.Console.WriteLine(msg);
                logger.LogInformation(msg);
                System.Console.WriteLine();

                // Seed finto data
                System.Console.WriteLine("Seeding finto data..");
                sw.Restart();
                ImportFintoDataTask fintoTask = new ImportFintoDataTask(Program.ServiceProvider);
                fintoTask.ImportData();
                sw.Stop();
                System.Console.WriteLine();
                msg = $"Finto items imported in {sw.Elapsed}.";
                System.Console.WriteLine(msg);
                logger.LogInformation(msg);
                System.Console.WriteLine();

                // Seed digital authorizations
                System.Console.WriteLine("Seeding digital authorizations..");
                sw.Restart();
                var importDigitalAuthorizations = new DownloadAndImportDigitalAuthorizationsTask(ServiceProvider);
                importDigitalAuthorizations.ImportDigitalAuthorizations();
                sw.Stop();
                System.Console.WriteLine();
                msg = $"Digital authorization items imported in {sw.Elapsed}.";
                System.Console.WriteLine(msg);
                logger.LogInformation(msg);
                System.Console.WriteLine();

                // Create organizations for municipalities
                System.Console.WriteLine("Creating organizations for municipalities..");
                sw.Restart();
                CreateMunicipalityOrganizationsTask munOrgTask = new CreateMunicipalityOrganizationsTask(Program.ServiceProvider);
                munOrgTask.Create();
                sw.Stop();
                System.Console.WriteLine();
                msg = $"Organizations for municipalities created in {sw.Elapsed}.";
                System.Console.WriteLine(msg);
                logger.LogInformation(msg);
                System.Console.WriteLine();

                // import general descriptions
                System.Console.WriteLine("Importing general descriptions from JSON file..");
                sw.Restart();
                UpdateCreateGeneralDescriptionsTask generalDescriptionsTask = new UpdateCreateGeneralDescriptionsTask(ServiceProvider);
                generalDescriptionsTask.ImportDataFromJSON();
                CreateServiceDataForGeneralDescriptionsJsonTask createServicesDescTask = new CreateServiceDataForGeneralDescriptionsJsonTask(Program.ServiceProvider);
                createServicesDescTask.ImportDataFromJSON();
                sw.Stop();
                System.Console.WriteLine();
                msg = $"General descriptions imported in {sw.Elapsed}.";
                System.Console.WriteLine(msg);
                logger.LogInformation(msg);
                System.Console.WriteLine();

                // import fake ptv data from json
                System.Console.WriteLine("Starting fake PTV import..");
                sw.Restart();
                ImportTask fakeit = new ImportTask(Program.ServiceProvider);
                fakeit.ImportFakePtv();
                sw.Stop();
                msg = $"Fake PTV import complete in {sw.Elapsed}.";
                System.Console.WriteLine(msg);
                logger.LogInformation(msg);
                System.Console.WriteLine();
                var languagesAndVersionsTask = new UpdateLangaugeAvailabilitiesAndVersions(Program.ServiceProvider);
                languagesAndVersionsTask.CheckAndUpdateLangaugeAvailabilitiesAndVersions();
                //Update text description to Json
                var updateTextDescriptionTask = new UpdateTextDescriptionToJsonTask(Program.ServiceProvider);
                updateTextDescriptionTask.CheckAndUpdateTextDescriptionToJson();

                swTotal.Stop();
                msg = $"Create, seed and import data, total time: {swTotal.Elapsed}";
                System.Console.WriteLine(msg);
                logger.LogInformation(msg);
                System.Console.WriteLine();

                System.Console.WriteLine("See log files in /logs subfolder for details.");
                break;

            case ProgramMenuOption.CreateOrMigrateDatabase:
                // create and apply migrations
                System.Console.WriteLine("Applying migrations...");
                FrameworksInitializer.DoMigration(Program.ServiceProvider);
                System.Console.WriteLine("Database created.");
                break;

            case ProgramMenuOption.SeedSystemData:
                // seed system data
                System.Console.WriteLine("Seeding system data to database..");
                FrameworksInitializer.SeedDatabase(Program.ServiceProvider);
                System.Console.WriteLine("System data seeded to database.");
                break;

            case ProgramMenuOption.DownloadGeneralDescription:
                // import general descriptions
                System.Console.WriteLine("Downloading general descriptions from DB to file..");
                sw = new Stopwatch();
                sw.Restart();
                UpdateCreateGeneralDescriptionsTask downloadDescTask = new UpdateCreateGeneralDescriptionsTask(Program.ServiceProvider);
                downloadDescTask.DownloadFromDatabase();
                sw.Stop();

                System.Console.WriteLine();
                msg = $"General descriptions downloaded in {sw.Elapsed}.";
                System.Console.WriteLine(msg);
                logger.LogInformation(msg);
                System.Console.WriteLine();
                break;

            case ProgramMenuOption.UpdateGeneralDescription:
                // import general descriptions
                System.Console.WriteLine("Importing general descriptions from JSON file..");
                sw = new Stopwatch();
                sw.Restart();
                UpdateCreateGeneralDescriptionsTask updateDescTask = new UpdateCreateGeneralDescriptionsTask(Program.ServiceProvider);
                updateDescTask.ImportDataFromJSON();
                sw.Stop();

                System.Console.WriteLine();
                msg = $"General descriptions imported in {sw.Elapsed}.";
                System.Console.WriteLine(msg);
                logger.LogInformation(msg);
                System.Console.WriteLine();
                break;

            case ProgramMenuOption.CreateMunicipalityOrganizations:
                System.Console.WriteLine("Creating Organizations for Municipalities.");
                CreateMunicipalityOrganizationsTask municipalityOrganizationsTask = new CreateMunicipalityOrganizationsTask(Program.ServiceProvider);
                municipalityOrganizationsTask.Create();
                break;

            //case ProgramMenuOption.ImportGeneralDescriptions:
            //    System.Console.WriteLine("Generating general descriptions JSON...");
            //    CreateGeneralDescriptionsJsonTask generalDescriptionTask = new CreateGeneralDescriptionsJsonTask(Program.ServiceProvider);
            //    generalDescriptionTask.Generate();
            //    System.Console.WriteLine("General descriptions JSON generation complete.");
            //    break;
            //case ProgramMenuOption.ImportFakePtv:
            //    System.Console.WriteLine("Starting fake PTV import..");
            //    ImportTask it = new ImportTask(Program.ServiceProvider);
            //    it.ImportFakePtv();
            //    System.Console.WriteLine("Fake PTV import complete.");
            //    break;
            case ProgramMenuOption.DumpFakePtv:
                System.Console.WriteLine("Starting to dump fake PTV to JSON files..");
                DumpFakePtvToFilesTask task = new DumpFakePtvToFilesTask(Program.ServiceProvider);
                task.WriteToFiles();
                System.Console.WriteLine("Fake PTV dumped to JSON files.");
                break;

            case ProgramMenuOption.ValidateFakePtvJson:
                System.Console.WriteLine("Starting to validate fake PTV generated JSON files to model..");

                try
                {
                    DumpFakePtvToFilesTask validationTask = new DumpFakePtvToFilesTask(Program.ServiceProvider);
                    validationTask.ValidateJson();
                    System.Console.WriteLine("Validation success.");
                }
                catch (Exception ex)
                {
                    System.Console.WriteLine(ex.ToString());

                    System.Console.BackgroundColor = ConsoleColor.Red;
                    System.Console.Write("Error:");
                    System.Console.ResetColor();
                    System.Console.WriteLine($" check the SourceXXX model, {ex.Message}");
                }
                break;

            case ProgramMenuOption.CreatePostalCodesJson:
                System.Console.WriteLine("Generating postal codes JSON..");
                CreatePostalCodesJsonTask pct = new CreatePostalCodesJsonTask(Program.ServiceProvider);
                pct.Generate();
                System.Console.WriteLine("Postal codes JSON generation complete.");
                break;

            case ProgramMenuOption.ImportOrganizations:
                System.Console.WriteLine("Importing organizations JSON..");
                CreateOrganizationsJsonTask organizationTask = new CreateOrganizationsJsonTask(Program.ServiceProvider);
                organizationTask.ImportDataFromJSON();
                System.Console.WriteLine("Importing organizations complete.");
                break;

            case ProgramMenuOption.UpdateCoordinatesForAddress:
                System.Console.WriteLine("Updating addresses..");
                var addressTask = new UpdateCoordinatesForAddressesTask(Program.ServiceProvider);
                addressTask.UpdateAddresses();
                System.Console.WriteLine("Updating addresses complete.");
                break;

            case ProgramMenuOption.ImportOrUpdateFinto:
                System.Console.WriteLine("Importing finto data..");
                var fintoUpdateTask = new ImportFintoDataTask(Program.ServiceProvider);
                fintoUpdateTask.ImportData();
                System.Console.WriteLine("Importing finto data complete.");
                break;

            case ProgramMenuOption.DownloadFinto:
                System.Console.WriteLine("Importing finto data..");
                var downloadFintoTask = new DownloadFintoDataTask();
                downloadFintoTask.GetAllFintoData();
                System.Console.WriteLine("Importing finto data complete.");
                break;

            //                        case ProgramMenuOption.SwitchCoordinates:
            //                            System.Console.WriteLine("Switching coordinates..");
            //                            var addressSwitchTask = new UpdateCoordinatesForAddressesTask(Program.ServiceProvider);
            //                            addressSwitchTask.SwitchCoordinates();
            //                            System.Console.WriteLine("Switching coordinates complete.");
            //                            break;
            case ProgramMenuOption.UpdateLanguageAvailabilitiesAndVersions:
                var languagesAndVersions = new UpdateLangaugeAvailabilitiesAndVersions(Program.ServiceProvider);
                languagesAndVersions.CheckAndUpdateLangaugeAvailabilitiesAndVersions();
                break;

            case ProgramMenuOption.UpdateTextDescription:
                var updateTextDescription = new UpdateTextDescriptionToJsonTask(Program.ServiceProvider);
                updateTextDescription.CheckAndUpdateTextDescriptionToJson();
                break;

            case ProgramMenuOption.UpdateServiceDescriptionByGeneralDescription:
                Console.WriteLine($"Update operation can take few minutes...");
                var updateBackgroundGeneralDescription = new UpdateServiceDescriptionByGeneralDescriptionTask(Program.ServiceProvider);
                updateBackgroundGeneralDescription.CheckAndUpdateServiceDescriptionByGeneralDescription();
                Console.WriteLine("Update operation is complete.");
                break;

            case ProgramMenuOption.FindCyclicOrganizations:
                var findCylicOrganizationsTask = new FindCyclicOrganizationsTask(Program.ServiceProvider);
                findCylicOrganizationsTask.FindCyclicOrganizations();
                break;

            case ProgramMenuOption.DeleteOldData:
                var deleteOldDataTask = new DeleteOldDataTask(Program.ServiceProvider);
                deleteOldDataTask.DeleteOldData();
                break;

            case ProgramMenuOption.DownloadAndImportDigitalAuthorizations:
                var digitalAuthorizationsTask = new DownloadAndImportDigitalAuthorizationsTask(ServiceProvider);
                digitalAuthorizationsTask.DownloadAndImportDigitalAuthorizations();
                break;

            case ProgramMenuOption.FixFintoMerge:
                var fixFintoTask = new FixFintoTask(ServiceProvider);
                fixFintoTask.Apply();
                break;

            case ProgramMenuOption.DownloadPostalCodesFromCodeServiceTask:
                DownloadPostalCodesFromCodeServiceTask dpcTask = new DownloadPostalCodesFromCodeServiceTask(ServiceProvider);
                dpcTask.Download();
                break;

            case ProgramMenuOption.FixMultiPublishedEntities:
                FixMultiplePublishedEntitiesTask fixMultipleTask = new FixMultiplePublishedEntitiesTask(ServiceProvider);
                fixMultipleTask.Apply();
                break;

//                case ProgramMenuOption.PrintGDwithoutLaw:
//                    PrintGdWithoutLaw printGd = new PrintGdWithoutLaw(ServiceProvider);
//                    printGd.Apply();
//                    break;
            case ProgramMenuOption.CopyLawsFromArchivedToPublishedGeneralDescs:
                CopyLawsOfGeneralDescs copyLaws = new CopyLawsOfGeneralDescs(ServiceProvider);
                copyLaws.Apply();
                break;

//                case ProgramMenuOption.PrintMissingGDSWELaws:
//                    CopyLawsOfGeneralDescs copyLaws2 = new CopyLawsOfGeneralDescs(ServiceProvider);
//                    copyLaws2.PrintMissingSweLaws();
//                    break;
            default:
                break;
            }
        }
Пример #5
0
        private static string GetProgramMenuOptionDescription(ProgramMenuOption option)
        {
            // quick and dirty descriptions for enum values

            string desc = "No description";

            switch (option)
            {
            case ProgramMenuOption.Exit:
                desc = "Exit the application.";
                break;

            case ProgramMenuOption.InitialPtvCreate:
                desc = "Use this option if you don't have PTVbase database. Creates database, seeds system data and imports data.";
                break;

            case ProgramMenuOption.CreateOrMigrateDatabase:
                desc = "Creates PTVbase database if it doesn't exist and applies migrations. If database exists migrations are applied.";
                break;

            case ProgramMenuOption.SeedSystemData:
                desc = "Seeds system data to existing database. See FrameworksInitializer.SeedDatabase method for implementation.";
                break;

            case ProgramMenuOption.CreateMunicipalityOrganizations:
                desc = "Create Organization and Business for each Municipality.";
                break;

            //case ProgramMenuOption.ImportGeneralDescriptions:
            //    desc = "Imports general descriptions from JSON file to PTV (requires municipality organizations for service creation).";
            //    break;
            //case ProgramMenuOption.ImportFakePtv:
            //    desc = "Imports fake PTV data to PTV.";
            //    break;
            case ProgramMenuOption.DumpFakePtv:
                desc = "Generates JSON files to /Generated/FakePtv folder in the app from fake PTV database. Requires the fake PTV database.";
                break;

            case ProgramMenuOption.ValidateFakePtvJson:
                desc = "Reads fake PTV data from DB and tries to deserialize to objects. Throws exception if our models are missing members.";
                break;

            case ProgramMenuOption.CreatePostalCodesJson:
                desc = "Generates postal code JSON file from Finnish postal service data file.";
                break;

            case ProgramMenuOption.UpdateCoordinatesForAddress:
                desc = "Update coordinates for addresses.";
                break;

            case ProgramMenuOption.ImportOrganizations:
                desc = "Imports organizations from JSON file (created by WinExcelToJSON tool) to DB.";
                break;

            case ProgramMenuOption.ImportOrUpdateFinto:
                desc = "Creates or updates finto data from json to DB.";
                break;

            case ProgramMenuOption.DownloadFinto:
                desc = "Downlopad new json files from service views for Finto data.";
                break;

            case ProgramMenuOption.UpdateGeneralDescription:
                desc = "Creates or updates general description data in DB.";
                break;

            case ProgramMenuOption.UpdateLanguageAvailabilitiesAndVersions:
                desc = "Check and update langauge availabilities and versioning of main entities.";
                break;

            case ProgramMenuOption.UpdateTextDescription:
                desc = "Check and update text descriptions to JSON.";
                break;

            case ProgramMenuOption.UpdateServiceDescriptionByGeneralDescription:
                desc = "Check and update empty or missing service description by general description after background description changes.";
                break;

            case ProgramMenuOption.FindCyclicOrganizations:
                desc = "Find cyclic dependencies in organization structure";
                break;

            case ProgramMenuOption.DownloadAndImportDigitalAuthorizations:
                desc = "Download and import digital authorizations";
                break;

            case ProgramMenuOption.FixFintoMerge:
                desc = "Fix duplicated items for finto";
                break;

            case ProgramMenuOption.DownloadPostalCodesFromCodeServiceTask:
                desc = "Download postal codes from code service and write to PostalCode.json file under Generated folder.";
                break;

            case ProgramMenuOption.FixMultiPublishedEntities:
                desc = "Find and fix multiple published versions of the same data";
                break;

            default:
                break;
            }

            return(desc);
        }
Пример #6
0
        static void Main(string[] args)
        {
            try
            {
                ProgramMenuOption userMenuAction = ProgramMenuOption.Exit;

                do
                {
                    userMenuAction = DisplayProgramMenu();

                    switch (userMenuAction)
                    {
                    case ProgramMenuOption.All:
                        Stopwatch swTotal = new Stopwatch();
                        swTotal.Start();

                        // general description
                        GenerateGeneralDescription();

                        // language code
                        GenerateLanguageCode();

                        // municipality
                        GenerateMunicipality();

                        // country code
                        GenerateCountryCode();

                        GenerateIndustrialClasses();

                        swTotal.Stop();
                        string msg = $"All JSON files generated. Total time: {swTotal.Elapsed}";
                        Console.WriteLine(msg);
                        Console.WriteLine();
                        ShowReminder();
                        break;

                    case ProgramMenuOption.GeneralDescription:
                        GenerateGeneralDescription();
                        ShowReminder();
                        break;

                    case ProgramMenuOption.LanguageCode:
                        GenerateLanguageCode();
                        ShowReminder();
                        break;

                    case ProgramMenuOption.Municipality:
                        GenerateMunicipality();
                        ShowReminder();
                        break;

                    case ProgramMenuOption.Organization:
                        GenerateOrganization();
                        ShowReminder();
                        break;

                    case ProgramMenuOption.CountryCode:
                        GenerateCountryCode();
                        ShowReminder();
                        break;

                    case ProgramMenuOption.BusinessRegion:
                        GenerateBusinessRegions();
                        ShowReminder();
                        break;

                    case ProgramMenuOption.HospitalArea:
                        GenerateHospitalAreas();
                        ShowReminder();
                        break;

                    case ProgramMenuOption.IndustrialClasses:
                        GenerateIndustrialClasses();
                        ShowReminder();
                        break;

                    case ProgramMenuOption.Exit:
                        break;

                    default:
                        // invalid options
                        userMenuAction = ProgramMenuOption.Exit;
                        break;
                    }
                } while (userMenuAction != ProgramMenuOption.Exit);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }

            Console.WriteLine("Done.");
            Console.Read();
        }