Ejemplo n.º 1
0
        static async Task <int> RunImport(ImportOptions opts)
        {
            var db       = (await GetKTContextAsync(opts)) as KTRulesContext;
            var provider = KTContext.Provider;

            if (opts.RulesPath != null)
            {
                Console.WriteLine($"Importing Rules from {opts.RulesPath}");
                provider = new Services.RulesProviders.FileRulesProvider(opts.RulesPath);
            }
            db.Database.CloseConnection();
            db = new DBUpdater(db.DBPath, provider).GetUpdatedContext();
            return(0);
        }
Ejemplo n.º 2
0
        public MainForm()
        {
            InitializeComponent();
            InitializeWaveOut();
            double lat, lng;

            GetLatLong(out lat, out lng);
            if (lat == -1 && lng == -1)
            {
                gMap.Enabled = false;
                return;
            }
            deviceGeoLocation = new PointLatLng(lat, lng);
            SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);
            dbUpdater = new DBUpdater(deviceGeoLocation);
            InitializeGMap();
            recording     = new Recording.Recording(4);
            timeAveraging = new Averaging.TimeAveraging(lblLavgValue, lblTWAValue, lblDoseValue);
            comboBoxTimeWeight.SelectedIndex = 0;
            recording.OnDataAvaliable       += UpdateTimeDomain;
            recording.OnDataAvaliable       += UpdateVUMeter;
            recording.OnDataAvaliable       += timeAveraging.GatherNewData;

            CalibrationParams = new CalibrationParams
            {
                Sample = (short)Properties.Settings.Default["calibration_sample"],
                Noise  = (double)Properties.Settings.Default["calibration_noise"]
            };

            freqDomain.ChartAreas[0].AxisX.ScaleView.Zoomable       = true;
            freqDomain.ChartAreas[0].CursorX.AutoScroll             = true;
            freqDomain.ChartAreas[0].CursorX.IsUserSelectionEnabled = true;

            octaveFreqDomain.ChartAreas[0].AxisX.ScaleView.Zoomable       = true;
            octaveFreqDomain.ChartAreas[0].CursorX.AutoScroll             = true;
            octaveFreqDomain.ChartAreas[0].CursorX.IsUserSelectionEnabled = true;

            octavesVisualisation.ChartAreas[0].AxisX.ScaleView.Zoomable       = true;
            octavesVisualisation.ChartAreas[0].CursorX.AutoScroll             = true;
            octavesVisualisation.ChartAreas[0].CursorX.IsUserSelectionEnabled = true;

            timeDomain.ChartAreas[0].AxisY.Maximum     = short.MaxValue;
            timeDomain.ChartAreas[0].AxisY.Minimum     = short.MinValue;
            sensorReadings.ChartAreas[0].AxisY.Maximum = 140;
            sensorReadings.ChartAreas[0].AxisY.Minimum = 0;

            AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;
            recording.IsRecording = true;
        }
 private void Record()
 {
     RemoteKinect.Server.Status = Status.RECORDING;
     recording = true;
     RaisePropertyChanged("CanRecord");
     RaisePropertyChanged("CanForceFPS");
     CurrentDuration = 1;
     Right           = new Graphics();
     Left            = new Graphics();
     Task.Factory.StartNew(() =>
     {
         EndOfSessionTimer.Start();
         SessionPercentageTimer.Start();
         Session = DBUpdater.CreateUnsavedSession();
     });
 }
 private void SaveSessionWindow_WindowClosed(object sender, bool saveSession)
 {
     SaveSessionWindow.Close();
     if (saveSession)
     {
         RemoteKinect.Server.Status = Status.STORING;
         DBUpdater.DigestSession(Session, ref LocalFrames, ref RemoteFrames);
     }
     else
     {
         LocalFrames.Clear();
         RemoteFrames.Clear();
     }
     CurrentDuration = 0;
     LocalKinect.KinectController.Start();
     RemoteKinect.Server.Start();
     RemoteKinect.Server.Status = Status.READY;
 }
        private void Save()
        {
            string athleteHash = "";

            Models.AthleteModel validationAthlete = DBAccessor.GetAthleteIfExists(AthleteModel.IdNumber);
            if (AthleteFormularyEnabled == "True")
            {
                if (validationAthlete != null)
                {
                    MessageBoxResult res = MessageBox.Show("Already exists an athlete with id number \"" + AthleteModel.IdNumber + "\" named \"" + validationAthlete.Name + "\"" + Environment.NewLine +
                                                           "Do you want to update his name?", "Athlete already exists", MessageBoxButton.YesNo);
                    switch (res)
                    {
                    case MessageBoxResult.Yes:
                        break;

                    case MessageBoxResult.No:
                        AthleteModel.Name   = validationAthlete.Name;
                        AthleteModel.Gender = validationAthlete.Gender;
                        break;

                    default:
                        break;
                    }
                }
                athleteHash = DBUpdater.AddOrUpdateAthlete(AthleteModel);
            }
            else
            {
                athleteHash = DBAccessor.GetExistingAthleteHash(AthleteModel.IdNumber);
            }
            try
            {
                DBUpdater.SaveSession(SessionModel, athleteHash);
            }
            catch
            {
            }
            Window.CloseAndNotify(true);
        }
