示例#1
0
 private void LineSr_DataSqlUpdateSucceeded(eUpdateType eut, string sproviderdescription)
 {
     if (eut == eUpdateType.PreMatches)
     {
         FillMatches();
     }
 }
 void DataCopy_DataSqlUpdateSucceeded(eUpdateType eut, string sProviderDescription)
 {
     if (eut == eUpdateType.LiveBet)
     {
         Update();
     }
 }
示例#3
0
        //public string ProviderTag { get; protected set; }

        public UpdatesLn(eUpdateType UpdateType, string sDescription, string sProviderDescription)
        {
            this.Modified            = DateTime.Now;
            this.Description         = sDescription;
            this.ProviderDescription = sProviderDescription;
            //this.ProviderTag = sProviderTag;
        }
 private void DataCopy_DataSqlUpdateSucceeded(eUpdateType eut, string sProviderDescription)
 {
     if (ChangeTracker.CurrentMatch.VisibleBetDomainCount == 0)
     {
         ShowError(TranslationProvider.Translate(MultistringTags.TERMINAL_NO_BETDOMAINS).ToString(), null, true, 3);
         MyRegionManager.NavigatBack(RegionNames.ContentRegion);
     }
 }
示例#5
0
 private void DataCopy_DataSqlUpdateSucceeded(eUpdateType eut, string sProviderDescription)
 {
     if (ChangeTracker.CurrentMatch.VisibleBetDomainCount == 0)
     {
         LineSr.UnsubscribeFromEnent(DataCopy_DataSqlUpdateSucceeded);
         Mediator.SendMessage(true, MsgTag.NavigateBack);
         ShowError(TranslationProvider.Translate(MultistringTags.TERMINAL_NO_BETDOMAINS).ToString(), null, true, 3);
     }
 }
示例#6
0
 private void DataCopy_DataSqlUpdateSucceeded(eUpdateType eut, string sProviderDescription)
 {
     if (!StationRepository.IsLiveMatchEnabled)
     {
         LineSr.UnsubscribeFromEnent(DataCopy_DataSqlUpdateSucceeded);
         disabledLive = true;
         Mediator.SendMessage("", MsgTag.ShowFirstViewAndResetFilters);
     }
     if (eut == eUpdateType.LiveBet)
     {
         Update();
     }
 }
示例#7
0
 public static void ProcessDataSqlUpdateSucceeded(eUpdateType eut, string sProviderDescription)
 {
     if (LineSr.DataSqlUpdateSucceeded != null)
     {
         try
         {
             LineSr.DataSqlUpdateSucceeded(eut, sProviderDescription);
         }
         catch (Exception excp)
         {
             m_logger.Excp(excp, "Event LineSr.ProcessDataSqlUpdateSucceeded(eUpdateType={0}, sProviderDescription='{1}')", eut, sProviderDescription);
         }
     }
 }
