Compare commits

...

6 Commits

Author SHA1 Message Date
beebd6f31f Hotfix иконки
All checks were successful
Build and deploy / Publish image (push) Successful in 6m53s
2025-04-01 14:58:33 +03:00
d67683aecd UI фиксы
All checks were successful
Build and deploy / Publish image (push) Successful in 5m43s
2025-04-01 14:38:48 +03:00
e519a4d126 Небольшие UI фиксы
All checks were successful
Build and deploy / Publish image (push) Successful in 3m33s
2025-03-30 23:56:34 +03:00
724062e7b3 Установил альтернативную отрисовку по умолчанию для первого апреля
All checks were successful
Build and deploy / Publish image (push) Successful in 5m49s
2025-03-30 23:15:35 +03:00
255c372709 Social Media Preview Fix
All checks were successful
Build and deploy / Publish image (push) Successful in 18m15s
2025-03-17 21:40:38 +03:00
5844bcae1e Добавил посхалку на 1е апреля
All checks were successful
Build and deploy / Publish image (push) Successful in 1m51s
2025-03-10 04:54:10 +03:00
4 changed files with 117 additions and 8 deletions

View File

@@ -3,9 +3,9 @@
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"/>
<base href="/"/> <base href="/"/>
@* TODO: скачать шрифты *@ <meta property="og:image" content="/favicon.png" />
<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap" rel="stylesheet">
<link rel="stylesheet" href="/css/styles.css" asp-append-version="true" /> <link rel="stylesheet" href="/css/styles.css" asp-append-version="true" />

View File

@@ -0,0 +1,112 @@
@page "/fstaprl"
@inject AuthenticationStateProvider AuthenticationStateProvider
@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Components.Authorization
@using NPetrovich
@using Otchinslator.Services
@attribute [Authorize]
@inject IStatementGenerator StatementGenerator
<PageTitle>Заяление отправлено | 1 апреля</PageTitle>
<style>
html, body {
margin: 0;
padding: 0;
width: 100%;
height: 100dvh;
}
</style>
@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);
}
}
<dialog id="denyModal" class="modal modal-bottom sm:modal-middle">
<div class="modal-box">
<h3 class="text-lg font-bold text-center">С 1 апреля!</h3>
<img src="https://risovach.ru/upload/2013/04/mem/moe-lico_15228723_orig_.jpeg" class="h-80 my-2 mx-auto"
alt=""/>
<div class="modal-action justify-center">
<form method="dialog">
<button class="btn btn-primary">Понял, принял</button>
</form>
</div>
</div>
</dialog>
<div class="relative flex flex-col items-center justify-center">
<div class="text-center font-bold text-3xl md:text-5xl w-max italic mb-3">
<br>Заявление на отчисление<p class="text-2xl font-normal">отправлено директору</p>
</div>
<div id="pdfrenderer" class="flex justify-center">
</div>
<div class="join w-96 sm:w-[27rem] mt-4 flex gap-2 justify-center">
<button onclick="denyModal.showModal()" class="btn btn-error rounded-full flex-grow w-30 flex items-center justify-center">
Отозвать
</button>
<a id="downloadPDF" target="_blank" href="/getStatement"
class="btn btn-primary bg-base-200 border-base-200 rounded-full flex-grow-0 w-[3rem] flex items-center justify-center relative">
<div class="absolute inset-0 flex items-center justify-center">
<img class="p-2" src="img/pdf.svg" alt=""/>
</div>
</a>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.10.377/pdf.min.js"></script>
<script>
const pdfrenderer = document.getElementById('pdfrenderer');
const url = '/getStatement';
pdfrenderer.innerHTML = '<canvas id="pdf-canvas" class="w-96 sm:w-[27rem] rounded-2xl justify-center"></canvas>';
pdfjsLib.getDocument(url).promise.then(function (pdf) {
pdf.getPage(1).then(function (page) {
const viewport = page.getViewport({scale: 1});
const canvas = document.getElementById('pdf-canvas');
const context = canvas.getContext('2d');
canvas.width = viewport.width;
canvas.height = viewport.height;
const renderContext = {
canvasContext: context,
viewport: viewport
};
page.render(renderContext);
});
});
</script>

View File

@@ -24,8 +24,6 @@ builder.Services.AddControllersWithViews(options =>
}).AddMicrosoftIdentityUI().AddDataAnnotationsLocalization(); }).AddMicrosoftIdentityUI().AddDataAnnotationsLocalization();
builder.Services.Configure<ForwardedHeadersOptions>(options => builder.Services.Configure<ForwardedHeadersOptions>(options =>
{ {
options.KnownNetworks.Clear();
options.KnownProxies.Clear();
options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto; options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
}); });
@@ -33,7 +31,7 @@ var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
var folder = Path.Join(baseDirectory, "data"); var folder = Path.Join(baseDirectory, "data");
if (!Directory.Exists(folder)) if (!Directory.Exists(folder))
Directory.CreateDirectory(folder); Directory.CreateDirectory(folder);
folder = Path.Join(folder, "database.db"); folder = Path.Join(folder, "database.db");
builder.Services.AddDbContext<DatabaseContext>(options => options.UseSqlite($"Data Source={folder}")); builder.Services.AddDbContext<DatabaseContext>(options => options.UseSqlite($"Data Source={folder}"));
@@ -42,7 +40,6 @@ builder.Services.AddRazorComponents()
.AddInteractiveServerComponents(); .AddInteractiveServerComponents();
builder.Services.AddJSComponents(); builder.Services.AddJSComponents();
builder.Services.AddRazorPages(); //////////////
builder.Services.AddServerSideBlazor(); ////////////// builder.Services.AddServerSideBlazor(); //////////////
builder.Services.AddOptions<GotenbergSharpClientOptions>() builder.Services.AddOptions<GotenbergSharpClientOptions>()
@@ -65,6 +62,6 @@ app.UseAuthorization();
app.UseForwardedHeaders(); app.UseForwardedHeaders();
app.MapRazorComponents<App>(); app.MapRazorComponents<App>();
// .AddInteractiveServerRenderMode(); // .AddInteractiveServerRenderMode();
app.Run(); app.Run();

Binary file not shown.