diff --git a/src/Otchinslator/Components/Pages/FirstApril.razor b/src/Otchinslator/Components/Pages/FirstApril.razor new file mode 100644 index 0000000..c301aa1 --- /dev/null +++ b/src/Otchinslator/Components/Pages/FirstApril.razor @@ -0,0 +1,118 @@ +@page "/fstaprl" +@inject AuthenticationStateProvider AuthenticationStateProvider +@using Microsoft.AspNetCore.Authorization +@using Microsoft.AspNetCore.Components.Authorization +@using NPetrovich +@using Otchinslator.Services +@attribute [Authorize] +@inject IStatementGenerator StatementGenerator + +Заяление отправлено | 1 апреля + +@code { + + protected override async Task OnInitializedAsync() + { + var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync(); + var userEmail = authState.User.Identity.Name; + var userFIO = authState.User.Claims.FirstOrDefault(x => x.Type == "name")?.Value; + + var petrovich = new Petrovich() + { + FirstName = userFIO.Split(' ')[0], + LastName = userFIO.Split(' ')[1], + MiddleName = userFIO.Split(' ').Length > 2 ? userFIO.Split(' ')[2] : "", + Gender = Gender.Male + }; + + userFIO = petrovich.InflectFirstNameTo(Case.Genitive) + " " + petrovich.InflectLastNameTo(Case.Genitive) + " " + petrovich.InflectMiddleNameTo(Case.Genitive); + + var userData = new UserData + { + reason = "Прошу отчислить меня по собственному желанию в связи с не желанием продолжать обучение в данном учебном заведении, планирую перевестись в ДГТУ.", + email = userEmail, + phone = "", + fio = userFIO, + kurs = 1, + isFreeEducation = true, + isOchno = true, + speciality = SpecialityType.Bakalavriat, + direction = "" + }; + var statement = await StatementGenerator.GenerateStatementAsync(userData, "frstaprl.docx"); + var pdf = await StatementGenerator.ConvertToPDFAsync(statement); + + await using var fileStream = new FileStream("./PDFCache/" + userEmail.Split('@')[0] + ".pdf", FileMode.Create, FileAccess.Write); + await pdf.CopyToAsync(fileStream); + } + +} + + + + + +
+
+
Заявление на отчисление

отправлено директору

+
+
+ +

Не удалось отобразить заявление

+ +

или откойте в браузере на основе Firefox

+
+
+
+ + + @* Скачать PDF *@ +
+ +
+
+
+
+ + + \ No newline at end of file diff --git a/src/Otchinslator/Program.cs b/src/Otchinslator/Program.cs index cebfd15..f3bb692 100644 --- a/src/Otchinslator/Program.cs +++ b/src/Otchinslator/Program.cs @@ -24,8 +24,6 @@ builder.Services.AddControllersWithViews(options => }).AddMicrosoftIdentityUI().AddDataAnnotationsLocalization(); builder.Services.Configure(options => { - options.KnownNetworks.Clear(); - options.KnownProxies.Clear(); options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto; }); @@ -33,7 +31,7 @@ var baseDirectory = AppDomain.CurrentDomain.BaseDirectory; var folder = Path.Join(baseDirectory, "data"); if (!Directory.Exists(folder)) Directory.CreateDirectory(folder); - + folder = Path.Join(folder, "database.db"); builder.Services.AddDbContext(options => options.UseSqlite($"Data Source={folder}")); @@ -42,7 +40,6 @@ builder.Services.AddRazorComponents() .AddInteractiveServerComponents(); builder.Services.AddJSComponents(); -builder.Services.AddRazorPages(); ////////////// builder.Services.AddServerSideBlazor(); ////////////// builder.Services.AddOptions() @@ -65,6 +62,13 @@ app.UseAuthorization(); app.UseForwardedHeaders(); app.MapRazorComponents(); - // .AddInteractiveServerRenderMode(); +// .AddInteractiveServerRenderMode(); -app.Run(); +// костыль, другие решения не работали +app.Use(async (ctx, next) => +{ + ctx.Request.Scheme = "https"; + await next(); +}); + +app.Run(); \ No newline at end of file diff --git a/src/Otchinslator/Templates/frstaprl.docx b/src/Otchinslator/Templates/frstaprl.docx new file mode 100644 index 0000000..c36f3a9 Binary files /dev/null and b/src/Otchinslator/Templates/frstaprl.docx differ