コード例 #1
0
        private async Task SalesNotification(UserContext userContext, Vender vender, VenderSale venderSale)
        {
            var builder = new Discord.EmbedBuilder();

            builder
            .WithTitle($"{vender.Title} 【購入】")
            .WithUrl($"{StaticSettings.SiteBaseUrl}Venders/Details?id={vender.Id}")
            .WithAuthor(
                userContext.CurrentUser.Name,
                userContext.CurrentUser.GetAvaterIconUrl(),
                userContext.CurrentUser.GetMemberPageUrl(StaticSettings.SiteBaseUrl)
                )
            .AddField("金額", $"{venderSale.Amount}{StaticSettings.CurrenryUnit}", false);

            if (!string.IsNullOrEmpty(venderSale.Message))
            {
                builder
                .AddField("メッセージ", venderSale.Message, false);
            }



            var messageTargets = new[] { vender.VetMember };
            await CoreService.SendDirectMessage(messageTargets, string.Empty, builder.Build());
        }
コード例 #2
0
        private async Task DeliveryMessage(UserContext userContext, Vender vender, VenderSale venderSale)
        {
            var builder = new Discord.EmbedBuilder();

            builder
            .WithTitle($"{vender.Title} 【購入】")
            .WithUrl($"{StaticSettings.SiteBaseUrl}Venders/Details?id={vender.Id}")
            .WithAuthor(
                userContext.CurrentUser.Name,
                userContext.CurrentUser.GetAvaterIconUrl(),
                userContext.CurrentUser.GetMemberPageUrl(StaticSettings.SiteBaseUrl)
                )
            .AddField("金額", $"{venderSale.Amount}{StaticSettings.CurrenryUnit}", false);
            //.AddField("メッセージ", venderSale.Message, false);


            if (!string.IsNullOrEmpty(venderSale.Message))
            {
                builder
                .AddField("メッセージ", venderSale.Message, false);
            }

            //if (!string.IsNullOrEmpty(vender.DeliveryMessage))
            //{
            //    builder.WithDescription(vender.DeliveryMessage);
            //}
            //else
            //{
            //    builder.WithDescription("[配信メッセージが未設定です]");
            //}
            string message = null;

            if (!string.IsNullOrEmpty(vender.DeliveryMessage))
            {
                message = $@"販売者からのメッセージです
----------------------------
{vender.DeliveryMessage}";
            }
            else
            {
            }


            var messageTargets = new[] { userContext.CurrentUser };
            await CoreService.SendDirectMessage(messageTargets, message, builder.Build());


            await Task.Yield();
        }
コード例 #3
0
        private async Task WebHookNotification(UserContext userContext, Vender vender, VenderSale venderSale)
        {
            var fields = new List <DiscordService.DiscordEmbed.Field>();


            fields.Add(new DiscordService.DiscordEmbed.Field
            {
                name   = "金額",
                value  = $"{venderSale.Amount}{StaticSettings.CurrenryUnit}",
                inline = false
            });

            if (!string.IsNullOrWhiteSpace(venderSale.Message))
            {
                fields.Add(new DiscordService.DiscordEmbed.Field
                {
                    name   = "メッセージ",
                    value  = venderSale.Message,
                    inline = false
                });
            }

            await DiscordService.SendMessage(DiscordService.Channel.VenderNotification, string.Empty, new DiscordService.DiscordEmbed
            {
                title  = $"{vender.Title} 【購入】",
                url    = $"{StaticSettings.SiteBaseUrl}Venders/Details?id={vender.Id}",
                author = new DiscordService.DiscordEmbed.Author
                {
                    url      = userContext.CurrentUser.GetMemberPageUrl(StaticSettings.SiteBaseUrl),
                    icon_url = userContext.CurrentUser.GetAvaterIconUrl(),
                    name     = userContext.CurrentUser.Name
                },
                fields = fields.ToArray(),
            });
        }
コード例 #4
0
        private async Task <IActionResult> Buy(int id)
        {
            var vender = await DbContext.Venders
                         .Include(c => c.VetMember)
                         .FirstOrDefaultAsync(c => c.Id == id);

            if (vender == null)
            {
                return(NotFound());
            }

            var userContext = CoreService.GetUserContext();

            //var escrowUser = DbContext.VetMembers.FirstOrDefault(c => c.MemberType == MemberType.Escrow);

            if ((userContext.Amount - Amount) < 0)
            {
                IsBuyError   = true;
                ErrorMessage = "残高不足です";
                return(await OnGetAsync(id));
            }


            if (Amount < 0)
            {
                IsBuyError   = true;
                ErrorMessage = "マイナスの値は入力不可です";
                return(await OnGetAsync(id));
            }

            var coinTransaction = new CoinTransaction
            {
                SendeVetMemberId   = userContext.CurrentUser.Id,
                RecivedVetMemberId = vender.VetMemberId,
                Amount             = Amount,
                Text            = $"{vender.Title} にて購入 {Amount}{StaticSettings.CurrenryUnit} {BuyMessage}",
                TransactionType = CoinTransactionType.Vender
            };

            var venderSale = new VenderSale
            {
                Amount      = Amount,
                Message     = BuyMessage,
                VenderId    = vender.Id,
                VetMemberId = userContext.CurrentUser.Id,
            };

            DbContext.VenderSales.Add(venderSale);
            DbContext.CoinTransactions.Add(coinTransaction);

            await DbContext.SaveChangesAsync();

            //if (vender.IsSalesPublicNotification && IsBuyNotification)
            //{
            //    await WebHookNotification(userContext, vender, venderSale);
            //}

            if (vender.IsSalesNotification)
            {
                await SalesNotification(userContext, vender, venderSale);
            }

            if (vender.HasDeliveryMessage)
            {
                await DeliveryMessage(userContext, vender, venderSale);
            }



            return(RedirectToPage("Details", new { id = id }));
        }