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 }); }
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()); }