All checks were successful
Build and deploy / Publish image (push) Successful in 5m43s
112 lines
4.6 KiB
Plaintext
112 lines
4.6 KiB
Plaintext
@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> |