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);
        }
Exemple #6
0
        public void GiftCodeReceived(string type)
        {
            //Use later
            switch (type)
            {
            case "Pong":
                break;

            case "LevelUp":
                break;
            }

            AddGiftCode(GiftCode.GenerateRandom(Manager.GameData));
        }
Exemple #7
0
        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");
            });
        }
Exemple #8
0
    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;
            }
        }
Exemple #10
0
    /// <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);
    }
Exemple #11
0
        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);
        }
Exemple #13
0
    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);
    }