Example #1
0
        public async Task <ActionResult <PostResult> > PostExteralApplicationPayment(PostRequest postRequest)
        {
            var discordIdUl = ulong.Parse(postRequest.DiscordId);

            var buyMember = await _context.VetMembers.AsQueryable().FirstOrDefaultAsync(c => c.DiscordId == discordIdUl);

            if (buyMember == null)
            {
                return(new PostResult
                {
                    IsSucceed = false,
                    ErrorMessage = "不正なユーザーのリクエストです"
                });
            }

            var lestAmount = CoreService.CalcAmount(buyMember);

            if (lestAmount < postRequest.Amount)
            {
                return(new PostResult
                {
                    IsSucceed = false,
                    ErrorMessage = "残高不足です。"
                });
            }

            var app = await _context.ExteralApplications.AsQueryable()
                      .Include(c => c.VetMember)
                      .FirstOrDefaultAsync(c => c.Id == postRequest.AppId);



            var entity = new ExteralApplicationPayment
            {
                ExteralApplicationId = postRequest.AppId,
                Amount         = postRequest.Amount,
                Description    = postRequest.Description,
                DiscordId      = discordIdUl,
                RefJson        = postRequest.RefJson,
                ExpirationDate = DateTimeOffset.Now.AddMinutes(5)
            };

            _context.ExteralApplicationPayments.Add(entity);
            await _context.SaveChangesAsync();

            //Todo:DMを送信する
            await SendConfirmNotificationAsync(app, buyMember, entity);

            return(new PostResult
            {
                IsSucceed = true
            });
        }
Example #2
0
        private async Task SendConfirmNotificationAsync(ExteralApplication app, VetMember user, ExteralApplicationPayment eap)
        {
            Discord.EmbedBuilder builder = new Discord.EmbedBuilder();

            builder.WithTitle($"{app.Name}:購入確認");
            builder.WithUrl(app.CallbackUrl + $"?id={eap.Id}");
            builder.WithAuthor(app.VetMember.Name, app.VetMember.GetAvaterIconUrl(), app.VetMember.GetMemberPageUrl(StaticSettings.SiteBaseUrl));
            builder.AddField("金額", eap.Amount);
            builder.WithDescription(eap.Description);
            builder.WithFooter("よろしければ、タイトルをクリックして購入処理をつづけてください");

            await CoreService.SendDirectMessage(new[] { user }, string.Empty, builder.Build());
        }