public List <Objects.Coupon> UpdateCouponList(Objects.Coupon Coupon) { if (!CouponList.Contains(Coupon)) { CouponList.Add(Coupon); } return(CouponList); }
public bool Load() { try { MySqlCommand cmd = new MySqlCommand("SELECT id, code, uses, dinarreward FROM coupons", Databases.Game.connection); MySqlDataReader Reader = cmd.ExecuteReader(); if (Reader.HasRows) { while (Reader.Read()) { byte _index = Reader.GetByte("id"); string _code = Reader.GetString("code"); byte _uses = Reader.GetByte("uses"); uint _dinarReward = Reader.GetUInt32("dinarreward"); Objects.Coupon Coupon = new Objects.Coupon(_index, _code, _uses, _dinarReward); UpdateCouponList(Coupon); } } Reader.Close(); if (CouponList.Count > 0) { byte _activeCoupons = 0; foreach (var Coupon in CouponList) { if (Coupon.Uses > 0) { _activeCoupons++; } } Log.Instance.WriteLine("Coupon manager found " + _activeCoupons.ToString() + " useable coupons"); } else { Log.Instance.WriteError("Coupon list is empty"); } return(true); } catch { } return(false); }
protected override void Process(Entities.User u) { if (u.Authorized) { string _inputCode = GetString(0); //let´s check if any coupon matches the input if (Managers.CouponManager.Instance.isValidCouponCode(_inputCode)) { Objects.Coupon Coupon = Managers.CouponManager.Instance.getCoupon(_inputCode); if (Coupon.Uses > 0) { u.Money += Coupon.DinarReward; byte _usesLeft = Coupon.Uses; _usesLeft--; Managers.CouponManager.Instance.UpdateCouponUses(Coupon.Index, _usesLeft); Databases.Game.AsyncQuery("UPDATE coupons SET uses=" + _usesLeft + " WHERE id=" + Coupon.Index + "; UPDATE user_details SET money=" + u.Money + " WHERE id=" + u.ID + ";"); ServerLogger.Instance.Append(String.Concat("Player ", u.Displayname, " used coupon ", _inputCode)); u.Send(new Packets.Coupon(0, u.Money)); } else //already registered :( { u.Send(new Packets.Coupon(-1, 0)); } } else {//throw here invalid code } } else { u.Disconnect(); } }