예제 #1
0
        public static void Execute <StringModel, DBModel>(IJobExecutionContext context)
            where StringModel : FileData, new()
            where DBModel : IDBData, new()
        {
            try
            {
                Console.WriteLine("Iteruje dla " + typeof(DBModel).Name.ToString());

                var syncXL = new SyncXL();
                var lines  = syncXL.GetFromXL <DBModel>();

                Console.WriteLine("Pobrano dane z XL-a " + typeof(DBModel).Name.ToString());


                string    ConStr = ConfigurationManager.AppSettings["DBConString"].ToString();
                DBContext DB     = new DBContext(ConStr);


                var stringList = new CoherentDataList <StringModel>();

                var modelName = typeof(DBModel).Name;//.GetType();//typeof(BLModel. //).GetType().Name;
                var regex     = Helper.FileType(modelName);
                var filename  = Helper.FileName(modelName);



                foreach (var item in lines)
                {
                    var itemStringModel = item.ToStringModel <DBModel, StringModel>();
                    stringList.Add(itemStringModel);
                }



                string fileToSavePath = ConfigurationManager.AppSettings["LocalINPathXLtoSync"].ToString();
                string fileToSave     = fileToSavePath + filename;
                stringList.SaveToFile(fileToSave);

                Console.WriteLine("Zapisoano na dysku plik" + fileToSave);


                string host     = ConfigurationManager.AppSettings["FtpHostXLtoSync"].ToString();
                string username = ConfigurationManager.AppSettings["UserXLtoSync"].ToString();
                string pass     = ConfigurationManager.AppSettings["PasswdXLtoSync"].ToString();
                var    ftp      = new FTP(host, username, pass);

                string inLocal = ConfigurationManager.AppSettings["LocalINPathXLtoSync"].ToString();
                string outFTP  = ConfigurationManager.AppSettings["FTPOUTPathXLtoSync"].ToString();
                ftp.Send(inLocal, outFTP, regex);

                Console.WriteLine("Wysłano Ftp-em plik" + fileToSave);


                foreach (var item in lines)
                {
                    if (typeof(DBModel).Name == "DealerPartsMaster")
                    {
                        var dbModel = item as DealerPartsMaster;

                        dbModel.CreationDate = DateTime.Now;
                        dbModel.Status       = "Wprowadzono do bazy i wysłano FTP-em do Synchrona";
                        dbModel.File         = filename;

                        DB.DealerPartsMaster.Add(dbModel);
                    }

                    if (typeof(DBModel).Name == "OpenPurchaseOrders")
                    {
                        var dbModel = item as OpenPurchaseOrders;

                        dbModel.CreationDate = DateTime.Now;
                        dbModel.Status       = "Wprowadzono do bazy i wysłano FTP-em do Synchrona";
                        dbModel.File         = filename;

                        DB.OpenPurchaseOrders.Add(dbModel);
                    }

                    if (typeof(DBModel).Name == "TransactionalDemand")
                    {
                        var dbModel = item as TransactionalDemand;

                        dbModel.CreationDate = DateTime.Now;
                        dbModel.Status       = "Wprowadzono do bazy i wysłano FTP-em do Synchrona";
                        dbModel.File         = filename;

                        DB.TransactionalDemand.Add(dbModel);
                    }
                }

                DB.SaveChanges();

                Console.WriteLine("Zapisano w bazie plik" + fileToSave);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                using (StreamWriter writetext = new StreamWriter(typeof(DBModel).Name + "_Error.txt"))
                {
                    writetext.WriteLine(ex.ToString());
                }

                Thread.Sleep(1 * 60 * 1000);

                SimpleTriggerImpl retryTrigger = new SimpleTriggerImpl(Guid.NewGuid().ToString());
                retryTrigger.Description  = "RetryTrigger";
                retryTrigger.RepeatCount  = 0;
                retryTrigger.JobKey       = context.JobDetail.Key;                             // connect trigger with current job
                retryTrigger.StartTimeUtc = DateBuilder.NextGivenSecondDate(DateTime.Now, 30); // Execute after 30 seconds from now
                context.Scheduler.ScheduleJob(retryTrigger);                                   // schedule the trigger

                //     JobExecutionException jex = new JobExecutionException(ex, false);
                //     throw jex;
            }
        }
예제 #2
0
        public void Execute(IJobExecutionContext context)
        {
            try
            {
                Console.WriteLine("OrderExport Iteruje dla OrderExport");

                string host     = ConfigurationManager.AppSettings["FtpHostSyncToXL"].ToString();
                string username = ConfigurationManager.AppSettings["UserSyncToXL"].ToString();
                string pass     = ConfigurationManager.AppSettings["PasswdSyncToXL"].ToString();
                var    ftp      = new FTP(host, username, pass);

                string outLocal = ConfigurationManager.AppSettings["LocalOUTPathSyncToXL"].ToString();
                string inFTP    = ConfigurationManager.AppSettings["FTPINPathSyncToXL"].ToString();
                ftp.Recive(inFTP, outLocal, "-ORDERS.txt");

                Console.WriteLine("OrderExport Pobrałem z FTP-a");


                string[] filePaths = Directory.GetFiles(outLocal);

                foreach (var file in filePaths)
                {
                    if (!Path.GetFileName(file).EndsWith("-ORDERS.txt"))
                    {
                        continue;
                    }
                    Console.WriteLine("OrderExport Przetwarzam plik" + file);

                    var stringList = new CoherentDataList <StringOrderExport>(file);
                    var listOut    = new List <OrderExport>();

                    string    ConStr = ConfigurationManager.AppSettings["DBConString"].ToString();
                    DBContext DB     = new DBContext(ConStr);

                    var syncXL = new SyncXL();

                    foreach (StringOrderExport el in stringList.List)
                    {
                        var toSend = new OrderExport(el);

                        listOut.Add(toSend);
                    }
                    syncXL.SendToXL(file, listOut);
                    Console.WriteLine("OrderExport Wysyłam do XL-a");

                    File.Move(file, file + "_" + Guid.NewGuid() + "_" + ".BACKUP.txt");

                    foreach (StringOrderExport el in stringList.List)
                    {
                        var toSend = new OrderExport(el);

                        toSend.CreationDate = DateTime.Now;
                        toSend.File         = Path.GetFileName(file);
                        toSend.Status       = "OrderExport Pobrano z FTP, Przetworzono i Wysłano do XL-a";

                        DB.OrderExport.Add(toSend);
                    }

                    DB.SaveChanges();
                    Console.WriteLine("OrderExport dodano do bazy plik " + file);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                using (StreamWriter writetext = new StreamWriter("OrderExport_" + "Error.txt"))
                {
                    writetext.WriteLine(ex.ToString());
                }

                Thread.Sleep(1 * 60 * 1000);

                SimpleTriggerImpl retryTrigger = new SimpleTriggerImpl(Guid.NewGuid().ToString());
                retryTrigger.Description  = "RetryTrigger";
                retryTrigger.RepeatCount  = 0;
                retryTrigger.JobKey       = context.JobDetail.Key;                             // connect trigger with current job
                retryTrigger.StartTimeUtc = DateBuilder.NextGivenSecondDate(DateTime.Now, 30); // Execute after 30 seconds from now
                context.Scheduler.ScheduleJob(retryTrigger);                                   // schedule the trigger

                //  JobExecutionException jex = new JobExecutionException(ex, false);
                //  throw jex;
            }
            //                var syncXL = new SyncXL();
            //                syncXL.Send(file,listOut);
        }