示例#8
0
        void DataCopy_DataSqlUpdateSucceeded(eUpdateType eut, string sProviderDescription)
        {
            SyncHashSet <ITipItemVw> shsToRemove = new SyncHashSet <ITipItemVw>();

            var tipitems = new SortableObservableCollection <ITipItemVw>();

            foreach (var ticket1 in TicketHandler.TicketsInBasket.ToSyncList())
            {
                foreach (var tipItemVw in ticket1.TipItems.ToSyncList())
                {
                    tipitems.Add(tipItemVw);
                }
            }

            LineSr.VerifySelectedOdds(tipitems, shsToRemove);

            // remove hidden odds (disabled in web admin) and not caught by LineSr.VerifySelectedOdds()
            foreach (var ticket1 in TicketHandler.TicketsInBasket.ToSyncList())
            {
                foreach (var tipItemVw in ticket1.TipItems.ToSyncList())
                {
                    if (tipItemVw.OddView.Visibility == Visibility.Hidden)
                    {
                        shsToRemove.Add(tipItemVw);
                    }
                }
            }

            if (shsToRemove.Count > 0)
            {
                foreach (ITipItemVw tipItemVw in shsToRemove)
                {
                    ShowError(TranslationProvider.Translate(MultistringTags.TERMINAL_REMOVE_FROM_BASKET_MATCH, tipItemVw.BetDomain.Match.MatchView.Name), null, false, 5);
                    PlaceBetMethod(tipItemVw, true);
                }
            }

            var TicketsInBasket = TicketHandler.TicketsInBasket.ToSyncList();

            foreach (var ticket1 in TicketsInBasket)
            {
                if (ticket1.TipItems.ToSyncList().Count == 0)
                {
                    var ticket = ticket1;
                    Dispatcher.Invoke(() =>
                    {
                        TicketHandler.TicketsInBasket.Remove(ticket);
                    });
                }
            }


            TicketsInBasket = TicketHandler.TicketsInBasket.ToSyncList();
            if (TicketsInBasket.Count() > 0)
            {
                TicketHandler.CopyValues();
            }
            TicketHandler.UpdateTicket();

            if (ChangeTracker.IsBasketOpen && TicketHandler.Count == 0 && !ChangeTracker.IsLandscapeMode)
            {
                Mediator.SendMessage("", MsgTag.ShowFirstViewAndResetFilters);
            }
        }
 /// <summary>
 /// コルーチン一時停止
 /// </summary>
 /// <param name="coroutine">実行するコルーチン</param>
 /// <param name="is_pause">true:一時停止. false:再開</param>
 /// <param name="type">更新タイプ</param>
 /// <returns></returns>
 public IEnumerator Begin(IEnumerator coroutine, bool is_pause, eUpdateType type = eUpdateType.Update)
 {
     return(Begin(coroutine, null));
 }
 /// <summary>
 /// コルーチン停止
 /// </summary>
 /// <param name="routine">停止するコルーチン</param>
 /// <param name="type">更新タイプ</param>
 public void End(IEnumerator routine, eUpdateType type = eUpdateType.Update)
 {
     _consumers[(int)type].End(routine);
 }
 /// <summary>
 /// コルーチン実行
 /// </summary>
 /// <param name="coroutine">実行するコルーチン</param>
 /// <param name="game_object">紐づけるゲームオブジェクト</param>
 /// <param name="type">更新タイプ</param>
 /// <returns></returns>
 public IEnumerator Begin(IEnumerator coroutine, GameObject game_object, eUpdateType type = eUpdateType.Update)
 {
     return(_consumers[(int)type].Begin(coroutine, game_object));
 }
 /// <summary>
 /// コルーチン一時停止
 /// </summary>
 /// <param name="coroutine">実行するコルーチン</param>
 /// <param name="is_pause">true:一時停止. false:再開</param>
 /// <param name="type">更新タイプ</param>
 /// <returns>成否</returns>
 public bool Pause(IEnumerator coroutine, bool is_pause, eUpdateType type = eUpdateType.Update)
 {
     return(_consumers[(int)type].Pause(coroutine, is_pause));
 }
