Files
PL_JusticeBot/Justice/Interactions/NotaryInteractions.cs
2023-11-11 18:08:33 +03:00

96 lines
4.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using Discord;
using Discord.Interactions;
using DiscordApp.Database.Tables;
using DiscordApp.Justice.Modals;
using DiscordApp.Types;
using DiscordApp.Utilities;
using Microsoft.AspNetCore.Authorization;
namespace DiscordApp.Justice.Interactions
{
public class NotaryInteractions : InteractionModuleBase<SocketInteractionContext>
{
[ComponentInteraction("NewDocumentCertificate")]
public async Task newCertificatedDocument()
=> await Context.Interaction.RespondWithModalAsync<INotaryModal>("newCertificatedDocument");
[ModalInteraction("newCertificatedDocument")]
public async Task newCertificatedDocumentModal(INotaryModal modal)
{
await DeferAsync(true);
int passportId;
int documentId;
int certificateId;
string thumbnailUrl;
Passport passport;
Random random = new Random();
Utilities.Utilities.IdGenerator(out certificateId);
documentId = Startup.appDbContext.Certificates.OrderBy(t => t.Id).FirstOrDefault().Id;
documentId += 1;
if (!int.TryParse(modal.passportId, out passportId))
{
await FollowupAsync($"Айди паспорта еще старое, попробуй использовать другого бота.", ephemeral: true);
return;
}
else if (Utilities.Utilities.IsPassport(passportId, out passport))
{
await FollowupAsync($"Паспорт не найден в базе данных, попробуй написать правильно", ephemeral: true);
return;
}
Certificate certificate = new()
{
Date = DateOnly.FromDateTime(DateTime.Now),
DocumentId = documentId,
Employee = ((IGuildUser)Context.User).DisplayName,
Id = certificateId,
passport = passport,
Text = modal.documentText,
DocumentType = modal.documentType
};
Reports report = new()
{
Employee = Startup.sp.GetUser(Context.User.Id.ToString()).Result.Name,
type = ReportTypes.editPassport
};
await Startup.appDbContext.Reports.AddAsync(report);
await Startup.appDbContext.Certificates.AddAsync(certificate);
if (!modal.documentText.StartsWith("test"))
await Startup.appDbContext.SaveChangesAsync();
try
{
thumbnailUrl = spworlds.Types.User.CreateUser(passport.Applicant).Result.GetSkinPart(spworlds.Types.SkinPart.face);
}
catch
{
thumbnailUrl = null;
}
var author = new EmbedAuthorBuilder()
.WithName(((IGuildUser)Context.User).DisplayName)
.WithIconUrl(((IGuildUser)Context.User).GetDisplayAvatarUrl());
var field1 = new EmbedFieldBuilder()
.WithName("Данные документа:")
.WithValue($"ID документа: {documentId}\nID паспорта: {passport.Id}\nID сертификата: {certificateId}\n\nАпликант: {passport.Applicant}");
var field2 = new EmbedFieldBuilder()
.WithName("Текст документа:")
.WithValue($"```{modal.documentText}```");
var embed = new EmbedBuilder()
.WithTitle("Заверен новый документ")
.WithAuthor(author)
.WithThumbnailUrl(thumbnailUrl)
.WithFields(field1)
.WithFields(field2)
.WithColor(Color.DarkBlue)
.Build();
var channel = Context.Guild.GetChannel(1172879659193606164) as ITextChannel;
await channel.SendMessageAsync(embed: embed);
await FollowupAsync(embed: embed);
}
}
}