Ejemplo n.º 6
0
        private static void Main(string[] args)
        {
            CommandLineApplication app = new CommandLineApplication
            {
                Name        = "Betting",
                Description = "Betting console app with argument parsing."
            };

            app.HelpOption("-?|-h|--help");

            CommandOption executeMetrics = app.Option("-e|--evaluateMetrics", "Evaluate all metrics", CommandOptionType.NoValue);
            CommandOption inspectMetric  = app.Option("-x|--inspectMeric <optionvalue>", "get data about a metric", CommandOptionType.SingleValue);
            CommandOption predictResults = app.Option("-w|--predictResults", "predict results", CommandOptionType.NoValue);
            CommandOption dbUpdate       = app.Option("-u|--dbUpdate", "Create enhanced csv files", CommandOptionType.NoValue);

            CommandOption leagueOption           = app.Option("-l|--league <optionvalue>", "League name (PremierLeague/Championship)", CommandOptionType.SingleValue);
            CommandOption yearOption             = app.Option("-y|--year <optionvalue>", "Yeasr to start compute (2018)", CommandOptionType.SingleValue);
            CommandOption yReverseOption         = app.Option("-r|--yreverse <optionvalue>", "Year to go behind(7)", CommandOptionType.SingleValue);
            CommandOption matchdayOption         = app.Option("-m|--matchday <optionvalue>", "Matchday to start compute (max Championship = 46 max Premier League = 38)", CommandOptionType.SingleValue);
            CommandOption mReverseOption         = app.Option("-v|--mreverse <optionvalue>", "Matchdays to go behind(Matchday-10)", CommandOptionType.SingleValue);
            CommandOption drawMarginOption       = app.Option("-d|--drawmargin <optionvalue>", "Percent safety for draw(2)", CommandOptionType.SingleValue);
            CommandOption drawMixedMarginOption  = app.Option("-i|--drawmixedmargin <optionvalue>", "Percent safety for draw mixed(20)", CommandOptionType.SingleValue);
            CommandOption maxOddsOption          = app.Option("-o|--maxodds <optionvalue>", "Max odds (2.0)", CommandOptionType.SingleValue);
            CommandOption minOddsOption          = app.Option("-O|--minodds <optionvalue>", "Min odds (2.0)", CommandOptionType.SingleValue);
            CommandOption minMetricCorrectOption = app.Option("-c|--minmetriccorrect <optionvalue>", "?? 1", CommandOptionType.SingleValue);
            CommandOption minYearProfitOption    = app.Option("-p|--minyearprofit <optionvalue>", "Min profit per year (0)", CommandOptionType.SingleValue);
            CommandOption minAverageProfitOption = app.Option("-P|--minaverageprofit <optionvalue>", "Min average for all years (0)", CommandOptionType.SingleValue);
            CommandOption logLevelOption         = app.Option("-g|--loglevel <optionvalue>", "LOG_DEBUG, LOG_INFO, LOG_RESULT", CommandOptionType.SingleValue);
            CommandOption filterTopRate          = app.Option("-f|--filtertoprate <optionvalue>", "how many should we keep in the output sorted by rate(10)", CommandOptionType.SingleValue);
            CommandOption filterTopProfit        = app.Option("-F|--filtertopprofit <optionvalue>", "how many should we keep in the output sorted by profit(10)", CommandOptionType.SingleValue);
            CommandOption betStyleOption         = app.Option("-t|--betstyle <optionvalue>", "ticket options (12345)", CommandOptionType.SingleValue);
            CommandOption useExpanded            = app.Option("-X|--useExpanded", "Use expanded csv data", CommandOptionType.SingleValue);


            app.OnExecute(() =>
            {
                ConfigManager configManager = new ConfigManager();
                Stopwatch stopWatch         = new Stopwatch();
                stopWatch.Start();

                if (leagueOption.HasValue())
                {
                    configManager.SetLeagueName(leagueOption.Value());
                }

                if (yearOption.HasValue())
                {
                    configManager.SetYear(int.Parse(yearOption.Value()));
                }

                if (yReverseOption.HasValue())
                {
                    configManager.SetReverseYears(int.Parse(yReverseOption.Value()));
                }

                if (mReverseOption.HasValue())
                {
                    configManager.SetReverseDays(int.Parse(mReverseOption.Value()));
                }

                if (drawMarginOption.HasValue())
                {
                    configManager.SetDrawMargin(int.Parse(drawMarginOption.Value()));
                }

                if (drawMixedMarginOption.HasValue())
                {
                    configManager.SetDrawMixedMargin(int.Parse(drawMixedMarginOption.Value()));
                }

                if (maxOddsOption.HasValue())
                {
                    configManager.SetMaxOdds(double.Parse(maxOddsOption.Value()));
                }

                if (minOddsOption.HasValue())
                {
                    configManager.SetMinOdds(double.Parse(minOddsOption.Value()));
                }

                if (minMetricCorrectOption.HasValue())
                {
                    configManager.SetMinMetricCorrect(double.Parse(minMetricCorrectOption.Value()));
                }

                if (minYearProfitOption.HasValue())
                {
                    configManager.SetMinYearProfit(double.Parse(minYearProfitOption.Value()));
                }

                if (minAverageProfitOption.HasValue())
                {
                    configManager.SetMinAverageProfit(double.Parse(minAverageProfitOption.Value()));
                }

                if (logLevelOption.HasValue())
                {
                    configManager.SetLogLevel(logLevelOption.Value());
                }

                if (filterTopRate.HasValue())
                {
                    configManager.SetFilterTopRate(int.Parse(filterTopRate.Value()));
                }

                if (filterTopProfit.HasValue())
                {
                    configManager.SetFilterTopProfit(int.Parse(filterTopProfit.Value()));
                }

                if (betStyleOption.HasValue())
                {
                    configManager.SetBetStyle(betStyleOption.Value());
                }

                if (useExpanded.HasValue())
                {
                    configManager.SetUseExpanded(true);
                    configManager.SetCoeficientWeight(int.Parse(useExpanded.Value()));
                }

                FixtureRetriever fixtureRetriever = new FixtureRetriever(configManager);
                Logger logger = new Logger(configManager.GetLogLevel());

                if (matchdayOption.HasValue())
                {
                    if (matchdayOption.Value().Contains("max"))
                    {
                        string expression = matchdayOption.Value().Replace("max", fixtureRetriever.GetNumberOfMatchDays(configManager.GetYear()).ToString());
                        DataTable dt      = new DataTable();
                        configManager.SetMatchDay(int.Parse(dt.Compute(expression, "").ToString()));
                    }
                    else
                    {
                        configManager.SetMatchDay(int.Parse(matchdayOption.Value()));
                    }
                }


                if (dbUpdate.HasValue())
                {
                    if (executeMetrics.HasValue())
                    {
                        SortedDictionary <double, KeyValuePair <char, int> > sortedAvg =
                            new SortedDictionary <double, KeyValuePair <char, int> >();

                        int numMetrics = MetricFactory.differentMetricCount;
                        int maxI       = Convert.ToInt32(Math.Pow(10, numMetrics));
                        Parallel.For(1, maxI, (i) =>
                        {
                            List <MetricConfig> metricConfigs = MetricFactory.GetMetricList(i);

                            DBUpdater db = new DBUpdater(metricConfigs, configManager, fixtureRetriever);
                            db.AddPoints(false);
                            logger.LogResult("\n R2 values  1 {0:0.00}, X {1:0.00}, 2 {2:0.00} metric {3} \n", db.r2Values_['1'], db.r2Values_['X'], db.r2Values_['2'], i);

                            lock (sortedAvg)
                            {
                                foreach (KeyValuePair <char, double> kv in db.r2Values_)
                                {
                                    if (kv.Key != '1')
                                    {
                                        continue;
                                    }

                                    if (!sortedAvg.ContainsKey(kv.Value))
                                    {
                                        sortedAvg.Add(kv.Value, new KeyValuePair <char, int>(kv.Key, i));
                                    }

                                    if (sortedAvg.Count > configManager.GetFilterTopProfit())
                                    {
                                        sortedAvg.Remove(sortedAvg.Keys.First());
                                    }
                                }
                            }
                        });

                        foreach (KeyValuePair <double, KeyValuePair <char, int> > x in sortedAvg)
                        {
                            logger.LogResult("\nR2 metric {0:0.00}, value {1:0.00}\n", x.Value.Value, x.Key);
                        }
                    }
                    else
                    {
                        int metricConfigId = int.Parse(inspectMetric.Value());
                        List <MetricConfig> metricConfigs = MetricFactory.GetMetricList(metricConfigId);
                        MetricFactory.PrintMetricList(logger, metricConfigId);
                        DBUpdater db = new DBUpdater(metricConfigs, configManager, fixtureRetriever);
                        db.AddPoints(true);
                        logger.LogResult("\n R2 values  1 {0:0.00}, X {1:0.00}, 2 {2:0.00} \n", db.r2Values_['1'], db.r2Values_['X'], db.r2Values_['2']);
                    }
                }
                else if (predictResults.HasValue())
                {
                    int metricConfigId = int.Parse(inspectMetric.Value());
                    List <MetricConfig> metricConfigs = MetricFactory.GetMetricList(metricConfigId);
                    MetricFactory.PrintMetricList(logger, metricConfigId);
                    logger.LogResultSuccess("\n Results: \n");
                    GlobalStats gs = new GlobalStats(metricConfigs, configManager, fixtureRetriever, logger);
                    gs.ProcessUpcomingFixtures(out double profit);
                }
                else if (inspectMetric.HasValue())
                {
                    int metricConfigId = int.Parse(inspectMetric.Value());
                    List <MetricConfig> metricConfigs = MetricFactory.GetMetricList(metricConfigId);
                    MetricFactory.PrintMetricList(logger, metricConfigId);

                    GlobalStats gs = new GlobalStats(metricConfigs, configManager, fixtureRetriever, logger);
                    gs.GetAllYearsData(out bool success, out double rate, out double averageProfit);

                    if (success)
                    {
                        logger.LogResultSuccess("Result {0}, Rate {1:0.00}, avgProfit {2:0.00} \n", success, rate, averageProfit);
                    }
                    else
                    {
                        logger.LogResultFail("Result {0}, Rate {1:0.00}, avgProfit {2:0.00} \n", success, rate, averageProfit);
                    }
                }
                else if (executeMetrics.HasValue())
                {
                    SortedDictionary <double, RunOutput> topByProfit =
                        new SortedDictionary <double, RunOutput>();
                    SortedDictionary <double, RunOutput> topByRate =
                        new SortedDictionary <double, RunOutput>();
                    SortedDictionary <double, RunOutput> successRuns =
                        new SortedDictionary <double, RunOutput>();

                    int numMetrics = MetricFactory.differentMetricCount;
                    int maxI       = Convert.ToInt32(Math.Pow(10, numMetrics));
                    Parallel.For(1, maxI, (i) =>
                    {
                        List <MetricConfig> metricConfigs = MetricFactory.GetMetricList(i);

                        if (configManager.GetLogLevel() <= ConfigManager.LogLevel.LOG_INFO)
                        {
                            MetricFactory.PrintMetricList(logger, i);
                        }

                        GlobalStats gs = new GlobalStats(metricConfigs, configManager, fixtureRetriever, logger);
                        gs.GetAllYearsData(out bool success, out double rate, out double averageProfit);

                        if (success)
                        {
                            lock (successRuns)
                            {
                                try
                                {
                                    successRuns.Add(averageProfit, new RunOutput(success, rate, averageProfit, i, maxI));
                                }
                                catch (Exception)
                                {
                                }
                            }

                            logger.LogResultSuccess("Result {0}, Rate {1:0.00}, avgProfit {2:0.00}, cfg {3} \n", success, rate, averageProfit, i);
                        }
                        else
                        {
                            logger.LogResultFail("Result {0}, Rate {1:0.00}, avgProfit {2:0.00}, cfg {3} \n", success, rate, averageProfit, i);
                        }

                        lock (topByProfit)
                        {
                            if (!topByProfit.ContainsKey(averageProfit))
                            {
                                topByProfit.Add(averageProfit, new RunOutput(success, rate, averageProfit, i, maxI));
                            }

                            if (topByProfit.Count > configManager.GetFilterTopProfit())
                            {
                                topByProfit.Remove(topByProfit.Keys.First());
                            }
                        }

                        lock (topByRate)
                        {
                            if (!topByRate.ContainsKey(rate))
                            {
                                topByRate.Add(rate, new RunOutput(success, rate, averageProfit, i, maxI));
                            }

                            if (topByRate.Count > configManager.GetFilterTopRate())
                            {
                                topByRate.Remove(topByRate.Keys.First());
                            }
                        }
                    });

                    if (configManager.GetLogLevel() <= ConfigManager.LogLevel.LOG_RESULT)
                    {
                        logger.LogResult("TopByProfit {0}: \n\n", configManager.GetFilterTopProfit());

                        OutputFormatter.AddClusterInfo(ref topByProfit);
                        foreach (RunOutput t in topByProfit.Values)
                        {
                            if (t.success)
                            {
                                logger.LogResultSuccess("Rate {0:0.00}, avgProfit {1:0.00}, id {2}, cl {3}: ", t.rate, t.averageProfit, t.metricId, t.cluster);
                            }
                            else
                            {
                                logger.LogResultFail("Rate {0:0.00}, avgProfit {1:0.00}, id {2}, cl {3}: ", t.rate, t.averageProfit, t.metricId, t.cluster);
                            }

                            MetricFactory.PrintMetricList(logger, t.metricId);
                            logger.LogResult("\n ---------------- \n");
                        }

                        logger.LogResult("TopByRate {0}: \n\n", configManager.GetFilterTopRate());

                        OutputFormatter.AddClusterInfo(ref topByRate);
                        foreach (RunOutput t in topByRate.Values)
                        {
                            if (t.success)
                            {
                                logger.LogResultSuccess("Rate {0:0.00}, avgProfit {1:0.00}, id {2}, cl {3}: ", t.rate, t.averageProfit, t.metricId, t.cluster);
                            }
                            else
                            {
                                logger.LogResultFail("Rate {0:0.00}, avgProfit {1:0.00}, id {2}, cl {3}: ", t.rate, t.averageProfit, t.metricId, t.cluster);
                            }

                            MetricFactory.PrintMetricList(logger, t.metricId);
                            logger.LogResult("\n ---------------- \n");
                        }

                        logger.LogResult("SuccessRuns {0}: \n\n", successRuns.Count);

                        OutputFormatter.AddClusterInfo(ref successRuns);
                        foreach (RunOutput t in successRuns.Values)
                        {
                            if (t.success)
                            {
                                logger.LogResultSuccess("Rate {0:0.00}, avgProfit {1:0.00}, id {2}, cl {3}: ", t.rate, t.averageProfit, t.metricId, t.cluster);
                            }
                            else
                            {
                                logger.LogResultFail("Rate {0:0.00}, avgProfit {1:0.00}, id {2}, cl {3}:", t.rate, t.averageProfit, t.metricId, t.cluster);
                            }

                            MetricFactory.PrintMetricList(logger, t.metricId);
                            logger.LogResult("\n ---------------- \n");
                        }
                        if (configManager.GetLogLevel() > ConfigManager.LogLevel.LOG_RESULT)
                        {
                            OutputFormatter.PrintClusterInfo(logger, successRuns);
                        }
                    }
                }

                stopWatch.Stop();
                TimeSpan ts        = stopWatch.Elapsed;
                string elapsedTime = string.Format("{0:00}:{1:00}.{2:00}", ts.Minutes, ts.Seconds, ts.Milliseconds / 10);
                Console.WriteLine("\nRunTime " + elapsedTime);
                Console.ReadLine();

                return(0);
            });

            app.Execute(args);
        }
