コード例 #1
0
ファイル: Program.cs プロジェクト: magenta-aps/cprbroker
 object GetPersonFromDatabase(string pnr, DateTime effectDate)
 {
     using (var dataContext = new E_MDataContext(ConnectionString))
     {
         var citizen      = dataContext.Citizens.Where(cit => cit.PNR == decimal.Parse(pnr)).First();
         var registration = citizen.ToRegistreringType1(effectDate, cpr => Guid.NewGuid());
         return(registration);
     }
 }
コード例 #2
0
ファイル: Program.cs プロジェクト: magenta-aps/cprbroker
        public void Run(string[] args)
        {
            var nowDirectoryString = string.Format("Runs\\{0}\\", DateTime.Now.ToString("yyyy MM dd HH_mm"));

            if (!Directory.Exists(nowDirectoryString))
            {
                Directory.CreateDirectory(nowDirectoryString);
            }

            ConnectionString = string.Join(" ", args);
            string logFileName       = nowDirectoryString + "Log.txt";
            string succeededFileName = nowDirectoryString + "Succeeded.txt";
            string failedFileName    = nowDirectoryString + "Failed.txt";
            string outDir            = nowDirectoryString + "Registrations\\";

            if (!Directory.Exists(outDir))
            {
                Directory.CreateDirectory(outDir);
            }

            var logFileWriter = new StreamWriter(logFileName, true)
            {
                AutoFlush = true
            };
            var succeededFileWriter = new StreamWriter(succeededFileName, true)
            {
                AutoFlush = true
            };
            var failedFileWriter = new StreamWriter(failedFileName, true)
            {
                AutoFlush = true
            };

            Console.SetOut(logFileWriter);


            var effectDate = DateTime.Today;

            bool useWebService = true;
            Func <string, DateTime, object> getter;

            if (useWebService)
            {
                getter = GetPersonFromWebService;
            }
            else
            {
                getter = GetPersonFromDatabase;
            }

            using (succeededFileWriter)
            {
                using (failedFileWriter)
                {
                    using (var dataContext = new E_MDataContext(ConnectionString))
                    {
                        var count = dataContext.Citizens.Count();
                        Console.WriteLine(string.Format("Found <{0}>citizens", count));
                        int processed = 0;
                        foreach (var citizen in dataContext.Citizens.OrderBy(c => c.PNR))
                        {
                            string pnr = Converters.ToCprNumber(citizen.PNR);
                            Console.WriteLine(string.Format("Starting citizen <{0}>", pnr));
                            try
                            {
                                var    registration         = getter(pnr, effectDate);
                                string registrationXml      = CprBroker.Utilities.Strings.SerializeObject(registration);
                                string registrationFileName = string.Format("{0}{1}.xml", outDir, pnr);
                                File.WriteAllText(registrationFileName, registrationXml);
                                succeededFileWriter.WriteLine(pnr);
                                Console.WriteLine("Succeeded !!");
                            }
                            catch (Exception ex)
                            {
                                failedFileWriter.WriteLine(pnr);
                                Console.WriteLine(ex.ToString());
                            }
                            finally
                            {
                                processed++;
                                var percent = (100 * processed / count).ToString();
                                Console.WriteLine(string.Format("Processed <{0}> of <{1}> - <{2}%>", processed, count, percent));
                            }
                        }
                    }
                }
            }
        }