Merge pull request 'Certificate download feature/19-runner_certficates' (#38) from feature/19-runner_certficates into dev
continuous-integration/drone/push Build is passing Details

Reviewed-on: #38
This commit is contained in:
Nicolai Ort 2021-04-03 16:51:22 +00:00
commit 53eeb6be3d
2 changed files with 53 additions and 16 deletions

View File

@ -1,17 +1,17 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Lauf für Kaya! - Selfservice</title>
</head>
<body class="dark:bg-gray-900 text-black dark:text-white p-0">
<div id="app"></div>
<script src="./env.js"></script>
<script defer type="module" src="./src/main.js"></script>
</body>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Lauf für Kaya! - Selfservice</title>
</head>
<body class="dark:bg-gray-900 text-black dark:text-white p-0">
<div id="app"></div>
<script src="/env.js"></script>
<script defer type="module" src="/src/main.js"></script>
</body>
</html>

View File

@ -16,6 +16,7 @@
<button
type="button"
class="focus:border-black focus:ring-2 focus:ring-black text-white text-sm py-2.5 px-5 rounded-md bg-blue-500 hover:bg-blue-600 hover:shadow-lg"
@click="get_certificate"
>
<svg
xmlns="http://www.w3.org/2000/svg"
@ -258,6 +259,7 @@ const state = reactive({
group: "",
activetab: "profile",
delete_active: false,
fullobject: {}
})
const toast = useToast();
const props = defineProps({
@ -272,6 +274,7 @@ axios.get(`${config.baseurl}api/runners/me/${accesstoken}`)
state.middlename = data.middlename;
state.lastname = data.lastname;
state.group = data.group;
state.fullobject = data;
}).catch((error) => {
toast.error("An error occured while loading your profile data");
})
@ -298,4 +301,38 @@ function delete_me() {
toast.error("An error occured while deleting your profile data");
});
}
function get_certificate() {
toast("Generation in progress...");
const browserlocale = ((navigator.languages && navigator.languages[0]) || '').substr(0, 2);
let url = `${config.baseurl}documents/certificates?locale=${browserlocale}&download=true&key=${config.documentserver_key}`;
let postdata = Object.assign({}, state.fullobject);
postdata.group = {
name: postdata.group
}
postdata = [postdata]
axios.post(url, postdata, {
responseType: "blob"
})
.then((response) => {
console.log(response)
if (response.status != "200") {
toast.error("An error occured while generateing your certificate!");
} else {
var fileURL = window.URL.createObjectURL(new Blob([response.data], { type: 'application/pdf' }));
var fileLink = document.createElement('a');
fileLink.href = fileURL;
fileLink.setAttribute('download', 'Certificate.pdf');
document.body.appendChild(fileLink);
fileLink.click();
fileLink.remove();
toast("Document generated!");
}
})
.catch((err) => {
console.error(err);
toast.error("An error occured while deleting your profile data");
});
}
</script>