Ejemplo n.º 7
0
        public void AddDatabase <T, Statements>(DatabaseWorkerPool <T, Statements> pool, string name)
            where T : MySqlConnection <Statements>
            where Statements : unmanaged, Enum
        {
            bool updatesEnabledForThis = DBUpdater <T, Statements> .IsEnabled(_updateFlags);

            _open.Enqueue(() =>
            {
                var dbString = sConfigMgr.GetStringDefault(name + "DatabaseInfo", "");
                if (dbString.Length == 0)
                {
                    FEL_LOG_ERROR(_logger, "Database {0} not specified in configuration file!", name);
                    return(false);
                }

                var asyncThreads = (byte)sConfigMgr.GetIntDefault(name + "Database.WorkerThreads", 1);
                if (asyncThreads < 1 || asyncThreads > 32)
                {
                    FEL_LOG_ERROR(_logger, "{0} database: invalid number of worker threads specified. Please pick a value between 1 and 32.", name);
                    return(false);
                }

                var synchThreads = (byte)sConfigMgr.GetIntDefault(name + "Database.SynchThreads", 1);

                pool.SetConnectionInfo(dbString, asyncThreads, synchThreads);

                var error = pool.Open();
                if (error != 0)
                {
                    // Database does not exist
                    if (error == (int)ER_BAD_DB_ERROR && updatesEnabledForThis && _autoSetup)
                    {
                        // Try to create the database and connect again if auto setup is enabled
                        if (DBUpdater <T, Statements> .Create(pool) && (pool.Open() == 0))
                        {
                            error = 0;
                        }
                    }

                    // If the error wasn't handled quit
                    if (error != 0)
                    {
                        FEL_LOG_ERROR("sql.driver", "Database {0} NOT opened. There were errors opening the MySQL connections. Check your SQLDriverLogFile ", name);
                        return(false);
                    }
                }
                // Add the close operation
                _close.Push(() =>
                {
                    pool.Close();
                });
                return(true);
            });

            if (updatesEnabledForThis)
            {
                _populate.Enqueue(() =>
                {
                    if (!DBUpdater <T, Statements> .Populate(pool))
                    {
                        FEL_LOG_ERROR(_logger, "Could not populate the {0} database, see log for details.", name);
                        return(false);
                    }
                    return(true);
                });

                _update.Enqueue(() =>
                {
                    if (!DBUpdater <T, Statements> .Update(pool))
                    {
                        FEL_LOG_ERROR(_logger, "Could not update the {0} database, see log for details.", name);
                        return(false);
                    }
                    return(true);
                });
            }

            _prepare.Enqueue(() =>
            {
                if (!pool.PrepareStatements())
                {
                    FEL_LOG_ERROR(_logger, "Could not prepare statements of the {0} database, see log for details.", name);
                    return(false);
                }
                return(true);
            });
        }