示例#13
0
        /*
         * private static bool DeleteMatches(IDbConnection conn, IDbTransaction transaction)
         * {
         *  LineObjectCollection<MatchLn> locMatches = LineSr.Instance.ObjectsToRemove.GetLineObjectCollection<MatchLn>();
         *
         *  if (locMatches != null && locMatches.Count > 0)
         *  {
         *      IdentityList il = new IdentityList();
         *
         *      foreach (MatchLn mtch in locMatches.Values)
         *      {
         *          il.AddUnique(mtch.MatchId);
         *      }
         *
         *      string sMatchIds = il.FormatIds();
         *
         *      DataCopy.ExecuteScalar(conn, transaction, DELETE_MATCH_ODDS_QUERY, sMatchIds);
         *      DataCopy.ExecuteScalar(conn, transaction, DELETE_MATCH_BETDOMAIN_QUERY, sMatchIds);
         *      DataCopy.ExecuteScalar(conn, transaction, DELETE_MATCH_TO_GROUP_QUERY, sMatchIds);
         *      DataCopy.ExecuteScalar(conn, transaction, DELETE_LIVE_MATCH_INFO_QUERY, sMatchIds);
         *      DataCopy.ExecuteScalar(conn, transaction, DELETE_MATCHES_QUERY, sMatchIds);
         *
         *      return true;
         *  }
         *
         *  return false;
         * }
         */

        public static eFileSyncResult UpdateDatabase(IDbConnection conn, eUpdateType eut, string sProviderDescription, UpdateStatistics us)
        {
            eFileSyncResult fsr = eFileSyncResult.Failed;

            DateTime dtStart      = DateTime.Now;
            string   sErrorString = string.Empty;

            DataCopy dc = null;

            string sUpdateDescription = eut.ToString();

            CheckTime ct = new CheckTime("UpdateAll({0}) Entered", sUpdateDescription);

            DictionaryOfLineObjectCollectionLight dlocToModify = LineSr.Instance.NewOrChangedObjects;
            DictionaryOfLineObjectCollectionLight dlocToDelete = LineSr.Instance.ObjectsToRemove;

            try
            {
                using (IDbTransaction transaction = conn.BeginTransaction())
                {
                    dc = new DataCopy(conn, transaction, sUpdateDescription);

                    try
                    {
                        UpdatesLn updatesLn = new UpdatesLn(eut, string.Format("Saving {0} and Deleting {1} line tables", dlocToModify.Count, dlocToDelete.Count), sProviderDescription);

                        updatesLn.Save(conn, transaction);
                        Debug.Assert(updatesLn.UpdateId > 0);

                        // Insert or Update objects
                        dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <TaggedStringLn>(), TaggedStringLn.TableSpec, updatesLn);

                        dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <TimeTypeLn>(), TimeTypeLn.TableSpec, updatesLn);
                        dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <ScoreTypeLn>(), ScoreTypeLn.TableSpec, updatesLn);
                        dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <BetTypeLn>(), BetTypeLn.TableSpec, updatesLn);
                        dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <BetDomainTypeLn>(), BetDomainTypeLn.TableSpec, updatesLn);

                        dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <GroupLn>(), GroupLn.TableSpec, updatesLn);
                        dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <CompetitorLn>(), CompetitorLn.TableSpec, updatesLn);
                        dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <MatchLn>(), MatchLn.TableSpec, updatesLn);
                        dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <CompetitorToOutrightLn>(), CompetitorToOutrightLn.TableSpec, updatesLn);
                        dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <LiveMatchInfoLn>(), LiveMatchInfoLn.TableSpec, updatesLn);
                        dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <MatchResultLn>(), MatchResultLn.TableSpec, updatesLn);
                        dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <MatchToGroupLn>(), MatchToGroupLn.TableSpec, updatesLn);
                        dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <BetDomainLn>(), BetDomainLn.TableSpec, updatesLn);
                        dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <ResourceRepositoryLn>(), ResourceRepositoryLn.TableSpec, updatesLn);
                        dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <ResourceAssignmentLn>(), ResourceAssignmentLn.TableSpec, updatesLn);
                        dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <CompetitorInfosLn>(), CompetitorInfosLn.TableSpec, updatesLn);
                        dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <MatchInfosLn>(), MatchInfosLn.TableSpec, updatesLn);
                        dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <TournamentInfosLn>(), TournamentInfosLn.TableSpec, updatesLn);
                        dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <OddLn>(), OddLn.TableSpec, updatesLn);
                        //dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection<LiabilityLn>(), LiabilityLn.TableSpec, updatesLn);
                        dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <LanguageLn>(), LanguageLn.TableSpec, updatesLn);
                        dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <MultistringGroupLn>(), MultistringGroupLn.TableSpec, updatesLn);
                        //dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection<TournamentMatchLocksLn>(), TournamentMatchLocksLn.TableSpec, updatesLn);

                        // Delete Objects
                        dc.DeleteObjects(dlocToDelete.GetLineObjectCollection <OddLn>(), OddLn.TableSpec);
                        dc.DeleteObjects(dlocToDelete.GetLineObjectCollection <BetDomainLn>(), BetDomainLn.TableSpec);
                        dc.DeleteObjects(dlocToDelete.GetLineObjectCollection <MatchToGroupLn>(), MatchToGroupLn.TableSpec);
                        dc.DeleteObjects(dlocToDelete.GetLineObjectCollection <LiveMatchInfoLn>(), LiveMatchInfoLn.TableSpec);
                        dc.DeleteObjects(dlocToDelete.GetLineObjectCollection <CompetitorToOutrightLn>(), CompetitorToOutrightLn.TableSpec);
                        dc.DeleteObjects(dlocToDelete.GetLineObjectCollection <MatchLn>(), MatchLn.TableSpec);

                        if (dc.Statistics.IsInsrtedOrUpdatedOrDeleted)
                        {
                            // DK: If You like to test data import then uncomment line bellow:
                            // throw new SystemException("Developer Exception: Always rollback transaction for test purposes");

                            transaction.Commit();
                            fsr = eFileSyncResult.Succeeded;
                            ct.AddEvent("Commited");
                        }
                        else
                        {
                            transaction.Rollback();
                            fsr = eFileSyncResult.Skipped;
                            ct.AddEvent("Rolled Back");
                        }

                        if (us != null)
                        {
                            us.Append(dc.Statistics);
                        }
                    }
                    catch (Exception excp)
                    {
                        transaction.Rollback();
                        m_logger.Excp(excp, "UpdateAllWithSqlBulkCopy General Transaction Exception");
                    }
                    finally
                    {
                        DateTime dtEnd = DateTime.Now;

                        if (fsr != eFileSyncResult.Skipped)
                        {
                            // DK: Let's write to log ONLY Succeeded or Failed file syncrhonization info.

                            string sInfo = @"
{7} UpdateAllWithSqlBulkCopy({0}) {1}

{2}


{3}

Start: {4};  
  End: {5};  
 Time: {6};
";

                            m_logger.InfoFormat(
                                sInfo,                // Format
                                sProviderDescription, // Provider Description
                                fsr,                  // Result
                                sErrorString,         // Errors if any
                                dc.Statistics,        // Statistic
                                dtStart,
                                dtEnd,
                                dtEnd - dtStart,     // Time
                                sUpdateDescription); // LiveBet or PreMatch
                        }
                        else
                        {
                            m_logger.InfoFormat("{0} UpdateAllWithSqlBulkCopy Skipped. Time: {1}", sUpdateDescription, dtEnd - dtStart);
                        }

                        if (fsr == eFileSyncResult.Succeeded)
                        {
                        }

                        ct.AddEvent("UpdateAll({0}) completed", sUpdateDescription);
                        ct.Info(m_logger);
                    }
                }
                //                }
            }
            catch (Exception excp)
            {
                sErrorString += ExcpHelper.FormatException(excp, "UpdateAllWithSqlBulkCopy General Exception");
                m_logger.Error(sErrorString, excp);
            }

            return(fsr);
        }
