Example #1
0
        public void ExportAndCloseAsync()
        {
            if (this.Parent != null)
            {
                IntPtr main = this.Parent.Handle;

                Voucher bData = Canvas.Data;
                bData.VoucherImage = (Bitmap)Canvas.BackgroundImage;

                var cnts = Canvas.Controls.Find(ManualInsertDataControl.MANUALINSERT_DATACONTROL_NAME, true);
                if (cnts != null && cnts.Length != 0)
                {
                    ManualInsertDataControl cnt = (ManualInsertDataControl)cnts[0];
                    if (!string.IsNullOrEmpty(cnt.BarCodeString))
                    {
                        bData.Parse(cnt.BarCodeString);
                    }
                    else
                    {
                        string[] str = cnt.BarCodeNumberGroups;
                        bData.CountryID = int.Parse(str[0]);
                        //bData.Business = int.Parse(str[1]);
                        bData.RetailerID    = int.Parse(str[2]);
                        bData.VoucherID     = str[3];
                        bData.BarCodeString = string.Format("{0:000}{1:00}{2:000000}{3:000000000}",
                                                            bData.CountryID, "na", bData.RetailerID, bData.VoucherID);
                    }
                }

                new Action <Voucher>((data) =>
                {
                    Debug.Assert(data != null);
                    Debug.Assert(data.VoucherImage != null);

                    lock (data.VoucherImage)
                    {
                        try
                        {
                            DelegateUtils.CreateAuditIdReloadDelegate().FireAndForget();

                            data.SiteCode = AuditIDSTable.SelectRemoveFirstOrEmpty().ThrowIfDefault <string, AppExclamationException>();

                            data.Validate();

                            ClientDataAccess.UpdateFileAsync((DbClientVoucher)data,
                                                             new EventHandler((o, s) =>
                            {
                                string fileName = Path.ChangeExtension(
                                    string.Format("{0}{1}", PTFUtils.GetMachine(),
                                                  DateTime.Now).ReplaceAll(new char[] { '.', '/', '\\', '-' }, '_'), ".xml");

                                //Data has been saved successfully.
                                string text = string.Concat(Strings.VScan_ItemSaved, fileName);
                                WinMsg.SendText(main, text);
                                this.InvokeSf(() =>
                                {
                                    //Set DialogResult OK
                                    //Or else the form will resign to close
                                    this.DialogResult = DialogResult.OK;
                                    this.Close();
                                });
                            }),
                                                             //No error handling.
                                                             //General processing handler.
                                                             null);
                        }
                        catch (Exception ee)
                        {
                            ee.AddNext(new MethodInvoker(() =>
                            {
                                Canvas.InvokeSf(() =>
                                {
                                    Canvas.ShowInputControl(ee.Message);
                                });
                            }));
                            throw;
                        }
                    }
                }).FireAndForget(bData);
            }
        }
Example #2
0
        static void Main()
        {
            Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);
#if DEBUG
            InDebug = true;
#endif
            //Register application exception handler
            ThreadBase.Error += OnError;
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
            Application.ThreadException += OnError;
            SQLWorker.Default.Error     += OnError;
            SettingsTable.Default.Error += OnError;

            ClientDataAccess.ConnectionString = ConfigurationManager.AppSettings[Strings.Scan_ConnectionString].ToStringSf();

#if !INSTALL_SRV
            //Try start stransffering service. WARNING: Should be installed.
            UIUtils.TryStartTransferringServiceAsync();
#endif
            //Load settings
            SettingsTable.Default.Read();

            //Zero day counter
            if (SettingsTable.Get <DateTime>(Strings.VScan_LastStarted, DateTime.Now).Date < DateTime.Now.Date)
            {
                SettingsTable.Set(Strings.VScan_ScanCount, 0);
            }

            SettingsTable.Get <UniqueList <UserAuth> >(Strings.Transferring_AuthObjectList,
                                                       new UniqueList <UserAuth>(new UserAuthComparer())
            {
                UserAuth.DefaultAdmin, UserAuth.Rosen, UserAuth.Default
            });

            Thread.CurrentThread.CurrentUICulture = SettingsTable.Get <CultureInfo>(Strings.Transferring_CurrentUICultureInfo, new CultureInfo("en"));

            ScanAppContext.QueryCountryesAsync();

            //Set last started.
            SettingsTable.Set(Strings.VScan_LastStarted, DateTime.Now);
            //Start sql pool
            SQLWorker.Default.Start(ThreadPriority.Lowest, "VScan.SQLWorker");

            //Show splash
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new SplashScreen());

            //Start pipe server to the tranferring service
            ScanAppContext.Default = new ScanAppContext(new MainForm());

            //Load SiteIDs
            DelegateUtils.CreateAuditIdReloadDelegate().FireAndForget();

            //Set application printer
            //If no printer is set this will set default printer as application printer
            string defaultPrinterName = PrintManager.GetDefaultPrinterName();
            SettingsTable.Get(Strings.VScan_ApplicationPrinterName, defaultPrinterName);

            //Start application
            Application.Run(ScanAppContext.Default);

            //Stop pipe server
            //Wait pool empty. Stop it.
            SQLWorker.Default.Empty.WaitOne();
            SQLWorker.Default.Stop();
            //Save settings
            SettingsTable.Default.Save();

            //Unregister application error handler
            ThreadBase.Error            -= OnError;
            Application.ThreadException -= OnError;
            SQLWorker.Default.Error     -= OnError;
            SettingsTable.Default.Error -= OnError;
        }