/// <summary> /// Bonus wirtualnych zetonow za zalogowanie sie /// </summary> /// <param name="user"></param> private void DailyVirtualBonus(UserModel user) { if (user.IsOnline()) { var wallet = user.GetWallet(Enums.CurrencyType.VIRTUAL); using (ISession session = DatabaseSession.Open()) { var transferList = session.QueryOver <WalletModel>(). Where(w => w.ID == wallet.ID). SingleOrDefault(). TransferList; if (!transferList.Any(c => c.Timestamp.Date == DateTime.Now.Date && c.Flag == "LOGIN_BONUS")) { Task.Factory.StartNew(() => { System.Timers.Timer timer = new System.Timers.Timer(2000); timer.Elapsed += (o, e) => { user.Deposit( Enums.CurrencyType.VIRTUAL, 1000.00m, "Bonus wirtualny za zalogowanie się!", "LOGIN_BONUS" ); }; timer.AutoReset = false; timer.Enabled = true; }); } } } }
/// <summary> /// Pobiera reklame lobby /// </summary> public void GetAdsLobby() { using (ISession session = DatabaseSession.Open()) { var advList = session.QueryOver <AdvertisingModel>().List().ToList(); Random r = new Random(); var adv = advList.ElementAt(r.Next(0, advList.Count() - 1)); CurrentClient.GetClientProxy <IPokerClient>().OnGetAdvertising(adv); } }
/// <summary> /// Logowanie użytkownika /// </summary> /// <param name="username"></param> /// <param name="password"></param> public void DoLogin(string username, string password) { Console.WriteLine("Logowanie -> " + username); if (!ServerOpened) { throw new ApplicationException("Serwer został chwilowo zamknięty"); } //Sprawdzamy czy użytkownik jest już zalogowany var _userLogged = (from c in Clients where c.User.Username == username select c).FirstOrDefault(); if (_userLogged != null) { throw new ApplicationException("Użytkownik jest już zalogowany"); } using (var session = DatabaseSession.Open()) { var user = session.QueryOver <UserModel>(). Where(u => u.Username == username).SingleOrDefault(); if (user == null || (user != null && !Helper.CheckPassword(user.Password, password))) { throw new ApplicationException("Złe dane do logowania, popraw dane i spróbuj ponownie."); } //Tworzenie modelu użytkownika ClientModel client = new ClientModel( user ) { Client = CurrentClient, ClientProxy = CurrentClient.GetClientProxy <IPokerClient>() }; //Dodajemy uchwyt client.Client.Disconnected += ClientDisconnected; //Dodawanie do listy zalogowanych klientów Clients.Add(client); //Wysyłanie informacji do użytkownika o poprawnym zalogowaniu client.ClientProxy.OnLoginSuccessfull(CurrentClient.ClientId, (UserModel)user); Console.WriteLine("Aktualnie zalogowanych -> " + Clients.Count()); DailyVirtualBonus(user); } }
public static void Deposit(this UserModel user, Enums.CurrencyType currency, decimal value, string comment = "", string flag = "") { using (var session = DatabaseSession.Open()) { var wallet = session.QueryOver <WalletModel>(). Where(u => u.User.ID == user.ID). Where(u => u.Type == currency). SingleOrDefault(); if (wallet == null) { return; } using (var transaction = session.BeginTransaction()) { TransferModel transfer = new TransferModel() { Wallet = wallet, Amount = value, Timestamp = DateTime.Now.ToUniversalTime(), Type = Enums.TransferType.DEPOSIT, Comment = comment, Flag = flag, Currency = wallet.Type, WalletAmountBefore = wallet.Available }; wallet.Available += value; session.Save(transfer); session.Update(wallet); transaction.Commit(); if (user.IsOnline()) { var client = user.GetClient(); if (transfer.Comment == "") { transfer.Comment = "Wpłata na konto w wysokości " + CurrencyFormat.Get(wallet.Type, transfer.Amount); } client.OnDepositInfo(transfer); } } } }
/// <summary> /// Oddaje kwote dla gracza, w wypadku turniejow jest to depozyt /// </summary> /// <param name="user"></param> /// <param name="currency"></param> /// <param name="value"></param> /// <returns></returns> public static bool GameLeaveTransaction(this UserModel user, Enums.CurrencyType currency, decimal value) { var wallet = user.GetWallet(currency); using (ISession session = DatabaseSession.Open()) { using (var transaction = session.BeginTransaction()) { wallet.Available += value; session.Update(wallet); transaction.Commit(); return(true); } } }
public static List <WalletModel> GetWalletList(this UserModel user) { List <WalletModel> walletList = new List <WalletModel>(); using (ISession session = DatabaseSession.Open()) { walletList = session.QueryOver <WalletModel>(). Where(u => u.User.ID == user.ID).List().ToList(); //Dodajemy automatycznie wirtualną walutę gdy jej nie ma if (walletList != null && walletList.Where(w => w.Type == Enums.CurrencyType.VIRTUAL).Count() == 0) { using (var transaction = session.BeginTransaction()) { WalletModel wallet = new WalletModel() { Type = Enums.CurrencyType.VIRTUAL, User = user, TransferList = new List <TransferModel>() }; walletList.Add(wallet); session.Save(wallet); transaction.Commit(); } } //Modyfikujemy kwoty "InGame" foreach (var wallet in walletList) { var tableList = wallet.User.GetTablePlaying().Where(c => c.Currency == wallet.Type); wallet.InGame = tableList.Sum( c => c.PlayersList.Where( d => d.User.ID == wallet.User.ID ).FirstOrDefault().Stack ); } return(walletList); } }
/// <summary> /// Rejestruje gracza /// </summary> /// <param name="user"></param> /// <returns></returns> public bool DoRegister(UserModel user) { using (ISession session = DatabaseSession.Open()) { var userExists = session.QueryOver <UserModel>(). Where(u => u.Username == user.Username).SingleOrDefault(); if (userExists == null) { using (var transaction = session.BeginTransaction()) { string generatedSalt = "VF2aqaOy4fEt"; string md5pwd = Helper.GetMd5Hash(generatedSalt + user.Password); string newpasswordfield = "md5" + "$" + generatedSalt + "$" + md5pwd; var newUser = new UserModel() { Username = user.Username, Password = newpasswordfield, Email = user.Email, LastLogin = DateTime.Now, DateJoined = DateTime.Now, IsStaff = false, IsActive = true, IsSuperuser = false, Firstname = "", Lastname = "" }; session.Save(newUser); transaction.Commit(); } return(true); } else { throw new ApplicationException("Nazwa użytkownika jest już zajęta."); } } }
public static bool ChangePassword(this UserModel user, string newHash) { using (ISession session = DatabaseSession.Open()) { var userDB = session.QueryOver <UserModel>(). Where(u => u.ID == user.ID).SingleOrDefault(); if (userDB != null) { using (var transaction = session.BeginTransaction()) { userDB.Password = newHash; session.Update(userDB); transaction.Commit(); } } return(true); } }
/// <summary> /// Pobiera liste operacji gracza /// </summary> /// <param name="wallet"></param> /// <returns></returns> public List <TransferModel> GetTransferOperations(WalletModel wallet) { using (ISession session = DatabaseSession.Open()) { var transferList = session.QueryOver <WalletModel>(). Where(w => w.ID == wallet.ID). SingleOrDefault(). TransferList; foreach (var transfer in transferList) { if (transfer.Comment == "") { transfer.Comment = "Wpłata na konto w wysokości " + CurrencyFormat.Get(wallet.Type, transfer.Amount); } } return(transferList.OrderByDescending(d => d.Timestamp).Take(15).ToList()); } }