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