Ejemplo n.º 8
0
        private void OnLoginCommandExecute()
        {
            if (!String.IsNullOrWhiteSpace(Account) &&
                !String.IsNullOrWhiteSpace(Password) &&
                !String.IsNullOrWhiteSpace(Server))
            {
                UserProfileService.Server = Server;
                Task.Factory.StartNew(() =>
                {
                    using (var dc = new CRMContext())
                    {
                        if (!dc.Database.Exists() && Account.ToLower() != SYSDBA)
                        {
                            ErrorMessage = String.Format("Ошибка подключения к базе данных: на сервере \"{0}\" база данных CRM не найдена!", Server);
                            Stage        = Enums.LoginStage.Error;
                            return;
                        }
                        else if (Account.ToLower() == SYSDBA && Server.ToLower() != LOCALHOST && Server != LOCALHOST_IP)
                        {
                            Stage        = LoginStage.Error;
                            ErrorMessage = "Запуск приложения от имени пользователя SYSDBA разрешено только с ПК-сервера базы данных!";
                            return;
                        }
                        else if (Account.ToLower() == SYSDBA && (Server.ToLower() == LOCALHOST || Server == LOCALHOST_IP))
                        {
                            if (Password != "qwerty~123")
                            {
                                ErrorMessage = "Указан неверный пароль системного пользоваетеля";
                                Stage        = Enums.LoginStage.Error;
                            }

                            var updater = new DBUpdater(BeautySmileCRM.Properties.Settings.Default.ServiceConnectionString, "CRM", "SERVICE", Resources.Packs.ResourceManager);
                            if (updater.IsNewVersionFound)
                            {
                                try
                                {
                                    Stage           = LoginStage.Updating;
                                    UpdatingMessage = "Выполняется обновление БД...";
                                    Thread.Sleep(2000);

                                    updater.InstallUpdates();
                                    UpdatingMessage = String.Format("База данных успешно обновлена до версии {0}", updater.NewVersion);
                                    using (var outfile = new StreamWriter(String.Format("update_{0}.log", DateTime.Now.Date.ToString("ddMMyyyHHmmss"))))
                                    {
                                        outfile.Write(updater.Log.ToString());
                                    }
                                    Thread.Sleep(4000);
                                }
                                catch (Exception ex)
                                {
                                    Stage        = LoginStage.Error;
                                    ErrorMessage = "Во время обновления произошла ошибка. Подробнее см. лог-файл обновления в корневой папке приложения.";
                                    using (var outfile = new StreamWriter(String.Format("update_{0}.log", DateTime.Now.Date.ToString("ddMMyyyHHmmss"))))
                                    {
                                        outfile.WriteLine(updater.Log.ToString());
                                        outfile.WriteLine(ex.Message);
                                    }
                                    return;
                                }
                            }
                            ;
                        }
                        try
                        {
                            var dbVersionRow = dc.DBVersions
                                               .OrderByDescending(x => x.Major)
                                               .ThenByDescending(x => x.Minor)
                                               .ThenByDescending(x => x.Build)
                                               .ThenByDescending(x => x.Revision)
                                               .FirstOrDefault();

                            if (dbVersionRow == null)
                            {
                                Stage        = LoginStage.Error;
                                ErrorMessage = "База данных не иницализирована. Обратитесь к администратору для инициализации БД.";
                                return;
                            }

                            var dbVersion = new Version(dbVersionRow.Major, dbVersionRow.Minor, dbVersionRow.Build, dbVersionRow.Revision);
                            if (dbVersion != ApplicationService.AppVersion)
                            {
                                Stage        = LoginStage.Error;
                                ErrorMessage = String.Format("Не совпадают версии БД ({0}) и приложения ({1})", dbVersion.ToString(), ApplicationService.AppVersion.ToString());
                                return;
                            }

                            Stage = Enums.LoginStage.Authorization;
                            var encriptedPassword = Password.ToMD5Hash();
                            var user = dc.Users
                                       .Where(x => x.Login == Account && x.Password == encriptedPassword)
                                       .Include(x => x.Privileges)
                                       .SingleOrDefault();
                            if (user != null)
                            {
                                user.Password = "******".PadLeft(user.Password.Length, '*');

                                if (user.ExpirationDate.HasValue && user.ExpirationDate < DateTime.Now)
                                {
                                    ErrorMessage = String.Format("Учетная запись заблокирована с {0:d}", user.ExpirationDate);
                                    Stage        = Enums.LoginStage.Error;
                                }
                                else if (!user.Privileges.Any(x => x.ID == (int)Enums.Privilege.Login))
                                {
                                    ErrorMessage = "Пользователь не имеет достаточно прав для запуска приложения";
                                    Stage        = Enums.LoginStage.Error;
                                }
                                else
                                {
                                    CurrentUser = user;
                                    Stage       = Enums.LoginStage.Authorized;
                                    NavigationService.Navigate("DashboardView", null, this);
                                    UserProfileService.SetLogins(user.Login);
                                    UserProfileService.SetServers(Server);
                                };
                            }
                            else
                            {
                                ErrorMessage = "Пользователь с указанным логином и паролем не найден";
                                Stage        = Enums.LoginStage.Error;
                            }
                        }
                        catch (Exception e)
                        {
                            ErrorMessage = String.Format("Ошибка операции: {0}", e.Message);
                            Stage        = Enums.LoginStage.Error;
                        }
                    };
                });
            }
            else
            {
                ErrorMessage = "Не заполнен логин или пароль";
                Stage        = Enums.LoginStage.Error;
            };
        }
