public async Task <GiftCode> ShareCode(User user, GiftCode code) { if (code == null) { return(null); } var u = await UpdateUser(user).ConfigureAwait(true); if (u.NickName == null) { throw new ActionStatusMessageException(ActionStatusMessage.UserMessage.NotExist, $"忍忍{user.GameId}不存在"); } var prevCode = context.GiftCodes.Where(g => g.Code == code.Code).FirstOrDefault(); if (prevCode != null) { return(prevCode); } code.ShareBy = $"{u.Level} {u.NickName}"; code.ShareTime = DateTime.Now; code = await HandleCode(u.User, code).ConfigureAwait(true); context.GiftCodes.Update(code); await context.SaveChangesAsync().ConfigureAwait(true); return(code); }
public async Task <IActionResult> Edit(int id, [Bind("Id,Code,Money,CreatedAt")] GiftCode giftCode) { if (id != giftCode.Id) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(giftCode); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!GiftCodeExists(giftCode.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(giftCode)); }
private void AddGiftCode(GiftCode code, string type = "random") { Manager.Database.DoActionAsync(db => { var key = db.GenerateGiftcode(code.ToJson(), Account.AccountId); Player.SendInfo($"You have received a new GiftCode: {key}\nRedeem it at: {Program.Settings.GetValue("serverDomain")}/GiftCode.html or\n type /giftcode to scan it with your mobile via qr code"); }); }
public async Task <IActionResult> Create([Bind("Id,Code,Money,CreatedAt")] GiftCode giftCode) { if (ModelState.IsValid) { _context.Add(giftCode); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(giftCode)); }
public async Task <GiftCode> HandleCode(User user, GiftCode code) { if (code == null) { return(code); } if (user == null) { return(null); } var gainHistory = context.GainGiftCodeHistory.Where(h => h.UserId == user.Id && h.Code.Code == code.Code).FirstOrDefault(); if (gainHistory != null) { // 当领取过时,不再领取 code.StatusDescription = $"{DateTime.FromFileTime(new DateTime(1970, 1, 1).ToFileTime() + (gainHistory.GainStamp))} 已领取过"; context.GiftCodes.Update(code); return(code); } var r = await http.GetAsync(new Uri($"{host}/player/giftCode?uid={user.GameId}&code={code.Code}")).ConfigureAwait(true); var content = await r.Content.ReadAsStringAsync().ConfigureAwait(true); var c = JsonConvert.DeserializeObject <GiftCodeResult>(content); switch (c.Code) { case "0": case "425": code.StatusDescription = c.Code == "425" ? "已领取过" : code.StatusDescription; code.Valid = true; // 领取成功则记录本次领取 gainHistory = new GainGiftCode() { Code = code, GainStamp = Convert.ToInt64(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds), User = user }; context.GainGiftCodeHistory.Add(gainHistory); break; default: { code.InvalidTime = DateTime.Now; code.StatusDescription = $"[{c.Code}]{c.Message}"; context.GiftCodes.Update(code); break; } } await context.SaveChangesAsync().ConfigureAwait(true); return(code); }
public void GiftCodeReceived(string type) { //Use later switch (type) { case "Pong": break; case "LevelUp": break; } AddGiftCode(GiftCode.GenerateRandom(Manager.GameData)); }
private void AddGiftCode(GiftCode code) { Manager.Database.DoActionAsync(db => { var key = db.GenerateGiftcode(code.ToJson(), Account.AccountId); //var message = new MailMessage(); //message.To.Add(Account.Email); //message.IsBodyHtml = true; //message.Subject = "You received a new GiftCode"; //message.From = new MailAddress(Program.Settings.GetValue<string>("serverEmail", "")); //message.Body = "<center>Your giftcode is: " + code + "</br> Check the items in your giftcode <a href=\"" + Program.Settings.GetValue<string>("serverDomain", "localhost") + "/CheckGiftCode.html\" target=\"_blank\">here</a> or redeem the code <a href=\"" + Program.Settings.GetValue<string>("serverDomain", "localhost") + "/RedeemGiftCode.html\" target=\"_blank\">here</a></center>"; //Program.SendEmail(message); Player.SendInfo($"You have received a new GiftCode: {key}\nRedeem it at: {Program.Settings.GetValue("serverDomain")}/GiftCode.html or\n type /giftcode to scan it with your mobile via qr code"); }); }
void button_Click(object sender, CommandEventArgs e) { CodeSubmitedPanel.Visible = true; GiftCode Code = new GiftCode(Convert.ToInt32(e.CommandArgument)); try { Member User = Member.Current; Int32 Price = GiftCodeExchangeRate.GetPrice(User, Code.Id); if (Price < 0) { throw new MsgException("You are not eligible for this code"); } //Activity check if (!Code.IsActiveAtTheMoment(User)) { throw new MsgException("This card/code is disabled"); } //Check if member is not banned meantime if (User.IsBanned) { Member.Current.Logout(Response); FormsAuthentication.SignOut(); Session.Abandon(); Response.Redirect("~/status.aspx?type=logoutsuspended&id=logoutsus"); } //Balance check if (Price > User.PointsBalance) { throw new MsgException(L1.NOTENOUGHFUNDS); } //Send the request & take the money GiftCodeRequest.Add(User, Code.Id, Price); } catch (MsgException ex) { SuccPanel.Visible = false; ErrorPanel.Visible = true; ErrorMessage.Text = ex.Message; } }
public void GiftCodeReceived(string type) { switch (type) { case "Pong": AddGiftCode(GiftCode.GenerateRandom(Manager.GameData, 500, minFame: 500, minCharSlots: 2, minVaultChests: 2, maxItemStack: 5, maxItemTypes: 3), type); break; case "LevelUp": AddGiftCode(GiftCode.GenerateRandom(Manager.GameData, 300, minFame: 300, minCharSlots: 1, minVaultChests: 1, maxItemStack: 3, maxItemTypes: 2), type); break; default: AddGiftCode(GiftCode.GenerateRandom(Manager.GameData)); break; } }
/// <summary> /// Check before submit request /// </summary> /// <returns></returns> public bool IsActiveAtTheMoment(Member user) { var cards = GiftCard.GetActiveCards(); bool isOK = false; foreach (var card in cards) { var codes = GiftCode.GetActiveCodesForMember(user, card.Id); foreach (var code in codes) { if (code.Key.Id == this.Id) { isOK = true; } } } return(isOK); }
private List <string> ParseContents(string json) { var code = GiftCode.FromJson(json); List <string> ret = new List <string>(); if (code == null) { return(ret); } var added = new List <int>(); if (code.Fame != 0) { ret.Add($"Fame: {code.Fame}"); } if (code.Gold != 0) { ret.Add($"Gold: {code.Gold}"); } if (code.VaultChests != 0) { ret.Add($"Vault Chest{(code.VaultChests > 1 ? "s" : String.Empty)}: {code.VaultChests}"); } if (code.CharSlots != 0) { ret.Add($"Char Slot{(code.CharSlots > 1 ? "s" : String.Empty)}: {code.CharSlots}"); } foreach (var item in code.Gifts) { if (!added.Contains(item)) { ret.Add($"{code.Gifts.Count(_ => _ == item)} {Program.GameData.Items[(ushort)item].ObjectId}"); added.Add(item); } } return(ret); }
private bool ParseContents(Account acc, string json) { try { using (var db = new Database()) { var code = GiftCode.FromJson(json); if (code == null) { return(false); } var cmd = db.CreateQuery(); if (code.Gifts.Count > 0) { List <int> gifts = acc.Gifts; foreach (var i in code.Gifts) { gifts.Add(i); } cmd = db.CreateQuery(); cmd.CommandText = "UPDATE accounts SET gifts=@gifts WHERE uuid=@uuid AND password=SHA1(@password);"; cmd.Parameters.AddWithValue("@gifts", Utils.GetCommaSepString <int>(gifts.ToArray())); cmd.Parameters.AddWithValue("@uuid", Query["guid"]); cmd.Parameters.AddWithValue("@password", Query["password"]); cmd.ExecuteNonQuery(); } if (code.CharSlots > 0) { cmd = db.CreateQuery(); cmd.CommandText = "UPDATE accounts SET maxCharSlot=maxCharSlot + @amount WHERE uuid=@uuid AND password=SHA1(@password);"; cmd.Parameters.AddWithValue("@amount", code.CharSlots); cmd.Parameters.AddWithValue("@uuid", Query["guid"]); cmd.Parameters.AddWithValue("@password", Query["password"]); cmd.ExecuteNonQuery(); } if (code.VaultChests > 0) { for (int j = 0; j < code.VaultChests; j++) { db.CreateChest(acc); } } if (code.Gold > 0) { db.UpdateCredit(acc, code.Gold); } if (code.Fame > 0) { db.UpdateFame(acc, code.Fame); } } } catch (Exception) { return(false); } return(true); }
protected Panel GeneratePanel(GiftCard giftcard) { Panel cardPanel = new Panel(); cardPanel.ClientIDMode = System.Web.UI.ClientIDMode.Static; cardPanel.ID = "cardPanel" + giftcard.Id; cardPanel.Attributes.Add("style", "display:none;"); Image image = new Image(); image.ImageUrl = giftcard.ImageUrl; cardPanel.Controls.Add(image); //Append it Literal lit1 = new Literal(); lit1.Text = "<br/><h3>" + giftcard.Title + "</h3><br/>"; var codes = GiftCode.GetActiveCodesForMember(Member.CurrentInCache, giftcard.Id); if (codes.Count > 0) { //Generate table lit1.Text += "<table class=\"exchangeTable\">"; cardPanel.Controls.Add(lit1); foreach (var code in codes) { Literal lit2 = new Literal(); lit2.Text = "<tr><td>" + U4000.EXCHANGENPFOR.Replace("%n%", "<b>" + code.Value + "</b>") .Replace("%p%", AppSettings.PointsName).Replace("%w%", code.Key.Value) + "</td><td>"; cardPanel.Controls.Add(lit2); Button button = new Button(); button.CssClass = "btn btn-inverse btn-xs"; button.Text = L1.SUBMIT; button.OnClientClick = "hideList(" + giftcard.Id + ");"; button.CommandArgument = code.Key.Id.ToString(); button.Command += button_Click; cardPanel.Controls.Add(button); //Register for AJAX ScriptManager scriptMan = ScriptManager.GetCurrent(this); scriptMan.RegisterAsyncPostBackControl(button); Literal lit3 = new Literal(); lit3.Text = "</td></tr>"; cardPanel.Controls.Add(lit3); } Literal lit4 = new Literal(); lit4.Text = "</table><br /><br /><a href=\"#\" class=\"btn btn-danger\" onclick=\"hidePopupList(" + giftcard.Id + "); return false;\">" + U4000.CANCEL + "</a>"; cardPanel.Controls.Add(lit4); } else { lit1.Text += "<br/><i>" + U4000.THEREARENOCODES + "</i>"; lit1.Text += "<br /><br /><a href=\"#\" class=\"btn btn-danger\" onclick=\"hidePopupList(" + giftcard.Id + "); return false;\">" + U4000.CANCEL + "</a>"; cardPanel.Controls.Add(lit1); } return(cardPanel); }