Files
Otchislator/src/Otchinslator/Components/Pages/FirstApril.razor
Sergey Karmanov d67683aecd
All checks were successful
Build and deploy / Publish image (push) Successful in 5m43s
UI фиксы
2025-04-01 14:38:48 +03:00

112 lines
4.6 KiB
Plaintext
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.
@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-3" 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>