Ejemplo n.º 9
0
        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            var ok = true;

            //var m = new System.Threading.Mutex(true, "YourNameHere", out ok);//Проверяем не запущена ли ещё одна копия программы
            if (!ok)            //Если запущена, то выдаём ошибку и закрываем программу.
            {
                MessageBox.Show("Другая копия программы уже запущена.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            if (AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData != null)
            {
                args = AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData;
            }
            //MessageBox.Show(Environment.Version.Build.ToString());
            if (Settings.Default.FirstRun)                   //Проверяем установлен ли флаг 1-ого запуска программы в Settings-файле
            {
                var wiz = new Wizard(args);                  //Создаём форму Мастера настройки
                if (wiz.ShowDialog() == DialogResult.Cancel) //Открываем диалог работы с мастером и ждём его завершения
                {
                    return;                                  //Если диалог завершился отменой, выходим из программы
                }
                wiz.Dispose();                               //Освобождаем ресурсы диалога, т.к. он нам больше не нужен
            }
            var s = new SplashScreen("Resources/gws_landing_hero.png");

            s.Show(false, true);
            try
            {
                if (args.Length >= 1)
                {
                    if (args[0] == "active")
                    {
                        context     = new GamesEntities(Settings.Default.DefaultConStr);                    //Создаём новый контекст базы данных, используя подключение по умолчанию из файла настроек
                        CurrentBase = Settings.Default.DefaultConStr;
                    }
                    else
                    {
                        context     = new GamesEntities(args[0]);
                        CurrentBase = args[0];
                    }
                }
                else
                {
                    context     = new GamesEntities(Settings.Default.DefaultConStr);                //Создаём новый контекст базы данных, используя подключение по умолчанию из файла настроек
                    CurrentBase = Settings.Default.DefaultConStr;
                }
                //Database.SetInitializer(new MigrateDatabaseToLatestVersion<GamesEntities, Migrations.Configuration>());
                if (Settings.Default.NewBase)                        //Если стоит флаг новой базы, то
                {
                    if (File.Exists(Settings.Default.DefaultConStr)) //Проверяем существует ли файл с указанным именем.
                    {
                        try
                        {
                            File.Delete(Settings.Default.DefaultConStr);                            //Пробуем удалить файл
                        }
                        catch
                        {
                            MessageBox.Show("Не удаётся перезаписать файл! Программа перезапустится, чтобы вы могли заного выбрать файл с играми.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            //Если удалить не удаётся, выводим сообщение об ошибке
                            Settings.Default.FirstRun = true;  //Устанавливаем флаг первого запуска, чтобы пользователь мог повторно создать базу.
                            Settings.Default.Save();           //Сохраняем файл настроек
                            Application.Restart();             //Перезапускаем программу
                            return;                            //Выходим из текущего экземпляра программы
                        }
                    }
                    context.Database.Create();                    //Создаём базу данных. Данный метод создаст файл базы данных в указанном месте.
                    context.Database.ExecuteSqlCommand(string.Format("INSERT INTO GLDBVersion (ID_V, Version) VALUES (1,{0});", Settings.Default.DatabaseVersion));
                    Settings.Default.NewBase = false;
                    Settings.Default.Save();
                }
                context.Database.Connection.Open();                //Открываем соединение с базой
            }
            catch (Exception ex1)
            {            //Если соединение с базой по умолчанию не удалось установить, то выводим следующий диалог
                var DR = MessageBox.Show(string.Format("Не удаётся подключиться к базе по умолчанию ({0}). {1} Попытаться создать новую базу?\nИли нажмите \"Нет\" чтобы открыть другой файл базы данных.", Settings.Default.DefaultConStr, ex1.Message), "Ошибка открытия", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);
                //Предлагаем пользователию либо создать файл базы данны, либо открыть другую базу, или вообще выйти из программы
                switch (DR)                                          //Перебираем результат диалога
                {
                case DialogResult.Yes:                               //Если пользователь нажал Да
                    if (File.Exists(Settings.Default.DefaultConStr)) //Проверяем существует ли файл с указанным именем.
                    {
                        try
                        {
                            File.Delete(Settings.Default.DefaultConStr);                                    //Пробуем удалить файл
                        }
                        catch
                        {
                            MessageBox.Show("Не удаётся перезаписать файл! Программа перезапустится, чтобы вы могли заного выбрать файл с играми.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            //Если удалить не удаётся, выводим сообщение об ошибке
                            Settings.Default.FirstRun = true;          //Устанавливаем флаг первого запуска, чтобы пользователь мог повторно создать базу.
                            Settings.Default.Save();                   //Сохраняем файл настроек
                            Application.Restart();                     //Перезапускаем программу
                            return;                                    //Выходим из текущего экземпляра программы
                        }
                    }
                    context.Database.Create();                            //Создаём базу данных
                    context.Database.ExecuteSqlCommand(string.Format("INSERT INTO GLDBVersion (ID_V, Version) VALUES (1,{0});", Settings.Default.DatabaseVersion));
                    break;

                case DialogResult.No:                        //Если пользователь нажал Нет
                    var dial = new OpenFileDialog
                    {
                        Title    = "Выберите файл базы данных",
                        FileName = "MyGames.gdb",
                        Filter   = "База игр (*.gdb)|*.gdb"
                    };                                              //Создаём диалог открытия файла
                    if (dial.ShowDialog() == DialogResult.OK)       //Показываем диалог и проверяем результат
                    {
                        context = new GamesEntities(dial.FileName); //Создаём контекст базы данных с выбранным файлом
                        try
                        {
                            context.Database.Connection.Open();                                    //Пробуем установить соединение
                            CurrentBase = dial.FileName;
                            if (MessageBox.Show("Вы хотите, чтобы эта база стала базой по умолчанию?", "База по умолчанию", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                            {
                                Settings.Default.DefaultConStr = dial.FileName;
                                Settings.Default.Save();
                            }
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(string.Format("Произошла ошибка. Свяжитесь с автором.\n{0}", ex.Message)); //Если соединение установить не удалось, показываем ошибку.
                            return;                                                                                    //Выходим из программы
                        }
                    }
                    else
                    {
                        return;                                //Если пользователь отказался выбирать базу, то выходим из программы
                    }
                    break;

                case DialogResult.Cancel:              //Если пользователь отказался создавать или открывать базу
                    return;                            //то выходим из программы
                }
            }
            try
            {
                if (!DBUpdater.checkDBVersion(context))
                {
                    return;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(String.Format("{0}{1}", ex.Message, ex.InnerException != null ? "\n" + ex.InnerException.Message : null),
                                "Ошибка",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
                return;
            }
            s.Close(new TimeSpan(0, 0, 0, 0, 500));
            Application.Run(new GamesForm());            //Запускаем главную форму
            //GC.KeepAlive(m);//Нужно для проверки уже запущенной копии
        }
Ejemplo n.º 10
0
        public Load()
        {
            InitializeComponent();
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                /*try
                 * {*/
                SecondBase = new GamesEntities(openFileDialog1.FileName);
                SecondBase.Database.Connection.Open();
                if (!DBUpdater.checkDBVersion(SecondBase))
                {
                    return;
                }
                List <string> MyGamesNames = new List <string>();
                foreach (var g in Program.context.Games)
                {
                    MyGamesNames.Add(g.GetFullName().ToUpper());
                }
                foreach (var g in SecondBase.Games)
                {
                    if (!MyGamesNames.Contains(g.GetFullName().ToUpper()))
                    {
                        GamesToAdd.Add(g);
                    }
                }
                GamesToAdd = GamesToAdd.OrderBy(g => g.Name).ToList();
                TreeNode TN, TN1;
                foreach (var g in GamesToAdd)
                {
                    if (g.Name == "Rebellion")
                    {
                        g.Name.ToString();
                    }
                    if (g.OriginalGame != null)
                    {
                        if (g.OriginalGame.OriginalGame != null)
                        {
                            TN = TreeNodeFinderRecursiv(win7StyleTreeView1.Nodes, g.OriginalGame.OriginalGame);
                            if (TN == null)
                            {
                                TN     = win7StyleTreeView1.Nodes.Add(g.OriginalGame.OriginalGame.Name);
                                TN.Tag = g.OriginalGame.OriginalGame;
                                if (Program.context.Games.FirstOrDefault(g1 => g1.Name == g.OriginalGame.OriginalGame.Name) != null)
                                {
                                    TN.Checked = true;
                                }
                            }
                            TN1 = TreeNodeFinderRecursiv(TN.Nodes, g.OriginalGame);
                            if (TN1 == null)
                            {
                                TN1     = TN.Nodes.Add(g.OriginalGame.Name);
                                TN1.Tag = g.OriginalGame;
                                if (Program.context.Games.FirstOrDefault(g1 => g1.Name == g.OriginalGame.Name) != null)
                                {
                                    TN1.Checked = true;
                                }
                            }
                            TN = TN1;
                        }
                        else
                        {
                            TN = TreeNodeFinderRecursiv(win7StyleTreeView1.Nodes, g.OriginalGame);
                            if (TN == null)
                            {
                                TN     = win7StyleTreeView1.Nodes.Add(g.OriginalGame.Name);
                                TN.Tag = g.OriginalGame;
                                if (Program.context.Games.FirstOrDefault(g1 => g1.Name == g.OriginalGame.Name) != null)
                                {
                                    TN.Checked = true;
                                }
                            }
                        }
                        if (TreeNodeFinderRecursiv(TN.Nodes, g) == null)
                        {
                            TN     = TN.Nodes.Add(g.Name);
                            TN.Tag = g;
                        }
                    }
                    else
                    {
                        if (TreeNodeFinderRecursiv(win7StyleTreeView1.Nodes, g) == null)
                        {
                            TN     = win7StyleTreeView1.Nodes.Add(g.Name);
                            TN.Tag = g;
                        }
                    }
                }
                GamesToAdd = new List <Games>();

                /*}
                 * catch(Exception ex)
                 * {
                 *      MessageBox.Show("Не удалось открыть файл.\n"+ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                 * }*/
            }
        }
Ejemplo n.º 11
0
 private void onDbUpdateMessage(object sender, DBUpdater.MessageEventArgs e)
 {
     if (this.InvokeRequired)
     {
         this.Invoke(new DBUpdater.MessageEventHandler(onDbUpdateMessage), new object[] { sender, e });
     }
     else
     {
         string str = "\r\n";
         if (string.IsNullOrEmpty(memoEdit.Text))
             str = "";
         memoEdit.Text += (str + e.Message);
     }
 }
Ejemplo n.º 12
0
 private void onDbUpdateMessage(object sender, DBUpdater.MessageEventArgs e)
 {
     if (this.InvokeRequired)
     {
         this.Invoke(new DBUpdater.MessageEventHandler(onDbUpdateMessage), new object[] { sender, e });
     }
     else
     {
         addTextToMemo(e.Message);
     }
 }
 private void DeleteSelection()
 {
     DBUpdater.DeleteFromSelection(SelectedSessions);
     SessionsCollection = new SessionCollection(SessionsCollection.Where(x => !SelectedSessions.Contains(x)));
 }