示例#14
0
        public static eFileSyncResult SyncRoutines(eUpdateType eut, string sProviderDescription, bool bUseDatabase, UpdateStatistics us, DelegateMerge dm)
        {
            Debug.Assert(dm != null);

            CheckTime ct = new CheckTime(true, "SyncRoutines(UseDatabase={0}) entered", bUseDatabase);

            /*
             * if (DalStationSettings.Instance.EnableRunProcessControl)
             * {
             *  string sInfo = SystemControl.GetSystemInfo() + "\r\n" + ProcessControl.Current.ToDetailedString();
             *  m_logger.Info(sInfo);
             *
             #if DEBUG
             *  m_logger.Info(ProcessControl.Current.GetThreadSummary());
             #endif
             *
             *  ct.AddEvent("Control completed");
             * }
             */

            try
            {
                eFileSyncResult fsr = eFileSyncResult.Failed;

                lock (m_oUpdateLocker)
                {
                    ct.AddEvent("Inside of lock");

                    LineSr.Instance.NewOrChangedObjects.UnsetPropertiesChanged();
                    LineSr.Instance.NewOrChangedObjects.Clear();

                    bool bProcessUpdateSucceeded = false;

                    lock (m_oReadLocker)
                    {
                        ct.AddEvent("Cache Update Started");
                        bProcessUpdateSucceeded = dm(null);
                        ct.AddEvent("Cache Update Completed ({0}, {1})", LineSr.Instance.NewOrChangedObjects.Count, LineSr.Instance.ObjectsToRemove.Count);
                    }

                    if (bUseDatabase)
                    {
                        // We use database to store Live Data
                        fsr = DataCopy.UpdateDatabase(ConnectionManager.GetConnection(), eut, sProviderDescription, us);
                        ct.AddEvent("Database Update Completed");

                        if (fsr == eFileSyncResult.Succeeded)
                        {
                            LineSr.Instance.NewOrChangedObjects.NotifyPropertiesChanged();
                            DatabaseCache.Instance.AddNewObjectsAfterCommit();
                            DatabaseCache.Instance.RemoveObjectsAfterCommit();
                            LineSr.Instance.ObjectsToRemove.Clear();

                            ct.AddEvent("Routines Completed (fsr=Succeeded)");
                        }
                        else
                        {
                            ct.AddEvent("Routines Completed (fsr=Skipped or Failed)");
                        }
                    }
                    else
                    {
                        // We DON'T use database to store Live Data
                        fsr = eFileSyncResult.Succeeded;
                        LineSr.Instance.NewOrChangedObjects.NotifyPropertiesChanged();
                        ct.AddEvent("Routines Completed");
                    }

                    if (fsr == eFileSyncResult.Succeeded && bProcessUpdateSucceeded)
                    {
                        ct.AddEvent("ProcessDataSqlUpdateSucceeded() Completed");
                    }
                }

                return(fsr);
            }
            catch (Exception excp)
            {
                LineSr.Instance.ObjectsToRemove.Clear();
                m_logger.Excp(excp, "SyncRoutines(eUpdateType={0}, sProviderDescription='{1}') ERROR", eut, sProviderDescription);

                ct.AddEvent("Exception Completed");
                ct.Error(m_logger);
            }
            finally
            {
                ct.AddEvent("Completed");
                ct.Info(m_logger);
            }

            return(eFileSyncResult.Failed);
        }