From e89784800fd6d991a46cb2e2c823c49dde5f082e Mon Sep 17 00:00:00 2001 From: mxmlnwbr <71628027+mxmlnwbr@users.noreply.github.com> Date: Tue, 7 Nov 2023 13:08:50 +0100 Subject: [PATCH 01/45] enhance(app): improve display of application details with modal (#6) Co-authored-by: Roland Schlaefli --- package-lock.json | 24 ++++--- package.json | 2 +- src/components/ApplicationDetailsModal.tsx | 82 ++++++++++++++++++++++ src/components/ProposalApplication.tsx | 69 +++--------------- src/types/app.d.ts | 1 + 5 files changed, 108 insertions(+), 70 deletions(-) create mode 100644 src/components/ApplicationDetailsModal.tsx diff --git a/package-lock.json b/package-lock.json index 43c5b64..8b9f229 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,7 @@ "@trpc/next": "10.37.1", "@trpc/react-query": "10.37.1", "@trpc/server": "10.37.1", - "@uzh-bf/design-system": "2.0.12", + "@uzh-bf/design-system": "2.4.3", "axios": "1.5.1", "cross-fetch": "3.1.5", "date-fns": "2.30.0", @@ -2226,9 +2226,9 @@ } }, "node_modules/@uzh-bf/design-system": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@uzh-bf/design-system/-/design-system-2.0.12.tgz", - "integrity": "sha512-wR0Y/RLEjXdMcidYx+06V7hZl+EwigpEwjl4yRVsoKgUL+kY9jmpJWOx6m1vOj5d0gF7JwFi4DJUp/Ysn5YQ1A==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@uzh-bf/design-system/-/design-system-2.4.3.tgz", + "integrity": "sha512-xNJ5ktGIPfe6aXiB7qdidNl9+RUhmSh3OWlJvSTqrqjinL7NsAK02uA8FpkMO0xdWOAuQAKiXLUjCoWwLRIaFg==", "dependencies": { "@radix-ui/react-checkbox": "1.0.4", "@radix-ui/react-collapsible": "1.0.3", @@ -2244,7 +2244,7 @@ "@radix-ui/react-toast": "1.1.4", "@radix-ui/react-tooltip": "1.0.6", "react-colorful": "5.6.1", - "react-countdown-circle-timer": "3.2.1" + "react-countdown": "2.3.5" }, "engines": { "node": ">=16" @@ -6232,12 +6232,16 @@ "react-dom": ">=16.8.0" } }, - "node_modules/react-countdown-circle-timer": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/react-countdown-circle-timer/-/react-countdown-circle-timer-3.2.1.tgz", - "integrity": "sha512-yBAy/9ILXOiFbLBM+3jS72TW5LeRcH8wkRC9NNqMpUkCXkGjSnaeRbJMsR9lsYF0oVXjSDbJaRbCuVMT+9HnKA==", + "node_modules/react-countdown": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/react-countdown/-/react-countdown-2.3.5.tgz", + "integrity": "sha512-K26ENYEesMfPxhRRtm1r+Pf70SErrvW3g4CArLi/x6MPFjgfDFYePT4UghEj8p2nI0cqVV7/JjDgjyr//U60Og==", + "dependencies": { + "prop-types": "^15.7.2" + }, "peerDependencies": { - "react": ">=16.8.0" + "react": ">= 15", + "react-dom": ">= 15" } }, "node_modules/react-dom": { diff --git a/package.json b/package.json index 863b901..aa75058 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "@trpc/next": "10.37.1", "@trpc/react-query": "10.37.1", "@trpc/server": "10.37.1", - "@uzh-bf/design-system": "2.0.12", + "@uzh-bf/design-system": "2.4.3", "axios": "1.5.1", "cross-fetch": "3.1.5", "date-fns": "2.30.0", diff --git a/src/components/ApplicationDetailsModal.tsx b/src/components/ApplicationDetailsModal.tsx new file mode 100644 index 0000000..90dbd92 --- /dev/null +++ b/src/components/ApplicationDetailsModal.tsx @@ -0,0 +1,82 @@ +import { IconDefinition, faFilePdf } from '@fortawesome/free-regular-svg-icons' +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import { Button, Modal, Prose } from '@uzh-bf/design-system' +import { add, format, parseISO } from 'date-fns' +import { useState } from 'react' +import { ApplicationDetails } from 'src/types/app' + +function ApplicationDetailsModal({ row }: { row: ApplicationDetails }) { + const FileTypeIconMap: Record = { + 'application/pdf': faFilePdf, + } + const [isOpen, setIsOpen] = useState(false) + + return ( + { + setIsOpen(true) + }} + > + More + + } + onClose={() => { + setIsOpen(false) + }} + > +
+
+

Full Name:

+

{row?.fullName}

+

Email:

+

{row?.email}

+

Matriculation Number:

+

{row?.matriculationNumber}

+
+
+

Status:

+

{row?.statusKey}

+

Working Period:

+

+ {format(parseISO(row.plannedStartAt), 'dd.MM.Y')} -{' '} + {format( + add(parseISO(row.plannedStartAt), { + months: 6, + }), + 'dd.MM.Y' + )} +

+ +

Attachments:

+
+ {row?.attachments?.map((attachment: any) => ( + + ))} +
+
+
+
+

Motivation:

+ {row?.motivation} +
+
+ ) +} + +export default ApplicationDetailsModal diff --git a/src/components/ProposalApplication.tsx b/src/components/ProposalApplication.tsx index bf43619..221ba00 100644 --- a/src/components/ProposalApplication.tsx +++ b/src/components/ProposalApplication.tsx @@ -1,13 +1,7 @@ -import { - IconDefinition, - faFilePdf, - faMessage, -} from '@fortawesome/free-regular-svg-icons' -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { H2, Table } from '@uzh-bf/design-system' import { add, format, parseISO } from 'date-fns' -import { ProposalDetails } from 'src/types/app' -import { IterableElement } from 'type-fest' +import { ApplicationDetails, ProposalDetails } from 'src/types/app' +import ApplicationDetailsModal from './ApplicationDetailsModal' import ApplicationForm from './ApplicationForm' interface ProposalApplicationProps { @@ -21,9 +15,6 @@ export default function ProposalApplication({ isStudent, isSupervisor, }: ProposalApplicationProps) { - const FileTypeIconMap: Record = { - 'application/pdf': faFilePdf, - } if (proposalDetails?.typeKey === 'SUPERVISOR') { return (
@@ -40,7 +31,7 @@ export default function ProposalApplication({ {proposalDetails?.applications?.length === 0 && 'No applications for this proposal...'} {proposalDetails?.applications?.length > 0 && ( - > + className={{ root: 'text-xs', tableHeader: 'text-sm', @@ -49,14 +40,14 @@ export default function ProposalApplication({ { label: 'Date', accessor: 'createdAt', + sortable: true, transformer: ({ row }) => - format(parseISO(row.createdAt), 'dd.MM.Y'), + format(parseISO(row.createdAt), 'dd.MM.yyyy'), }, { - label: 'Status', - accessor: 'status', + label: 'Email', + accessor: 'email', sortable: true, - transformer: ({ row }) =>
{row.statusKey}
, }, { label: 'Working Period', @@ -72,50 +63,10 @@ export default function ProposalApplication({ )}`, }, { - label: 'Name', - accessor: 'fullName', - sortable: true, - transformer: ({ row }) => ( - - - {row.fullName} - - ), - }, - { - label: 'Motivation', - accessor: 'motivation', - transformer: ({ row }) => ( -
{row.motivation}
- ), - }, - { - label: 'Attachments', - accessor: 'attachments', + label: 'Details', + accessor: 'details', transformer: ({ row }) => ( -
- {row.attachments?.map((attachment: any) => ( - -
- - {attachment.name} -
-
- ))} -
+ ), }, ]} diff --git a/src/types/app.d.ts b/src/types/app.d.ts index 4bf98ae..7b3132f 100644 --- a/src/types/app.d.ts +++ b/src/types/app.d.ts @@ -40,3 +40,4 @@ type RouterOutput = inferRouterOutputs type ProposalsOutput = RouterOutput['proposals'] type ProposalDetails = IterableElement +type ApplicationDetails = IterableElement From 59a034ba4cd445ce1e6e1352a192527d65d4c933 Mon Sep 17 00:00:00 2001 From: mxmlnwbr <71628027+mxmlnwbr@users.noreply.github.com> Date: Tue, 7 Nov 2023 13:28:29 +0100 Subject: [PATCH 02/45] enhance(app): store provided feedback in session storage (#5) Co-authored-by: Roland Schlaefli --- package-lock.json | 13 +++++++ package.json | 1 + src/components/AcceptProposalForm.tsx | 10 +++--- src/components/DeclineProposalForm.tsx | 14 ++++---- src/components/ProposalMeta.tsx | 2 +- src/components/ProposalStatusForm.tsx | 35 ++++++++++++------- src/components/RejectProposalForm.tsx | 14 ++++---- .../TentativeAcceptProposalForm.tsx | 10 +++--- 8 files changed, 65 insertions(+), 34 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8b9f229..8f96ea3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,7 @@ "@trpc/next": "10.37.1", "@trpc/react-query": "10.37.1", "@trpc/server": "10.37.1", + "@uidotdev/usehooks": "2.4.1", "@uzh-bf/design-system": "2.4.3", "axios": "1.5.1", "cross-fetch": "3.1.5", @@ -2225,6 +2226,18 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@uidotdev/usehooks": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@uidotdev/usehooks/-/usehooks-2.4.1.tgz", + "integrity": "sha512-1I+RwWyS+kdv3Mv0Vmc+p0dPYH0DTRAo04HLyXReYBL9AeseDWUJyi4THuksBJcu9F0Pih69Ak150VDnqbVnXg==", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, "node_modules/@uzh-bf/design-system": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/@uzh-bf/design-system/-/design-system-2.4.3.tgz", diff --git a/package.json b/package.json index aa75058..90f9af6 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "@trpc/next": "10.37.1", "@trpc/react-query": "10.37.1", "@trpc/server": "10.37.1", + "@uidotdev/usehooks": "2.4.1", "@uzh-bf/design-system": "2.4.3", "axios": "1.5.1", "cross-fetch": "3.1.5", diff --git a/src/components/AcceptProposalForm.tsx b/src/components/AcceptProposalForm.tsx index dccbd3c..1ccdb60 100644 --- a/src/components/AcceptProposalForm.tsx +++ b/src/components/AcceptProposalForm.tsx @@ -12,12 +12,14 @@ interface AcceptProposalFormProps { proposalName: string proposalId: string supervisorEmail: string + setProvidedFeedback: (value: string) => void } export default function AcceptProposalForm({ proposalName, proposalId, supervisorEmail, + setProvidedFeedback, }: AcceptProposalFormProps) { const SignupSchema = Yup.object().shape({ comment: Yup.string().required('Required'), @@ -36,9 +38,9 @@ export default function AcceptProposalForm({ }} validationSchema={SignupSchema} onSubmit={async (values, { resetForm }) => { - await submitFeedback.mutateAsync(values) - + setProvidedFeedback('ACCEPT') resetForm() + await submitFeedback.mutateAsync(values) toast.success('Proposal accepted successfully!') }} > @@ -49,7 +51,7 @@ export default function AcceptProposalForm({ assigned to you for supervision. You will work directly with the student to finalize the proposal and get the thesis process started.
-
+
-
+
Your message will be sent to the student alongside your acceptance notification.
diff --git a/src/components/DeclineProposalForm.tsx b/src/components/DeclineProposalForm.tsx index f9264ba..18dbcd8 100644 --- a/src/components/DeclineProposalForm.tsx +++ b/src/components/DeclineProposalForm.tsx @@ -13,12 +13,14 @@ interface DeclineProposalFormProps { proposalName: string proposalId: string supervisorEmail: string + setProvidedFeedback: (value: string) => void } export default function DeclineProposalForm({ proposalName, proposalId, supervisorEmail, + setProvidedFeedback, }: DeclineProposalFormProps) { const SignupSchema = Yup.object().shape({ reason: Yup.string().required('Required'), @@ -31,7 +33,7 @@ export default function DeclineProposalForm({ { - await submitFeedback.mutateAsync(values) - resetForm() + setProvidedFeedback('DECLINE') + await submitFeedback.mutateAsync(values) toast.success('Proposal declined successfully!') }} > @@ -50,7 +52,7 @@ export default function DeclineProposalForm({ Declining this proposal because of a mismatch of interests or a high workload on your side will keep it available for other supervisors.
-
+
-
+
Why do you decline this proposal specifically? Your comment will not be shown to the student.
diff --git a/src/components/ProposalMeta.tsx b/src/components/ProposalMeta.tsx index 6de6bc1..3543b20 100644 --- a/src/components/ProposalMeta.tsx +++ b/src/components/ProposalMeta.tsx @@ -68,7 +68,7 @@ export default function ProposalMeta({ proposalDetails }: ProposalMetaProps) {
{proposalDetails.typeKey === 'STUDENT' && ( -
+
{proposalDetails.attachments.map((attachment: any) => ( (proposalDetails.id, null) if ( - proposalDetails?.typeKey === 'STUDENT' && - proposalDetails?.statusKey === 'MATCHED_TENTATIVE' + (proposalDetails?.typeKey === 'STUDENT' && + proposalDetails?.statusKey === 'MATCHED_TENTATIVE') || + providedFeedback === 'ACCEPT_TENTATIVE' ) { return ( <> -
- - This proposal is tentatively matched with a student. Please accept - or reject the proposal. - -
+ + This proposal is tentatively matched with a student. Please accept or + reject the proposal. +
@@ -44,6 +47,7 @@ export default function ProposalStatusForm({ proposalName={proposalDetails?.title} proposalId={proposalDetails?.id} supervisorEmail={session?.user?.email as string} + setProvidedFeedback={setProvidedFeedback} /> @@ -67,11 +72,13 @@ export default function ProposalStatusForm({ } else if ( (proposalDetails?.typeKey === 'STUDENT' && proposalDetails?.statusKey === 'MATCHED') || - proposalDetails?.receivedFeedbacks?.length > 0 + proposalDetails?.receivedFeedbacks?.length > 0 || + providedFeedback ) { return (
- {proposalDetails?.applications?.[0].statusKey === 'ACCEPTED' + {providedFeedback === 'ACCEPT' || + proposalDetails?.applications?.[0].statusKey === 'ACCEPTED' ? 'You have already accepted this proposal!' : 'You have already provided feedback to this proposal!'}
@@ -102,6 +109,7 @@ export default function ProposalStatusForm({ proposalName={proposalDetails?.title} proposalId={proposalDetails?.id} supervisorEmail={session?.user?.email as string} + setProvidedFeedback={setProvidedFeedback} />
) - } else { - return null } } diff --git a/src/components/RejectProposalForm.tsx b/src/components/RejectProposalForm.tsx index 5a9100f..0065a87 100644 --- a/src/components/RejectProposalForm.tsx +++ b/src/components/RejectProposalForm.tsx @@ -13,12 +13,14 @@ interface RejectProposalFormProps { proposalName: string proposalId: string supervisorEmail: string + setProvidedFeedback: (value: string) => void } export default function RejectProposalForm({ proposalName, proposalId, supervisorEmail, + setProvidedFeedback, }: RejectProposalFormProps) { const SignupSchema = Yup.object().shape({ reason: Yup.string().required('Required'), @@ -31,7 +33,7 @@ export default function RejectProposalForm({ { - await submitFeedback.mutateAsync(values) - resetForm() + setProvidedFeedback('REJECT') + await submitFeedback.mutateAsync(values) toast.success('Proposal rejected successfully!') }} > @@ -51,7 +53,7 @@ export default function RejectProposalForm({ requirements will cause review by the thesis coordinator. The student will need to improve and resubmit the proposal.
-
+
-
+
Why do you recommend this proposal for rejection? Your comment will not be shown to the student.
diff --git a/src/components/TentativeAcceptProposalForm.tsx b/src/components/TentativeAcceptProposalForm.tsx index 100b248..2b45601 100644 --- a/src/components/TentativeAcceptProposalForm.tsx +++ b/src/components/TentativeAcceptProposalForm.tsx @@ -12,12 +12,14 @@ interface TentativeAcceptProposalFormProps { proposalName: string proposalId: string supervisorEmail: string + setProvidedFeedback: (value: string) => void } export default function TentativeAcceptProposalForm({ proposalName, proposalId, supervisorEmail, + setProvidedFeedback, }: TentativeAcceptProposalFormProps) { const SignupSchema = Yup.object().shape({ comment: Yup.string().required('Required'), @@ -36,9 +38,9 @@ export default function TentativeAcceptProposalForm({ }} validationSchema={SignupSchema} onSubmit={async (values, { resetForm }) => { - await submitFeedback.mutateAsync(values) - resetForm() + setProvidedFeedback('ACCEPT_TENTATIVE') + await submitFeedback.mutateAsync(values) toast.success('Proposal tentatively accepted successfully!') }} > @@ -48,7 +50,7 @@ export default function TentativeAcceptProposalForm({ your feedback and is required to improve the proposal before you finally accept the proposal for supervision.
-
+
-
+
Your message will be sent to the student alongside your notification of interest.
From 9f61c1590faadfa65b1b852a78915cfe6024de68 Mon Sep 17 00:00:00 2001 From: mxmlnwbr <71628027+mxmlnwbr@users.noreply.github.com> Date: Thu, 9 Nov 2023 10:46:37 +0100 Subject: [PATCH 03/45] feat(app): Proposal filtering (#7) Co-authored-by: Roland Schlaefli --- src/components/ProposalStatusForm.tsx | 7 +- src/components/StudentProposals.tsx | 64 ++++- src/components/SupervisorProposals.tsx | 7 +- ...useLocalStorage.tsx => useLocalStorage.ts} | 0 src/lib/hooks/useUserRole.ts | 18 ++ src/pages/index.tsx | 83 +++--- src/server/routers/_app.ts | 251 +++++++++++------- src/types/{app.d.ts => app.ts} | 19 +- 8 files changed, 290 insertions(+), 159 deletions(-) rename src/lib/hooks/{useLocalStorage.tsx => useLocalStorage.ts} (100%) create mode 100644 src/lib/hooks/useUserRole.ts rename src/types/{app.d.ts => app.ts} (60%) diff --git a/src/components/ProposalStatusForm.tsx b/src/components/ProposalStatusForm.tsx index eb86f95..26ceeef 100644 --- a/src/components/ProposalStatusForm.tsx +++ b/src/components/ProposalStatusForm.tsx @@ -1,6 +1,6 @@ import { useSessionStorage } from '@uidotdev/usehooks' import { Tabs, UserNotification } from '@uzh-bf/design-system' -import type { Session } from 'next-auth' +import { useSession } from 'next-auth/react' import { ProposalDetails } from 'src/types/app' import AcceptProposalForm from './AcceptProposalForm' // Import AcceptProposalForm and other form components import DeclineProposalForm from './DeclineProposalForm' @@ -8,16 +8,17 @@ import RejectProposalForm from './RejectProposalForm' import TentativeAcceptProposalForm from './TentativeAcceptProposalForm' interface ProposalStatusFormProps { proposalDetails: ProposalDetails - session: Session | null } export default function ProposalStatusForm({ proposalDetails, - session, }: ProposalStatusFormProps) { + const { data: session } = useSession() + const [providedFeedback, setProvidedFeedback] = useSessionStorage< null | string >(proposalDetails.id, null) + if ( (proposalDetails?.typeKey === 'STUDENT' && proposalDetails?.statusKey === 'MATCHED_TENTATIVE') || diff --git a/src/components/StudentProposals.tsx b/src/components/StudentProposals.tsx index f98a8c1..293ee30 100644 --- a/src/components/StudentProposals.tsx +++ b/src/components/StudentProposals.tsx @@ -1,27 +1,72 @@ -import { H2, H3 } from '@uzh-bf/design-system' -import { RefObject } from 'react' +import { H2, H3, Select } from '@uzh-bf/design-system' +import * as R from 'ramda' +import { RefObject, useMemo } from 'react' +import { ProposalDetails, ProposalStatusFilter } from 'src/types/app' import ProposalCard from './ProposalCard' interface StudentProposalsProps { - data: any - groupedStudentProposals: any + data: ProposalDetails[] selectedProposal: string | null setSelectedProposal: (proposalId: string | null) => void - setDisplayMode: (displayMode: string) => void buttonRef: RefObject + filters: { + status: ProposalStatusFilter + } + setFilters: (filters: { status: ProposalStatusFilter }) => void } export default function StudentProposals({ data, - groupedStudentProposals, selectedProposal, setSelectedProposal, - setDisplayMode, buttonRef, + filters, + setFilters, }: StudentProposalsProps) { + const groupedStudentProposals = useMemo(() => { + if (!data) return {} + + return R.groupBy( + (p) => p.topicArea.name, + R.sortBy( + R.prop('title'), + data.filter( + (proposal: ProposalDetails) => proposal.typeKey === 'STUDENT' + ) + ) + ) + }, [data]) + return (
-

Student Proposals

+
+

Student Proposals

+

- {cv.length > 0 + {!formikProps.values.uzhemail.endsWith('uzh.ch') + ? 'Enter your UZH Email before uploading files ⚠️' + : cv.length > 0 ? `Attached File 📄: '${cv[0].name}'` : 'Drag and drop your file 🗃️ here, or click to select the file'}

@@ -212,6 +215,7 @@ export default function ApplicationForm({ )} multiple={false} accept={{ 'application/pdf': ['.pdf'] }} + disabled={!formikProps.values.uzhemail.endsWith('uzh.ch')} > {({ getRootProps, getInputProps }) => (
@@ -221,7 +225,9 @@ export default function ApplicationForm({ >

- {transcript.length > 0 + {!formikProps.values.uzhemail.endsWith('uzh.ch') + ? 'Enter your UZH Email before uploading files ⚠️' + : transcript.length > 0 ? `Attached File 📄: '${transcript[0].name}'` : 'Drag and drop your file 🗃️ here, or click to select the file'}

diff --git a/src/components/ProposalApplication.tsx b/src/components/ProposalApplication.tsx index d3cf638..7d23527 100644 --- a/src/components/ProposalApplication.tsx +++ b/src/components/ProposalApplication.tsx @@ -1,5 +1,6 @@ import { H2, Table } from '@uzh-bf/design-system' import { add, format, parseISO } from 'date-fns' +import { useSession } from 'next-auth/react' import { useState } from 'react' import { trpc } from 'src/lib/trpc' import { ApplicationDetails, ProposalDetails } from 'src/types/app' @@ -26,6 +27,7 @@ export default function ProposalApplication({ const [isConfirmationModalOpen, setIsConfirmationModalOpen] = useState(false) + const { data: session } = useSession() const acceptApplication = trpc.acceptProposalApplication.useMutation() if (proposalDetails?.typeKey === 'SUPERVISOR') { @@ -38,7 +40,10 @@ export default function ProposalApplication({ proposalId={proposalDetails.id} /> )} - {isSupervisor && ( + {isSupervisor && + (session?.user?.email === proposalDetails?.ownedByUserEmail || + session?.user.email === + proposalDetails?.supervisedBy?.[0].supervisorEmail) ? (

Applications

{proposalDetails?.applications?.length === 0 && @@ -106,6 +111,12 @@ export default function ProposalApplication({ /> )}
+ ) : ( + isSupervisor && ( +
+ You are not allowed to see any applications to this proposal. +
+ ) )}
) diff --git a/src/server/routers/_app.ts b/src/server/routers/_app.ts index e32cfee..0cbb224 100644 --- a/src/server/routers/_app.ts +++ b/src/server/routers/_app.ts @@ -55,6 +55,27 @@ async function getSupervisorProposals({ ctx, filters }) { }, } applications = { + where: { + proposal: { + OR: [ + { + typeKey: { + in: ['STUDENT'], + }, + }, + { + ownedByUserEmail: ctx.user?.email, + }, + { + supervisedBy: { + some: { + supervisorEmail: ctx.user?.email, + }, + }, + }, + ], + }, + }, include: { attachments: true, status: true, @@ -83,7 +104,7 @@ async function getSupervisorProposals({ ctx, filters }) { { statusKey: ProposalStatus.OPEN, typeKey: { - in: ['STUDENT'], + in: ['STUDENT', 'SUPERVISOR'], }, }, { ownedByUserEmail: ctx.user?.email }, @@ -108,26 +129,7 @@ async function getSupervisorProposals({ ctx, filters }) { if (filters.status === ProposalStatusFilter.OPEN_PROPOSALS) { where = { ...where, - OR: [ - { - statusKey: ProposalStatus.OPEN, - typeKey: { - in: ['STUDENT'], - }, - }, - { - statusKey: ProposalStatus.OPEN, - ownedByUserEmail: ctx.user?.email, - }, - { - statusKey: ProposalStatus.OPEN, - supervisedBy: { - some: { - supervisorEmail: ctx.user?.email, - }, - }, - }, - ], + statusKey: ProposalStatus.OPEN, NOT: { receivedFeedbacks: { some: { From 2a20616d7abe71f429f1b82849618fbf1db76434 Mon Sep 17 00:00:00 2001 From: mxmlnwbr Date: Tue, 5 Dec 2023 15:32:08 +0100 Subject: [PATCH 24/45] chore(release): 1.0.0-beta.4 --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac34ba0..a421493 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.0.0-beta.4](https://github.com/uzh-bf/thesis-platform/compare/v1.0.0-beta.3...v1.0.0-beta.4) (2023-12-05) + + +### Enhancements + +* **app:** show supervisor proposals for all Supervisors but only show applications for owner/supervisor ([#16](https://github.com/uzh-bf/thesis-platform/issues/16)) ([1ea8187](https://github.com/uzh-bf/thesis-platform/commit/1ea818728d5c23f3c376a9a3b049575fbdfe6a8f)) + ## [1.0.0-beta.3](https://github.com/uzh-bf/thesis-platform/compare/v1.0.0-beta.2...v1.0.0-beta.3) (2023-11-30) diff --git a/package-lock.json b/package-lock.json index d8dc4fb..a74c299 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.3", + "version": "1.0.0-beta.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.3", + "version": "1.0.0-beta.4", "dependencies": { "@azure/identity": "3.3.0", "@azure/storage-blob": "12.15.0", diff --git a/package.json b/package.json index 10b99f2..efc3873 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.3", + "version": "1.0.0-beta.4", "private": true, "scripts": { "prebuild": "npm run prisma:generate", From b29bc5fbaecf7228133b8a1f09ba3686af5d1945 Mon Sep 17 00:00:00 2001 From: mxmlnwbr <71628027+mxmlnwbr@users.noreply.github.com> Date: Thu, 7 Dec 2023 10:45:37 +0100 Subject: [PATCH 25/45] enhance(solutions): new thesisMarket topic areas structure and flow secret added to actionable messages (#17) --- solutions/UZHBFThesisPlatform.zip | Bin 39370 -> 39409 bytes .../UZHBFThesisPlatform/Other/Solution.xml | 2 +- ...-F3E0B1EB-152A-EE11-BDF5-000D3A831DD0.json | 107 ++++------ ...-D12D741B-A027-EE11-9966-000D3A8321BD.json | 198 ++++++++++-------- solutions/UZHBFThesisPlatform_managed.zip | Bin 39367 -> 39409 bytes 5 files changed, 146 insertions(+), 161 deletions(-) diff --git a/solutions/UZHBFThesisPlatform.zip b/solutions/UZHBFThesisPlatform.zip index 4010bdbf3c6e88aac298a67dfd940000d7671c95..510065fd3b2ba2ebca178666b6259db4f1d93bd2 100644 GIT binary patch delta 15459 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 k|6`~rsU|)8uML5WKQ^NOwGl0ow3dMah5V - + UZHBFThesisPlatform diff --git a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalPosting-F3E0B1EB-152A-EE11-BDF5-000D3A831DD0.json b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalPosting-F3E0B1EB-152A-EE11-BDF5-000D3A831DD0.json index 2b795a1..fe0d537 100644 --- a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalPosting-F3E0B1EB-152A-EE11-BDF5-000D3A831DD0.json +++ b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalPosting-F3E0B1EB-152A-EE11-BDF5-000D3A831DD0.json @@ -96,13 +96,6 @@ "schemaName": "uzhbf_thesisplatform_thesis_inbox_env_var" } }, - "Topic Areas List Name (uzhbf_thesisplatform_topic_areas_list_name_env_var)": { - "defaultValue": "Topic Areas", - "type": "String", - "metadata": { - "schemaName": "uzhbf_thesisplatform_topic_areas_list_name_env_var" - } - }, "Supervisors List Name (uzhbf_thesisplatform_supervisors_list_name_env_var)": { "defaultValue": "Thesis Supervisors", "type": "String", @@ -187,7 +180,7 @@ ] } }, - "InitializeTopicAreaDetails": { + "InitializeTopicArea": { "runAfter": { "InitializeSupervisorEmail": [ "Succeeded" @@ -200,15 +193,15 @@ "inputs": { "variables": [ { - "name": "TopicAreaDetails", - "type": "object" + "name": "TopicArea", + "type": "string" } ] } }, "InitializeProposalPdfName": { "runAfter": { - "InitializeTopicAreaDetails": [ + "InitializeTopicArea": [ "Succeeded" ] }, @@ -311,11 +304,11 @@ "server": "default", "database": "default", "table": "[main].[user]", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", - "item/email": "@outputs('GetResponseDetails')?['body/responder']", "item/id": "@guid()", "item/name": "Anonymous", + "item/email": "@outputs('GetResponseDetails')?['body/responder']", "item/role": "SUPERVISOR", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" }, "authentication": "@parameters('$authentication')" @@ -334,21 +327,6 @@ }, "type": "If" }, - "SetTopicAreaDetails": { - "runAfter": { - "GetTopicAreas": [ - "Succeeded" - ] - }, - "metadata": { - "operationMetadataId": "e71bf2e5-143e-4c24-a190-83399d562950" - }, - "type": "SetVariable", - "inputs": { - "name": "TopicAreaDetails", - "value": "@first(body('GetTopicAreas')['value'])" - } - }, "GetSupervisors": { "runAfter": { "SetProposalId": [ @@ -389,31 +367,6 @@ "value": "@{first(body('GetSupervisors')['value'])['Title']}" } }, - "GetTopicAreas": { - "runAfter": { - "SetProposalId": [ - "Succeeded" - ] - }, - "metadata": { - "operationMetadataId": "48306085-4df9-4c51-b4b1-2d6de6dc0395" - }, - "type": "OpenApiConnection", - "inputs": { - "host": { - "connectionName": "shared_sharepointonline", - "operationId": "GetItems", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline" - }, - "parameters": { - "dataset": "@parameters('Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)')", - "table": "@parameters('Topic Areas List Name (uzhbf_thesisplatform_topic_areas_list_name_env_var)')", - "$filter": "Title eq '@{outputs('GetResponseDetails')?['body/r2a41d1ed540f418caa89f10a35cdb069']}'", - "$top": 1 - }, - "authentication": "@parameters('$authentication')" - } - }, "IsProposalPdfAttached": { "actions": { "ParseProposalPDF": { @@ -582,12 +535,12 @@ "server": "default", "database": "default", "table": "[main].[proposalattachment]", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", - "item/href": "@outputs('CreateShareLinkProposalPDF')?['body/link/webUrl']", "item/id": "@{guid()}", "item/name": "Proposal", - "item/proposalId": "@variables('ProposalId')", + "item/href": "@outputs('CreateShareLinkProposalPDF')?['body/link/webUrl']", "item/type": "@outputs('PersistProposalPDF')?['body/MediaType']", + "item/proposalId": "@variables('ProposalId')", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" }, "authentication": "@parameters('$authentication')" @@ -666,11 +619,11 @@ "server": "default", "database": "default", "table": "[main].[user]", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", - "item/email": "@variables('SupervisorEmail')", "item/id": "@guid()", "item/name": "@outputs('GetResponseDetails')?['body/ra234958191ee49a28a4fc68389dd0ce2']", + "item/email": "@variables('SupervisorEmail')", "item/role": "SUPERVISOR", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" }, "authentication": "@parameters('$authentication')" @@ -691,10 +644,7 @@ }, "PersistProposal": { "runAfter": { - "IfSupervisorExists": [ - "Succeeded" - ], - "SetTopicAreaDetails": [ + "SetTopicArea": [ "Succeeded" ] }, @@ -712,18 +662,18 @@ "server": "default", "database": "default", "table": "[main].[proposal]", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", - "item/description": "@outputs('GetResponseDetails')?['body/rc6188bd68e4d4ab19206e5e06dd703be']", "item/id": "@variables('ProposalId')", + "item/title": "@outputs('GetResponseDetails')?['body/r2b3875d21899474a988a886e0d5b3621']", + "item/description": "@outputs('GetResponseDetails')?['body/rc6188bd68e4d4ab19206e5e06dd703be']", "item/language": "@outputs('GetResponseDetails')?['body/rb26c844ff536435a9abf2fae9d962082']", - "item/statusKey": "OPEN", "item/studyLevel": "@outputs('GetResponseDetails')?['body/r93c920c31aaf4b8f8ca5e55bb9a0bf87']", - "item/title": "@outputs('GetResponseDetails')?['body/r2b3875d21899474a988a886e0d5b3621']", - "item/topicAreaSlug": "@variables('TopicAreaDetails')['Slug']", + "item/topicAreaSlug": "@replace(toLower(variables('TopicArea')),' ','_')", "item/typeKey": "SUPERVISOR", + "item/statusKey": "OPEN", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']", - "item/ownedByUserEmail": "@outputs('GetResponseDetails')?['body/responder']", - "item/timeFrame": "@outputs('GetResponseDetails')?['body/r564b7a6cc5bf42ffb900990d26246c80']" + "item/timeFrame": "@outputs('GetResponseDetails')?['body/r564b7a6cc5bf42ffb900990d26246c80']", + "item/ownedByUserEmail": "@outputs('GetResponseDetails')?['body/responder']" }, "authentication": "@parameters('$authentication')" } @@ -750,8 +700,8 @@ "table": "[main].[userproposalsupervision]", "item/id": "@variables('ProposalId')", "item/proposalId": "@variables('ProposalId')", - "item/studyLevel": "@outputs('GetResponseDetails')?['body/r93c920c31aaf4b8f8ca5e55bb9a0bf87']", - "item/supervisorEmail": "@variables('SupervisorEmail')" + "item/supervisorEmail": "@variables('SupervisorEmail')", + "item/studyLevel": "@outputs('GetResponseDetails')?['body/r93c920c31aaf4b8f8ca5e55bb9a0bf87']" }, "authentication": "@parameters('$authentication')" } @@ -787,6 +737,21 @@ }, "authentication": "@parameters('$authentication')" } + }, + "SetTopicArea": { + "runAfter": { + "IfSupervisorExists": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "e71bf2e5-143e-4c24-a190-83399d562950" + }, + "type": "SetVariable", + "inputs": { + "name": "TopicArea", + "value": "@outputs('GetResponseDetails')?['body/r2a41d1ed540f418caa89f10a35cdb069']" + } } }, "runAfter": { diff --git a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalSubmission-D12D741B-A027-EE11-9966-000D3A8321BD.json b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalSubmission-D12D741B-A027-EE11-9966-000D3A8321BD.json index 4b998ad..b563021 100644 --- a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalSubmission-D12D741B-A027-EE11-9966-000D3A8321BD.json +++ b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalSubmission-D12D741B-A027-EE11-9966-000D3A8321BD.json @@ -110,13 +110,6 @@ "schemaName": "uzhbf_thesisplatform_http_trigger_thesis_proposal_feedback_env_var" } }, - "Topic Areas List Name (uzhbf_thesisplatform_topic_areas_list_name_env_var)": { - "defaultValue": "Topic Areas", - "type": "String", - "metadata": { - "schemaName": "uzhbf_thesisplatform_topic_areas_list_name_env_var" - } - }, "Supervisors List Name (uzhbf_thesisplatform_supervisors_list_name_env_var)": { "defaultValue": "Thesis Supervisors", "type": "String", @@ -144,6 +137,13 @@ "metadata": { "schemaName": "uzhbf_thesisplatform_email_failure_env_var" } + }, + "Flow Secret (uzhbf_thesisplatform_flow_secret_env_var)": { + "defaultValue": "abcd", + "type": "String", + "metadata": { + "schemaName": "uzhbf_thesisplatform_flow_secret_env_var" + } } }, "triggers": { @@ -239,7 +239,7 @@ ] } }, - "InitializeTopicAreaDetails": { + "InitializeTopicArea": { "runAfter": { "InitializeWasSpecificRequest": [ "Succeeded" @@ -252,15 +252,15 @@ "inputs": { "variables": [ { - "name": "TopicAreaDetails", - "type": "object" + "name": "TopicArea", + "type": "string" } ] } }, "InitializeProposalPdfName": { "runAfter": { - "InitializeTopicAreaDetails": [ + "InitializeTopicArea": [ "Succeeded" ] }, @@ -381,7 +381,7 @@ "value": false } }, - "TopicAreas": { + "SupervisorList": { "runAfter": { "SetWasSpecificRequest": [ "Succeeded" @@ -399,16 +399,14 @@ }, "parameters": { "dataset": "@parameters('Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)')", - "table": "@parameters('Topic Areas List Name (uzhbf_thesisplatform_topic_areas_list_name_env_var)')", - "$filter": "Title eq '@{outputs('GetResponseDetails')?['body/r975d59f3f5114998b6e30c56c035334b']}'", - "$top": 1 + "table": "@parameters('Supervisors List Name (uzhbf_thesisplatform_supervisors_list_name_env_var)')" }, "authentication": "@parameters('$authentication')" } }, - "SetTopicAreaDetails": { + "SetTopicArea": { "runAfter": { - "TopicAreas": [ + "SupervisorList": [ "Succeeded" ] }, @@ -417,63 +415,15 @@ }, "type": "SetVariable", "inputs": { - "name": "TopicAreaDetails", - "value": "@first(body('TopicAreas')?['value'])" + "name": "TopicArea", + "value": "@outputs('GetResponseDetails')?['body/r975d59f3f5114998b6e30c56c035334b']" } }, - "ForEachAreaSupervisor": { - "foreach": "@variables('TopicAreaDetails')['Supervisors']", - "actions": { - "AreaSupervisorDetails": { - "runAfter": {}, - "metadata": { - "operationMetadataId": "a0f45886-9e62-403b-9c5f-06ceb176d88f" - }, - "type": "OpenApiConnection", - "inputs": { - "host": { - "connectionName": "shared_sharepointonline_1", - "operationId": "GetItem", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline" - }, - "parameters": { - "dataset": "@parameters('Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)')", - "table": "@parameters('Supervisors List Name (uzhbf_thesisplatform_supervisors_list_name_env_var)')", - "id": "@items('ForEachAreaSupervisor')?['ID']" - }, - "authentication": "@parameters('$authentication')" - } - }, - "AppendToMatchingSupervisors": { - "runAfter": { - "AreaSupervisorDetails": [ - "Succeeded" - ] - }, - "metadata": { - "operationMetadataId": "718cf67d-b738-474b-8492-0cdc54dde8fb" - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "MatchingSupervisors", - "value": "@outputs('AreaSupervisorDetails')?['body/Title']" - } - } - }, - "runAfter": { - "SetTopicAreaDetails": [ - "Succeeded" - ] - }, - "metadata": { - "operationMetadataId": "64a45e69-b386-4d4f-b93b-538eea74fc79" - }, - "type": "Foreach" - }, "PersistProposalToDB": { "runAfter": { - "ForEachAreaSupervisor": [ - "Succeeded" + "ForEachSupervisor": [ + "Succeeded", + "TimedOut" ] }, "metadata": { @@ -490,15 +440,15 @@ "server": "default", "database": "default", "table": "[main].[proposal]", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", - "item/description": "@outputs('GetResponseDetails')?['body/r7425856917f245efbd0c4cb2a7f0c434']", "item/id": "@variables('ProposalId')", + "item/title": "@outputs('GetResponseDetails')?['body/r7240915136fb41e8b884a045d08f39ce']", + "item/description": "@outputs('GetResponseDetails')?['body/r7425856917f245efbd0c4cb2a7f0c434']", "item/language": "@outputs('GetResponseDetails')?['body/r8b7f3f4a7502459598d155e9b31eb25e']", - "item/statusKey": "OPEN", "item/studyLevel": "@outputs('GetResponseDetails')?['body/rc797ecd1491b44a0ac091174abbac9f6']", - "item/title": "@outputs('GetResponseDetails')?['body/r7240915136fb41e8b884a045d08f39ce']", - "item/topicAreaSlug": "@variables('TopicAreaDetails')['Slug']", + "item/topicAreaSlug": "@replace(toLower(variables('TopicArea')),' ','_')", "item/typeKey": "STUDENT", + "item/statusKey": "OPEN", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" }, "authentication": "@parameters('$authentication')" @@ -524,15 +474,15 @@ "server": "default", "database": "default", "table": "[main].[proposalapplication]", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", - "item/email": "@outputs('GetResponseDetails')?['body/responder']", - "item/fullName": "@outputs('GetResponseDetails')?['body/r7844031f633e4dd49368b0c116ad148d']", "item/id": "@outputs('PersistProposalToDB')?['body/id']", + "item/statusKey": "OPEN", + "item/email": "@outputs('GetResponseDetails')?['body/responder']", "item/matriculationNumber": "@outputs('GetResponseDetails')?['body/r6c3b387342aa4bd0b5f423aa43662850']", - "item/motivation": "@outputs('GetResponseDetails')?['body/r60d760e8828645cc84d8fde2a6fe3b27']", + "item/fullName": "@outputs('GetResponseDetails')?['body/r7844031f633e4dd49368b0c116ad148d']", "item/plannedStartAt": "@outputs('GetResponseDetails')?['body/r837fec8c113c4851a217e947217c5b7f']", + "item/motivation": "@outputs('GetResponseDetails')?['body/r60d760e8828645cc84d8fde2a6fe3b27']", "item/proposalId": "@outputs('PersistProposalToDB')?['body/id']", - "item/statusKey": "OPEN", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" }, "authentication": "@parameters('$authentication')" @@ -1008,12 +958,12 @@ "server": "default", "database": "default", "table": "[main].[proposalattachment]", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", - "item/href": "@outputs('ShareLinkProposalFile')?['body/link/webUrl']", "item/id": "@{guid()}", "item/name": "Proposal", - "item/proposalId": "@variables('ProposalId')", + "item/href": "@outputs('ShareLinkProposalFile')?['body/link/webUrl']", "item/type": "@outputs('PersistProposalFile')?['body/MediaType']", + "item/proposalId": "@variables('ProposalId')", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" }, "authentication": "@parameters('$authentication')" @@ -1039,12 +989,12 @@ "server": "default", "database": "default", "table": "[main].[applicationattachment]", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", - "item/href": "@outputs('ShareLinkCVPDF')?['body/link/webUrl']", "item/id": "@{guid()}", "item/name": "CV", - "item/proposalApplicationId": "@outputs('PersistApplicationToDB')?['body/id']", + "item/href": "@outputs('ShareLinkCVPDF')?['body/link/webUrl']", "item/type": "@outputs('PersistCVPDF')?['body/MediaType']", + "item/proposalApplicationId": "@outputs('PersistApplicationToDB')?['body/id']", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" }, "authentication": "@parameters('$authentication')" @@ -1070,12 +1020,12 @@ "server": "default", "database": "default", "table": "[main].[applicationattachment]", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", - "item/href": "@outputs('ShareLinkTranscriptPDF')?['body/link/webUrl']", "item/id": "@{guid()}", "item/name": "Transcript", - "item/proposalApplicationId": "@outputs('PersistApplicationToDB')?['body/id']", + "item/href": "@outputs('ShareLinkTranscriptPDF')?['body/link/webUrl']", "item/type": "@outputs('PersistTranscriptPDF')?['body/MediaType']", + "item/proposalApplicationId": "@outputs('PersistApplicationToDB')?['body/id']", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" }, "authentication": "@parameters('$authentication')" @@ -1180,6 +1130,10 @@ { "name": "Content-type", "value": "application/json" + }, + { + "name": "secretkey", + "value": "@{parameters('Flow Secret (uzhbf_thesisplatform_flow_secret_env_var)')}" } ] } @@ -1222,6 +1176,10 @@ { "name": "Content-type", "value": "application/json" + }, + { + "name": "secretkey", + "value": "@{parameters('Flow Secret (uzhbf_thesisplatform_flow_secret_env_var)')}" } ] } @@ -1294,6 +1252,10 @@ { "name": "Content-type", "value": "application/json" + }, + { + "name": "secretkey", + "value": "@{parameters('Flow Secret (uzhbf_thesisplatform_flow_secret_env_var)')}" } ] } @@ -1358,6 +1320,10 @@ { "name": "Content-type", "value": "application/json" + }, + { + "name": "secretkey", + "value": "@{parameters('Flow Secret (uzhbf_thesisplatform_flow_secret_env_var)')}" } ] } @@ -1378,6 +1344,10 @@ { "name": "Content-type", "value": "application/json" + }, + { + "name": "secretkey", + "value": "@{parameters('Flow Secret (uzhbf_thesisplatform_flow_secret_env_var)')}" } ] } @@ -1494,6 +1464,56 @@ }, "authentication": "@parameters('$authentication')" } + }, + "ForEachSupervisor": { + "foreach": "@outputs('SupervisorList')?['body/value']", + "actions": { + "ForEachAreaOfInterest": { + "foreach": "@items('ForEachSupervisor')?['AreasOfInterest']", + "actions": { + "IsSupervisingTopicArea": { + "actions": { + "AppendToMatchingSupervisors": { + "runAfter": {}, + "metadata": { + "operationMetadataId": "c2e44021-c939-4132-a7da-e0d1b23020cd" + }, + "type": "AppendToArrayVariable", + "inputs": { + "name": "MatchingSupervisors", + "value": "@items('ForEachSupervisor')?['Title']" + } + } + }, + "runAfter": {}, + "expression": { + "equals": [ + "@items('ForEachAreaOfinterest')?['Value']", + "@variables('TopicArea')" + ] + }, + "metadata": { + "operationMetadataId": "0b3c57ab-9365-4f2e-88e1-09f66daff6f0" + }, + "type": "If" + } + }, + "runAfter": {}, + "metadata": { + "operationMetadataId": "3cdcdaa5-8261-4fbc-9cc8-80f431b3c204" + }, + "type": "Foreach" + } + }, + "runAfter": { + "SetTopicArea": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "2a8c2544-f8b6-40be-8842-9a8104fc0fc1" + }, + "type": "Foreach" } }, "runAfter": { diff --git a/solutions/UZHBFThesisPlatform_managed.zip b/solutions/UZHBFThesisPlatform_managed.zip index ace6f109658b12a7cea12bd30a4011795d83426d..c94e642d08de885f2dabe0506d74019a965c4319 100644 GIT binary patch delta 15296 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 MGZG-!WB)_`e}!`!D*ylh delta 15397 zcmZv@Wl$bV)Gds=Yj6qfF2UX1-QDHE;lbVA39iAN;1DdhySux?my`3=``%Oc&X1W@ z(`(Jz-BVrFwR`t<1K3al7^0#KI0Oa=7zhkVuf1;_A{He0pJx&Uh2X6mc_3m^|Z4-K0f%o?ck$sB_>+U&z^t|SW?M&A!P
mbQXW`kO*3h)c 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 Date: Thu, 7 Dec 2023 10:46:26 +0100 Subject: [PATCH 26/45] chore(release): 1.0.0-beta.5 --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a421493..36a955f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.0.0-beta.5](https://github.com/uzh-bf/thesis-platform/compare/v1.0.0-beta.4...v1.0.0-beta.5) (2023-12-07) + + +### Enhancements + +* **solutions:** new thesisMarket topic areas structure and flow secret added to actionable messages ([#17](https://github.com/uzh-bf/thesis-platform/issues/17)) ([b29bc5f](https://github.com/uzh-bf/thesis-platform/commit/b29bc5fbaecf7228133b8a1f09ba3686af5d1945)) + ## [1.0.0-beta.4](https://github.com/uzh-bf/thesis-platform/compare/v1.0.0-beta.3...v1.0.0-beta.4) (2023-12-05) diff --git a/package-lock.json b/package-lock.json index a74c299..0c1b9f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.4", + "version": "1.0.0-beta.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.4", + "version": "1.0.0-beta.5", "dependencies": { "@azure/identity": "3.3.0", "@azure/storage-blob": "12.15.0", diff --git a/package.json b/package.json index efc3873..e891753 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.4", + "version": "1.0.0-beta.5", "private": true, "scripts": { "prebuild": "npm run prisma:generate", From 7ea246709564405385acdb3a9e0ed81d59ef70af Mon Sep 17 00:00:00 2001 From: mxmlnwbr <71628027+mxmlnwbr@users.noreply.github.com> Date: Thu, 7 Dec 2023 14:01:31 +0100 Subject: [PATCH 27/45] fix(solutions): AreasOfInterestV2 instead of col AreasOfInterest (#19) --- solutions/UZHBFThesisPlatform.zip | Bin 39409 -> 39410 bytes ...-D12D741B-A027-EE11-9966-000D3A8321BD.json | 2 +- solutions/UZHBFThesisPlatform_managed.zip | Bin 39409 -> 39410 bytes 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/solutions/UZHBFThesisPlatform.zip b/solutions/UZHBFThesisPlatform.zip index 510065fd3b2ba2ebca178666b6259db4f1d93bd2..e87d0a683aad6a800e4b2e8c814223c30df63ef8 100644 GIT binary patch delta 1782 zcmZvcc|6o<9LMKCsL3^vGrd|Owv3G#LJhJFV_Z3kMC6**I<_1QV>FJ@G=|?eONg9d zm}n((BoQr(%D5sOjtxnPWM_V}M_#+Xf4-mJ^L>Aw&-Z!$cosRZ_Z%3))(S3!guo!8 zkP4rKYJ{vXoL2#L;dy@L>=bE&gJMVwg9HUq#X}JkVFq&&2p;3i9T=yOcS9hfoFJU4 z3OU^0DSNE;t!Cm&%)Fb6hH}=N*2OAB1NuT)9(Ajlb{oOv{jDQWRuw&K5U<|XX89<; z!3kz3wLMTFW+h!B&oc{BkAxOEz^|qU&J>y$S3%o?Ei5dU>l&tE8Cg^QqI&wuN>`vu z4)1gW(B7|+gnPt#f_%Wus#C~g)#im9ayIGv&mNc8Q7l5BSpZ##)h@2!@SD#xGjQDK zkbB=`jioC7lfwYx^V2fK7Uv?F!S1Hf?In}Z%B~MCNQt!C)Iz7!;nzF1<*khbYfO$z ztV;hZjSpeI$+hm{?hhJU&6|&Np-Lw)5k~zeAz>Y86I+y09O@?@YgA;iORpSDt}`(` zVYu90@KjD)Q+)P(l4qnRYYKXLWIjrcDye>Dgx0B2CtvHhgIQogX#~&e-8(U7|Ex<5?^Q>y>XL z?U%53UDmHEY)<8C*th9&agI+I0~&|yLkk}ae_gR3CQRR5pS!_c50S7KR?nU zu3~xVUe}$OYu8z^Og4JPd3?46uV;Uvq~;B-iy&;la1yzNF4 zJ?wy5%@j0mgjkT6vtwUzWmbvw!<#Lbu(&o&q_Oug7hE@U@5>R&Kz!YczBu#2Oz*8p zTG*ayZ8`nc7`A&ARo2?d$$B|XF3A0-ivCtqhD#+uo~^XF<#x50Bw0pX>_X`iw^248 zlWTJ?I$^Hb<$!!I+_89y<2(1#>pU^8W5z&M%g8a~M^dZxxYh3qZ;wmg&yGp2E_Isf zPZBLnif~`NjYXAjkhKz-$tpIC`Y@lMog*T47~7ViBsN9l1{9Be`G#HC70cAW!x~Jq&0M| zKI&thN^YQ8U}WpTLE{|ABV!@b@CS-#c)F*;h)(@|R!7E0_IfIMSUTHPcjx2wm;fNU zAR}5e?DZBX7{(Yh|ZV-qUI3zumLLdT4-d%U zf&QC78VLlsBt4*)wGEs*2T+8;qQT__z)|3@4F2@ufBjWtKA0NwuYH`Q2-Bs2_Dht5 z{9VEGSn7MwUh%fz&l<34gi0VKEdoqNq$|SERGt+L(5M)`6-+OT)V{($W+Tr^++dsLAI-D^XS`H}yt>Q-hj>9zn}SAx as!TeVVUoqmpbIkSmcVe9qzIb9Xa58U*Zh?L delta 1752 zcmZXUc{G%J7{|v9gEWI7bmlh6K_Zoz- zNeua_cj#NGGD+%mo3Gpb+XQ;;QY&_TVx%G(h0LfE&~oc7f^I4{VryZ^dbuevJ%x6c z3}i*NTD&1sjyjQX9?%(UZkh$c&!MFPV9vC`4>NWoj_Pd{@x6EU3@khGa^$w3D!hNN zsjvKf>OC9vm6}-%kJ8NcU@OUPRKS4GI=OL%qPWGtw=^LVl~DLBc`uxHZizt)@$-17 zQBt3Lz`6I9R%-t`R$?WbvT?R5UqiGC?|cpR6CN{?;5$1EPt83XicyLD6vTLt5EQ>? z-ez*HSGRzyddj!8!+Vj^F6J(5CZ~^G#W93LJGj4eVz>(i9(eGr)0m|GD)=aq{DrXa zMm)vdrLI`6>g_4Gw^RxZ8xtvD$)kJBoEj~=ns#Fz-xJxpyQq-FASUhQ-E=l+t)A9P zyd>?{*v0}YnCx-HH&XlCO5D- zN0m+v$A$$E*X@M;7Io=y_IY%2=1x`}fd|2}nG!S1m>(+_+30pDGHlB1E#Gx}z`WZc zZ6Hi=HLl=w8WWQ`w43QH;;l8U#qKZ2ydG^< zP|NsJCph+@$&2S+C+#$}tc#XRUZkOZ`#NpzuT`?Rm2}Smfw$OL7Vm2(Pi@OCY-^4> z-VnGSs;cr-GZ7=;&bx!;MM~>$T+M?HUK0DzUxEePc-mj0Bk}`9s%6TGb=+V)3ZZg{ zHTgk$P?+^0{mzMUm+;CW>YFYmI&veMuZ;cRgKEu7>+O zvbs1LS$d>IGbp%Ad6I-( zV;-w#xIZDN3)<$V4Hnd;2o6^t!O-WfR;}WkF{}J);b%=LMK-5)eV`6Kr4DJ93R6Y$ zQ^f8ecz53Sy=qB)oiJ^UnThPDZnw~ele)2<3h;bg(Rh-Qv9^TQ%HF1N?k|GveK|g^ zpHS4-hTeX~nCUk1&93dP<78%f&KVW7)rUf=p+n8^^RBi&BB|5j?BYDj(jdA(zyJbG%XYO^g*Y&hGjQ%Tg`7$$g ze)i2+;rd0c&zpN(2NuVbyjQqo90CGyZ%FhVM}P~$iS3gHOB2s%f! zks~?cVib`hTBGAQ!Z4NtCw?GNGvfn10D`~?73X@Qb#rmXTy?;`7{l?wt1 z`Wb;Z5P^D{I#5fz0G!J{48kj0HUS@5P!kIdJOHnUv0yCFl5WP&PSrxHdHoGoW*mVg zkidg6(s_0Y*l+=WhH^!KwrzyzzHOR;hSrclJ1;{IBtNh$r6|yfiBjEf!wl=1IQydw zp95`FN3-E{3U)sgnT3X8V_2>la3@B6->zWUJF#H$Zk7Q!9G`PW^DZlGku@CUKx#rf z2#&>D?zix{TS({=3;O@F=_P`&G0hzO2b5aT+)WlZ%1RACkU9?3(UQS2FJ_~m3CWy0 PlFfkeY#}(7%4Yuq!pZ=4 diff --git a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalSubmission-D12D741B-A027-EE11-9966-000D3A8321BD.json b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalSubmission-D12D741B-A027-EE11-9966-000D3A8321BD.json index b563021..1d3fa88 100644 --- a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalSubmission-D12D741B-A027-EE11-9966-000D3A8321BD.json +++ b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalSubmission-D12D741B-A027-EE11-9966-000D3A8321BD.json @@ -1469,7 +1469,7 @@ "foreach": "@outputs('SupervisorList')?['body/value']", "actions": { "ForEachAreaOfInterest": { - "foreach": "@items('ForEachSupervisor')?['AreasOfInterest']", + "foreach": "@items('ForEachSupervisor')?['AreasOfInterestV2']", "actions": { "IsSupervisingTopicArea": { "actions": { diff --git a/solutions/UZHBFThesisPlatform_managed.zip b/solutions/UZHBFThesisPlatform_managed.zip index c94e642d08de885f2dabe0506d74019a965c4319..8942a3d76b4e1738146a3ea7a0067f54a04c9550 100644 GIT binary patch delta 1782 zcmZvcc|6o<9LHx2LQSrToaxmPv1M$`5NeQZ7~{%OBqC>P9b1luF>;NjG5p3^Lgb7Y zCah#~BoQr(${0jC92+GilAZa@9(nEl{`r1>&-eX#KHum0<9Wvtde0Jq+gZbe5fCAW z7^KlRxfU)b0^?OcLu7$pSvy79Fi?z$qYI71U8;%*3Jj1_`a zQzb?QIOmPmztKv0fnIQT)l|uy*S^SrH={087A9;}*Xh8!zQ1)O#=5$14dUJZ%Df2a zKRik6PUs9)j9bZ)EcD8SG$Ej+jgTAj;o-(>o;;9e?wkp#@JE zAMzNOsreUH~Cn$py>di#hc z%VUf8ciRaon6V{kGjpwKrCRjH4qSLq;}08#XY8?Zt}&W!Npw1u{?ad+ z{7b~!9-Eidwx^0T9Xj+lSf|I-AcUyaPbuth(J{i7R_lsCs`tKl zD{vQDORb^Of6{6%lG^5ckC?<-L`b~Wsj^tM8@DzR3s5?lCW4S&bc(z^vIvi_>bSwC zL>y4Bn}!y0gNjq~ckC;x$t{<8aI*~^k=UVyF!4F&itVNCeZeISB{e)BNVFKv@!6WH zjp?h^kvC|MV|p+WNee@cV%znt!JP{W%Atgc0THi3j|`D zGfmZ_4VR6|zu2}C)`^>54wq{KxIb`k2!xd!GzJGB2*0RIC@40f0jN0tr8u-5<^Kd| zBOYdP2uMM1du*jZG!x?l!ju#x5O?B}1j0O_RUkx@C<2k0+#nEma*jaEq*naZqEv$d zI7&6)rvr&pQ?NduqWCokjla*rN5{}vUhh{P6Sj$2iUycD20&AW6$paY!vpep zV8AAjOaMU+K_BR+Zv*Gf2b6?_V!`D_z)9e*3H|i^fBg(1AIymR*FHg464E1q_DiIL z{9VEGSQ&VdU-Gu#&l0(v+4dj*Qm2&ETb}Q~S7}BD;iEa$;Eb0Th^xyyaD*2Wvngl{ aVB}E14AWd*21SrTu>wYOr9@FwKKmy{Y5q9? delta 1752 zcmZXUc{G%J7{|v9gP6e(I&+)kAd$+_Sd%@=#MmlZmWHg|5ZAcFV64$tUNqK}ee5~9 zwj2?2MO1PlaLgFqpC z5W!3F4G3`_7^?zuJge;5C<*U?fntnbLktvR7&kO1e$!kQLa>-C^U2M-k;fsB@y1(b zQW)}8pRl*mfX>kkLYg~^SyWR3MxPTa`d*p8hl`= zxxeCl+C5v1)!I2t&$6tJ5NoL(RN$cR2DxdLqO{Gxw>Be^lu`I>1#g^AUa4U#@$*EO zadN*x;Mw<9*6RN_RbeHab8vR5UqiKv?tBgL7a2E}C4m3T8Y=3{F_G zXg59Er&mZ;JL%Wf>9a)X5cd!M>>^;jg1np;?X;5L5-1HOTV#z?~Ur)TT)DB5R<>>-*ho-tC`VH zsGPpwM%bQr#7*< zN0d*D#DxbEH|$0Hm-OiI4*7I))^2t^fd|2}l^Q$3SQxJm-RyBKHfql5tJrgYz`WZk zV<5J#yC+sz~ZHkvoU!KcIc{*OABMX8=Yh=qyblqV*ied7I zb%h~%aJbDOgRaR6*NCcOl~<;7Mb8UQ@YmUg;-0Dvph7%x&J7DPS&zG9PQ9hBG|(d^ zOQJ^U9&w5V&orP;|B4TiyKLq2A627942g=1QY8W2=f&|xomZw_d3CGv)gqIbD({|T z{+Yob2i4t`4!vBF*Xs4qT=E`#X5uii9KV@%++9}LurN88*9QGA=As13{(6Rzd@c7m z#v|uZK3G@y6O^NxlEb+XiEEw2rY1`PhOy5B+@P3gsXDZ&f%#1cr#COVSdtKYXw@_rHO=+E_a z`-GytHuCW=!OXOiZ+7o=A0sm}a!;$Gtv?h|jT~!7o_DwR6G>f`XSSAYf~yIQbK7H- za8fIxWs!f_Zs#^sYDai2V3;?4$|2t8R`={T8;t8Wzio?2e+%!MeQu{DVDwAOmCMYu zg}FE5MH?5mK5u>JIVlO) zRR=3qY9d%uQj@?cnU->JcL5D)(Z|@^Y=01E2;@5C=PwYjP7jh|Gv!rZ`j%KnZCnsY z@XrXukq9)^1l%qi_Hd<}J4Rfqp(%g?W zd=Ioy6T^lxDA@f}WHuU#jb*v&z@1o)eY=un@5X`2d)bEIaC|PAEqkoACDw411F4A# zAUK|2wco<$9%126Ea?Bwrk@1DCNvB1A5iMV^0rvu7%Mg6K Date: Thu, 7 Dec 2023 14:05:39 +0100 Subject: [PATCH 28/45] chore(release): 1.0.0-beta.6 --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 36a955f..3fa520a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.0.0-beta.6](https://github.com/uzh-bf/thesis-platform/compare/v1.0.0-beta.5...v1.0.0-beta.6) (2023-12-07) + + +### Bug Fixes + +* **solutions:** AreasOfInterestV2 instead of col AreasOfInterest ([#19](https://github.com/uzh-bf/thesis-platform/issues/19)) ([7ea2467](https://github.com/uzh-bf/thesis-platform/commit/7ea246709564405385acdb3a9e0ed81d59ef70af)) + ## [1.0.0-beta.5](https://github.com/uzh-bf/thesis-platform/compare/v1.0.0-beta.4...v1.0.0-beta.5) (2023-12-07) diff --git a/package-lock.json b/package-lock.json index 0c1b9f2..2f80efb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.5", + "version": "1.0.0-beta.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.5", + "version": "1.0.0-beta.6", "dependencies": { "@azure/identity": "3.3.0", "@azure/storage-blob": "12.15.0", diff --git a/package.json b/package.json index e891753..88d5eee 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.5", + "version": "1.0.0-beta.6", "private": true, "scripts": { "prebuild": "npm run prisma:generate", From 3f16447d32921fff9f31d888f86319db054cf50a Mon Sep 17 00:00:00 2001 From: mxmlnwbr <71628027+mxmlnwbr@users.noreply.github.com> Date: Wed, 13 Dec 2023 11:02:57 +0100 Subject: [PATCH 29/45] fix(app): supervisedBy unassigned resolved (#18) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Roland Schläfli --- src/components/ProposalMeta.tsx | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/components/ProposalMeta.tsx b/src/components/ProposalMeta.tsx index 3543b20..ee6d4c7 100644 --- a/src/components/ProposalMeta.tsx +++ b/src/components/ProposalMeta.tsx @@ -1,7 +1,9 @@ import { IconDefinition, faFilePdf } from '@fortawesome/free-regular-svg-icons' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { format, parseISO } from 'date-fns' +import { useSession } from 'next-auth/react' import Link from 'next/link' +import { useMemo } from 'react' import { ProposalDetails } from 'src/types/app' interface ProposalMetaProps { @@ -12,7 +14,20 @@ const FileTypeIconMap: Record = { 'application/pdf': faFilePdf, } export default function ProposalMeta({ proposalDetails }: ProposalMetaProps) { + const { data: session } = useSession() + + const supervisedBy = useMemo(() => { + if (session?.user?.email && proposalDetails?.supervisedBy?.length > 0) { + return proposalDetails.supervisedBy[0].supervisor.name + } else if (proposalDetails?.supervisedBy.name) { + return proposalDetails.supervisedBy.name + } else { + return 'Unassigned' + } + }, [session, proposalDetails]) + if (!proposalDetails) return null + return (

{proposalDetails.title}

@@ -51,7 +66,7 @@ export default function ProposalMeta({ proposalDetails }: ProposalMetaProps) { )}
Supervised By
-
{proposalDetails.supervisedBy?.name ?? 'Unassigned'}
+
{supervisedBy}
{proposalDetails.typeKey === 'STUDENT' && ( @@ -68,7 +83,7 @@ export default function ProposalMeta({ proposalDetails }: ProposalMetaProps) {
{proposalDetails.typeKey === 'STUDENT' && ( -
+
{proposalDetails.attachments.map((attachment: any) => ( Date: Wed, 13 Dec 2023 11:09:39 +0100 Subject: [PATCH 30/45] chore(release): 1.0.0-beta.7 --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fa520a..9b6037a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.0.0-beta.7](https://github.com/uzh-bf/thesis-platform/compare/v1.0.0-beta.6...v1.0.0-beta.7) (2023-12-13) + + +### Bug Fixes + +* **app:** supervisedBy unassigned resolved ([#18](https://github.com/uzh-bf/thesis-platform/issues/18)) ([3f16447](https://github.com/uzh-bf/thesis-platform/commit/3f16447d32921fff9f31d888f86319db054cf50a)) + ## [1.0.0-beta.6](https://github.com/uzh-bf/thesis-platform/compare/v1.0.0-beta.5...v1.0.0-beta.6) (2023-12-07) diff --git a/package-lock.json b/package-lock.json index 2f80efb..ff3226b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.6", + "version": "1.0.0-beta.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.6", + "version": "1.0.0-beta.7", "dependencies": { "@azure/identity": "3.3.0", "@azure/storage-blob": "12.15.0", diff --git a/package.json b/package.json index 88d5eee..27fe878 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.6", + "version": "1.0.0-beta.7", "private": true, "scripts": { "prebuild": "npm run prisma:generate", From ee99961454ee7634ce10a6a9a1b94f4b1f09bab2 Mon Sep 17 00:00:00 2001 From: mxmlnwbr <71628027+mxmlnwbr@users.noreply.github.com> Date: Thu, 14 Dec 2023 10:35:08 +0100 Subject: [PATCH 31/45] enhance(prisma): Timestamps added for UserProposalSupervision and UserProposalFeedback (#20) --- .../migration.sql | 2 +- .../migration.sql | 7 ++ prisma/schema.prisma | 8 +- solutions/UZHBFThesisPlatform.zip | Bin 39410 -> 39426 bytes .../UZHBFThesisPlatform/Other/Solution.xml | 2 +- ...-7C987104-6984-EE11-8179-002248DB4B50.json | 38 ++++----- ...-3050E705-262A-EE11-BDF5-000D3A831DD0.json | 26 +++--- ...-4BF9872E-202A-EE11-BDF5-000D3A831DD0.json | 74 ++++++++++-------- ...-F3E0B1EB-152A-EE11-BDF5-000D3A831DD0.json | 2 + solutions/UZHBFThesisPlatform_managed.zip | Bin 39410 -> 39426 bytes 10 files changed, 89 insertions(+), 70 deletions(-) create mode 100644 prisma/migrations/20231214082817_add_timestamps/migration.sql diff --git a/prisma/migrations/20231130091916_remove_timestamps/migration.sql b/prisma/migrations/20231130091916_remove_timestamps/migration.sql index 65e3498..33f7725 100644 --- a/prisma/migrations/20231130091916_remove_timestamps/migration.sql +++ b/prisma/migrations/20231130091916_remove_timestamps/migration.sql @@ -13,4 +13,4 @@ ALTER TABLE `userproposalfeedback` DROP COLUMN `createdAt`, -- AlterTable ALTER TABLE `userproposalsupervision` DROP COLUMN `createdAt`, - DROP COLUMN `updatedAt`; + DROP COLUMN `updatedAt`; \ No newline at end of file diff --git a/prisma/migrations/20231214082817_add_timestamps/migration.sql b/prisma/migrations/20231214082817_add_timestamps/migration.sql new file mode 100644 index 0000000..6a95849 --- /dev/null +++ b/prisma/migrations/20231214082817_add_timestamps/migration.sql @@ -0,0 +1,7 @@ +-- AlterTable +ALTER TABLE `userproposalfeedback` ADD COLUMN `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + ADD COLUMN `updatedAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3); + +-- AlterTable +ALTER TABLE `userproposalsupervision` ADD COLUMN `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + ADD COLUMN `updatedAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index d5d50b8..0f4ac8b 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -187,8 +187,8 @@ model UserProposalSupervision { studentEmail String? studyLevel String? - // createdAt DateTime @default(now()) - // updatedAt DateTime @default(now()) @updatedAt + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt } model UserProposalFeedback { @@ -206,8 +206,8 @@ model UserProposalFeedback { reason String comment String @db.Text - // createdAt DateTime @default(now()) - // updatedAt DateTime @default(now()) @updatedAt + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt @@unique([proposalId, userEmail]) } diff --git a/solutions/UZHBFThesisPlatform.zip b/solutions/UZHBFThesisPlatform.zip index e87d0a683aad6a800e4b2e8c814223c30df63ef8..c743cb7f2f4a6a56e7df6ee76574006df2e2372a 100644 GIT binary patch delta 21161 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 delta 21132 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 - + UZHBFThesisPlatform diff --git a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisApplicationAcceptance-7C987104-6984-EE11-8179-002248DB4B50.json b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisApplicationAcceptance-7C987104-6984-EE11-8179-002248DB4B50.json index ed4ea4e..16432cf 100644 --- a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisApplicationAcceptance-7C987104-6984-EE11-8179-002248DB4B50.json +++ b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisApplicationAcceptance-7C987104-6984-EE11-8179-002248DB4B50.json @@ -128,18 +128,18 @@ "database": "default", "table": "[main].[proposal]", "id": "@triggerBody()?['proposalId']", - "item/createdAt": "@outputs('GetProposalInfo')?['body/createdAt']", + "item/title": "@outputs('GetProposalInfo')?['body/title']", "item/description": "@outputs('GetProposalInfo')?['body/description']", "item/language": "@outputs('GetProposalInfo')?['body/language']", - "item/statusKey": "MATCHED", "item/studyLevel": "@outputs('GetProposalInfo')?['body/studyLevel']", - "item/title": "@outputs('GetProposalInfo')?['body/title']", "item/topicAreaSlug": "@outputs('GetProposalInfo')?['body/topicAreaSlug']", "item/typeKey": "@outputs('GetProposalInfo')?['body/typeKey']", - "item/updatedAt": "@outputs('GetProposalInfo')?['body/updatedAt']", - "item/ownedByStudent": "@outputs('GetProposalInfo')?['body/ownedByStudent']", + "item/statusKey": "MATCHED", + "item/createdAt": "@outputs('GetProposalInfo')?['body/createdAt']", + "item/updatedAt": "@utcNow()", + "item/timeFrame": "@outputs('GetProposalInfo')?['body/timeFrame']", "item/ownedByUserEmail": "@outputs('GetProposalInfo')?['body/ownedByUserEmail']", - "item/timeFrame": "@outputs('GetProposalInfo')?['body/timeFrame']" + "item/ownedByStudent": "@outputs('GetProposalInfo')?['body/ownedByStudent']" }, "authentication": "@parameters('$authentication')" } @@ -191,9 +191,11 @@ "table": "[main].[userproposalsupervision]", "id": "@triggerBody()?['proposalId']", "item/proposalId": "@outputs('GetUserProposalSupervisionInfo')?['body/proposalId']", + "item/createdAt": "@outputs('GetUserProposalSupervisionInfo')?['body/createdAt']", + "item/updatedAt": "@utcNow()", + "item/supervisorEmail": "@outputs('GetUserProposalSupervisionInfo')?['body/supervisorEmail']", "item/studentEmail": "@triggerBody()?['applicantEmail']", - "item/studyLevel": "@outputs('GetUserProposalSupervisionInfo')?['body/studyLevel']", - "item/supervisorEmail": "@outputs('GetUserProposalSupervisionInfo')?['body/supervisorEmail']" + "item/studyLevel": "@outputs('GetUserProposalSupervisionInfo')?['body/studyLevel']" }, "authentication": "@parameters('$authentication')" } @@ -244,15 +246,15 @@ "database": "default", "table": "[main].[proposalapplication]", "id": "@triggerBody()?['proposalApplicationId']", - "item/createdAt": "@outputs('GetProposalApplicationInfo')?['body/createdAt']", + "item/statusKey": "ACCEPTED", "item/email": "@outputs('GetProposalApplicationInfo')?['body/email']", - "item/fullName": "@outputs('GetProposalApplicationInfo')?['body/fullName']", "item/matriculationNumber": "@outputs('GetProposalApplicationInfo')?['body/matriculationNumber']", - "item/motivation": "@outputs('GetProposalApplicationInfo')?['body/motivation']", + "item/fullName": "@outputs('GetProposalApplicationInfo')?['body/fullName']", "item/plannedStartAt": "@outputs('GetProposalApplicationInfo')?['body/plannedStartAt']", + "item/motivation": "@outputs('GetProposalApplicationInfo')?['body/motivation']", "item/proposalId": "@outputs('GetProposalApplicationInfo')?['body/proposalId']", - "item/statusKey": "ACCEPTED", - "item/updatedAt": "@outputs('GetProposalApplicationInfo')?['body/updatedAt']", + "item/createdAt": "@outputs('GetProposalApplicationInfo')?['body/createdAt']", + "item/updatedAt": "@utcNow()", "item/supervisionId": "@triggerBody()?['proposalId']" }, "authentication": "@parameters('$authentication')" @@ -303,15 +305,15 @@ "database": "default", "table": "[main].[proposalapplication]", "id": "@items('Apply_to_each')?['id']", - "item/createdAt": "@items('Apply_to_each')?['createdAt']", + "item/statusKey": "DECLINED", "item/email": "@items('Apply_to_each')?['email']", - "item/fullName": "@items('Apply_to_each')?['fullName']", "item/matriculationNumber": "@items('Apply_to_each')?['matriculationNumber']", - "item/motivation": "@items('Apply_to_each')?['motivation']", + "item/fullName": "@items('Apply_to_each')?['fullName']", "item/plannedStartAt": "@items('Apply_to_each')?['plannedStartAt']", + "item/motivation": "@items('Apply_to_each')?['motivation']", "item/proposalId": "@items('Apply_to_each')?['proposalId']", - "item/statusKey": "DECLINED", - "item/updatedAt": "@items('Apply_to_each')?['updatedAt']", + "item/createdAt": "@items('Apply_to_each')?['createdAt']", + "item/updatedAt": "@utcNow()", "item/supervisionId": "@null" }, "authentication": "@parameters('$authentication')" diff --git a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalApplication-3050E705-262A-EE11-BDF5-000D3A831DD0.json b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalApplication-3050E705-262A-EE11-BDF5-000D3A831DD0.json index d1716e8..e35d716 100644 --- a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalApplication-3050E705-262A-EE11-BDF5-000D3A831DD0.json +++ b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalApplication-3050E705-262A-EE11-BDF5-000D3A831DD0.json @@ -400,15 +400,15 @@ "server": "default", "database": "default", "table": "[main].[proposalapplication]", - "item/createdAt": "@utcNow()", - "item/email": "@triggerBody()?['uzhemail']", - "item/fullName": "@triggerBody()?['fullname']", "item/id": "@guid()", + "item/statusKey": "OPEN", + "item/email": "@triggerBody()?['uzhemail']", "item/matriculationNumber": "@triggerBody()?['matriculationnumber']", - "item/motivation": "@triggerBody()?['motivation']", + "item/fullName": "@triggerBody()?['fullname']", "item/plannedStartAt": "@triggerBody()?['startingdate']", + "item/motivation": "@triggerBody()?['motivation']", "item/proposalId": "@triggerBody()?['proposalid']", - "item/statusKey": "OPEN", + "item/createdAt": "@utcNow()", "item/updatedAt": "@utcNow()" }, "authentication": "@parameters('$authentication')" @@ -434,13 +434,13 @@ "server": "default", "database": "default", "table": "[main].[applicationattachment]", - "item/createdAt": "@outputs('PersistApplication')?['body/createdAt']", - "item/href": "@outputs('CreateSharingLinkCv')?['body/link/webUrl']", "item/id": "@guid()", "item/name": "CV", - "item/proposalApplicationId": "@outputs('PersistApplication')?['body/id']", + "item/href": "@outputs('CreateSharingLinkCv')?['body/link/webUrl']", "item/type": "application/pdf", - "item/updatedAt": "@outputs('PersistApplication')?['body/updatedAt']" + "item/proposalApplicationId": "@outputs('PersistApplication')?['body/id']", + "item/createdAt": "@utcNow()", + "item/updatedAt": "@utcNow()" }, "authentication": "@parameters('$authentication')" } @@ -465,13 +465,13 @@ "server": "default", "database": "default", "table": "[main].[applicationattachment]", - "item/createdAt": "@outputs('PersistApplication')?['body/createdAt']", - "item/href": "@outputs('CreateSharingLinkTranscript')?['body/link/webUrl']", "item/id": "@guid()", "item/name": "Transcript", - "item/proposalApplicationId": "@outputs('PersistApplication')?['body/id']", + "item/href": "@outputs('CreateSharingLinkTranscript')?['body/link/webUrl']", "item/type": "application/pdf", - "item/updatedAt": "@outputs('PersistApplication')?['body/updatedAt']" + "item/proposalApplicationId": "@outputs('PersistApplication')?['body/id']", + "item/createdAt": "@utcNow()", + "item/updatedAt": "@utcNow()" }, "authentication": "@parameters('$authentication')" } diff --git a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalFeedback-4BF9872E-202A-EE11-BDF5-000D3A831DD0.json b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalFeedback-4BF9872E-202A-EE11-BDF5-000D3A831DD0.json index 71ae718..0cc0b3d 100644 --- a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalFeedback-4BF9872E-202A-EE11-BDF5-000D3A831DD0.json +++ b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalFeedback-4BF9872E-202A-EE11-BDF5-000D3A831DD0.json @@ -592,15 +592,15 @@ "database": "default", "table": "[main].[proposal]", "id": "@triggerBody()?['proposalid']", - "item/createdAt": "@outputs('ProposalDetails')['createdAt']", + "item/title": "@outputs('ProposalDetails')['title']", "item/description": "@outputs('ProposalDetails')['description']", "item/language": "@outputs('ProposalDetails')['language']", - "item/statusKey": "MATCHED", "item/studyLevel": "@outputs('ProposalDetails')['studyLevel']", - "item/title": "@outputs('ProposalDetails')['title']", "item/topicAreaSlug": "@outputs('ProposalDetails')['topicAreaSlug']", "item/typeKey": "@outputs('ProposalDetails')['typeKey']", - "item/updatedAt": "@outputs('ProposalDetails')['updatedAt']" + "item/statusKey": "MATCHED", + "item/createdAt": "@outputs('ProposalDetails')['createdAt']", + "item/updatedAt": "@utcNow()" }, "authentication": "@parameters('$authentication')" } @@ -626,15 +626,15 @@ "database": "default", "table": "[main].[proposalapplication]", "id": "@triggerBody()?['proposalId']", - "item/createdAt": "@outputs('ApplicationDetails')['createdAt']", + "item/statusKey": "ACCEPTED", "item/email": "@outputs('ApplicationDetails')['email']", - "item/fullName": "@outputs('ApplicationDetails')['fullName']", "item/matriculationNumber": "@outputs('ApplicationDetails')['matriculationNumber']", - "item/motivation": "@outputs('ApplicationDetails')['motivation']", + "item/fullName": "@outputs('ApplicationDetails')['fullName']", "item/plannedStartAt": "@outputs('ApplicationDetails')['plannedStartAt']", + "item/motivation": "@outputs('ApplicationDetails')['motivation']", "item/proposalId": "@outputs('ApplicationDetails')['proposalId']", - "item/statusKey": "ACCEPTED", - "item/updatedAt": "@outputs('ApplicationDetails')['updatedAt']" + "item/createdAt": "@outputs('ApplicationDetails')['createdAt']", + "item/updatedAt": "@utcNow()" }, "authentication": "@parameters('$authentication')" } @@ -731,6 +731,8 @@ "table": "[main].[userproposalsupervision]", "item/id": "@triggerBody()?['proposalId']", "item/proposalId": "@triggerBody()?['proposalId']", + "item/createdAt": "@utcNow()", + "item/updatedAt": "@utcNow()", "item/supervisorEmail": "@triggerBody()?['supervisorEmail']" }, "authentication": "@parameters('$authentication')" @@ -775,15 +777,15 @@ "database": "default", "table": "[main].[proposal]", "id": "@triggerBody()?['proposalId']", - "item/createdAt": "@outputs('ProposalDetails')['createdAt']", + "item/title": "@outputs('ProposalDetails')['title']", "item/description": "@outputs('ProposalDetails')['description']", "item/language": "@outputs('ProposalDetails')['language']", - "item/statusKey": "MATCHED_TENTATIVE", "item/studyLevel": "@outputs('ProposalDetails')['studyLevel']", - "item/title": "@outputs('ProposalDetails')['title']", "item/topicAreaSlug": "@outputs('ProposalDetails')['topicAreaSlug']", "item/typeKey": "@outputs('ProposalDetails')['typeKey']", - "item/updatedAt": "@outputs('ProposalDetails')['updatedAt']" + "item/statusKey": "MATCHED_TENTATIVE", + "item/createdAt": "@outputs('ProposalDetails')['createdAt']", + "item/updatedAt": "@utcNow()" }, "authentication": "@parameters('$authentication')" } @@ -810,6 +812,8 @@ "table": "[main].[userproposalsupervision]", "item/id": "@triggerBody()?['proposalId']", "item/proposalId": "@triggerBody()?['proposalId']", + "item/createdAt": "@utcNow()", + "item/updatedAt": "@utcNow()", "item/supervisorEmail": "@triggerBody()?['supervisorEmail']" }, "authentication": "@parameters('$authentication')" @@ -836,15 +840,15 @@ "database": "default", "table": "[main].[proposalapplication]", "id": "@triggerBody()?['proposalId']", - "item/createdAt": "@outputs('ApplicationDetails')['createdAt']", + "item/statusKey": "ACCEPTED_TENTATIVE", "item/email": "@outputs('ApplicationDetails')['email']", - "item/fullName": "@outputs('ApplicationDetails')['fullName']", "item/matriculationNumber": "@outputs('ApplicationDetails')['matriculationNumber']", - "item/motivation": "@outputs('ApplicationDetails')['motivation']", + "item/fullName": "@outputs('ApplicationDetails')['fullName']", "item/plannedStartAt": "@outputs('ApplicationDetails')['plannedStartAt']", + "item/motivation": "@outputs('ApplicationDetails')['motivation']", "item/proposalId": "@outputs('ApplicationDetails')['proposalId']", - "item/statusKey": "ACCEPTED_TENTATIVE", - "item/updatedAt": "@outputs('ApplicationDetails')['updatedAt']" + "item/createdAt": "@outputs('ApplicationDetails')['createdAt']", + "item/updatedAt": "@utcNow()" }, "authentication": "@parameters('$authentication')" } @@ -942,12 +946,14 @@ "server": "default", "database": "default", "table": "[main].[userproposalfeedback]", - "item/comment": "@triggerBody()?['comment']", "item/id": "@guid()", "item/proposalId": "@triggerBody()?['proposalId']", - "item/reason": "@triggerBody()?['reason']", + "item/userEmail": "@triggerBody()?['supervisorEmail']", "item/typeKey": "DECLINED_@{triggerBody()?['reason']}", - "item/userEmail": "@triggerBody()?['supervisorEmail']" + "item/reason": "@triggerBody()?['reason']", + "item/comment": "@triggerBody()?['comment']", + "item/createdAt": "@utcNow()", + "item/updatedAt": "@utcNow()" }, "authentication": "@parameters('$authentication')" } @@ -1139,15 +1145,15 @@ "database": "default", "table": "[main].[proposal]", "id": "@triggerBody()?['proposalId']", - "item/createdAt": "@outputs('ProposalDetails')['createdAt']", + "item/title": "@outputs('ProposalDetails')['title']", "item/description": "@outputs('ProposalDetails')['description']", "item/language": "@outputs('ProposalDetails')['language']", - "item/statusKey": "OPEN", "item/studyLevel": "@outputs('ProposalDetails')['studyLevel']", - "item/title": "@outputs('ProposalDetails')['title']", "item/topicAreaSlug": "@outputs('ProposalDetails')['topicAreaSlug']", "item/typeKey": "@outputs('ProposalDetails')['typeKey']", - "item/updatedAt": "@outputs('ProposalDetails')['updatedAt']" + "item/statusKey": "OPEN", + "item/createdAt": "@outputs('ProposalDetails')['createdAt']", + "item/updatedAt": "@utcNow()" }, "authentication": "@parameters('$authentication')" } @@ -1173,15 +1179,15 @@ "database": "default", "table": "[main].[proposalapplication]", "id": "@triggerBody()?['proposalId']", - "item/createdAt": "@outputs('ApplicationDetails')['createdAt']", + "item/statusKey": "OPEN", "item/email": "@outputs('ApplicationDetails')['email']", - "item/fullName": "@outputs('ApplicationDetails')['fullName']", "item/matriculationNumber": "@outputs('ApplicationDetails')['matriculationNumber']", - "item/motivation": "@outputs('ApplicationDetails')['motivation']", + "item/fullName": "@outputs('ApplicationDetails')['fullName']", "item/plannedStartAt": "@outputs('ApplicationDetails')['plannedStartAt']", + "item/motivation": "@outputs('ApplicationDetails')['motivation']", "item/proposalId": "@triggerBody()?['proposalId']", - "item/statusKey": "OPEN", - "item/updatedAt": "@outputs('ApplicationDetails')['updatedAt']" + "item/createdAt": "@outputs('ApplicationDetails')['createdAt']", + "item/updatedAt": "@utcNow()" }, "authentication": "@parameters('$authentication')" } @@ -1219,12 +1225,14 @@ "server": "default", "database": "default", "table": "[main].[userproposalfeedback]", - "item/comment": "@triggerBody()?['comment']", "item/id": "@guid()", "item/proposalId": "@triggerBody()?['proposalId']", - "item/reason": "@triggerBody()?['reason']", + "item/userEmail": "@triggerBody()?['supervisorEmail']", "item/typeKey": "REJECTED_@{triggerBody()?['reason']}", - "item/userEmail": "@triggerBody()?['supervisorEmail']" + "item/reason": "@triggerBody()?['reason']", + "item/comment": "@triggerBody()?['comment']", + "item/createdAt": "@utcNow()", + "item/updatedAt": "@utcNow()" }, "authentication": "@parameters('$authentication')" } diff --git a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalPosting-F3E0B1EB-152A-EE11-BDF5-000D3A831DD0.json b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalPosting-F3E0B1EB-152A-EE11-BDF5-000D3A831DD0.json index fe0d537..c169453 100644 --- a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalPosting-F3E0B1EB-152A-EE11-BDF5-000D3A831DD0.json +++ b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalPosting-F3E0B1EB-152A-EE11-BDF5-000D3A831DD0.json @@ -700,6 +700,8 @@ "table": "[main].[userproposalsupervision]", "item/id": "@variables('ProposalId')", "item/proposalId": "@variables('ProposalId')", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", + "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/supervisorEmail": "@variables('SupervisorEmail')", "item/studyLevel": "@outputs('GetResponseDetails')?['body/r93c920c31aaf4b8f8ca5e55bb9a0bf87']" }, diff --git a/solutions/UZHBFThesisPlatform_managed.zip b/solutions/UZHBFThesisPlatform_managed.zip index 8942a3d76b4e1738146a3ea7a0067f54a04c9550..3f050f2047efe3067c8cd0bbad8bb9f0aa55be1c 100644 GIT binary patch delta 21161 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 ZoTo-I6*e4kIR`=+xsnXV6^{DD{tvctlN|s6 From 778327f4387e3adab955115b680427ef9a51dc92 Mon Sep 17 00:00:00 2001 From: mxmlnwbr Date: Thu, 14 Dec 2023 10:42:31 +0100 Subject: [PATCH 32/45] chore(release): 1.0.0-beta.8 --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b6037a..7c97143 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.0.0-beta.8](https://github.com/uzh-bf/thesis-platform/compare/v1.0.0-beta.7...v1.0.0-beta.8) (2023-12-14) + + +### Enhancements + +* **prisma:** Timestamps added for UserProposalSupervision and UserProposalFeedback ([#20](https://github.com/uzh-bf/thesis-platform/issues/20)) ([ee99961](https://github.com/uzh-bf/thesis-platform/commit/ee99961454ee7634ce10a6a9a1b94f4b1f09bab2)) + ## [1.0.0-beta.7](https://github.com/uzh-bf/thesis-platform/compare/v1.0.0-beta.6...v1.0.0-beta.7) (2023-12-13) diff --git a/package-lock.json b/package-lock.json index ff3226b..1c94927 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "dependencies": { "@azure/identity": "3.3.0", "@azure/storage-blob": "12.15.0", diff --git a/package.json b/package.json index 27fe878..7cf2700 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "private": true, "scripts": { "prebuild": "npm run prisma:generate", From d61fabd2479b063882ad05ed3d8ffc1a0b9ebe21 Mon Sep 17 00:00:00 2001 From: mxmlnwbr <71628027+mxmlnwbr@users.noreply.github.com> Date: Mon, 18 Dec 2023 10:05:09 +0100 Subject: [PATCH 33/45] feat(app): Developer role added that can see applications on all supervisor proposals (#21) --- src/components/Header.tsx | 8 +++++--- src/components/ProposalApplication.tsx | 16 +++++++--------- src/components/ProposalCard.tsx | 3 ++- src/components/ProposalFeedback.tsx | 9 ++++----- src/components/ProposalStatusForm.tsx | 4 +++- src/components/SupervisorProposals.tsx | 7 ++++--- src/lib/constants.ts | 2 +- src/lib/hooks/useUserRole.ts | 6 +++--- src/pages/[[...proposalId]].tsx | 20 ++++++-------------- src/server/routers/_app.ts | 16 +++++++++++++++- 10 files changed, 50 insertions(+), 41 deletions(-) diff --git a/src/components/Header.tsx b/src/components/Header.tsx index 5edec9c..20a4946 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -8,14 +8,16 @@ import NewProposalButton from './NewProposalButton' export default function Header() { const { data: session } = useSession() - const isSupervisor = session?.user?.role === UserRole.SUPERVISOR + const isSupervisor = + session?.user?.role === UserRole.SUPERVISOR || + session?.user?.role === UserRole.DEVELOPER return ( -
+
-
+
{session?.user && (
Signed in as {session.user.email} ({session.user.role}) diff --git a/src/components/ProposalApplication.tsx b/src/components/ProposalApplication.tsx index 7d23527..4427b7a 100644 --- a/src/components/ProposalApplication.tsx +++ b/src/components/ProposalApplication.tsx @@ -2,6 +2,7 @@ import { H2, Table } from '@uzh-bf/design-system' import { add, format, parseISO } from 'date-fns' import { useSession } from 'next-auth/react' import { useState } from 'react' +import useUserRole from 'src/lib/hooks/useUserRole' import { trpc } from 'src/lib/trpc' import { ApplicationDetails, ProposalDetails } from 'src/types/app' import ApplicationDetailsModal from './ApplicationDetailsModal' @@ -10,16 +11,12 @@ import ConfirmationModal from './ConfirmationModal' interface ProposalApplicationProps { proposalDetails: ProposalDetails - isStudent: boolean - isSupervisor: boolean refetch: () => void setFilters: (filters: { status: string }) => void } export default function ProposalApplication({ proposalDetails, - isStudent, - isSupervisor, refetch, setFilters, }: ProposalApplicationProps) { @@ -28,8 +25,8 @@ export default function ProposalApplication({ useState(false) const { data: session } = useSession() + const { isStudent, isSupervisor, isDeveloper } = useUserRole() const acceptApplication = trpc.acceptProposalApplication.useMutation() - if (proposalDetails?.typeKey === 'SUPERVISOR') { return (
@@ -40,10 +37,11 @@ export default function ProposalApplication({ proposalId={proposalDetails.id} /> )} - {isSupervisor && - (session?.user?.email === proposalDetails?.ownedByUserEmail || - session?.user.email === - proposalDetails?.supervisedBy?.[0].supervisorEmail) ? ( + {isDeveloper || + (isSupervisor && + (session?.user?.email === proposalDetails?.ownedByUserEmail || + session?.user.email === + proposalDetails?.supervisedBy?.[0].supervisorEmail)) ? (

Applications

{proposalDetails?.applications?.length === 0 && diff --git a/src/components/ProposalCard.tsx b/src/components/ProposalCard.tsx index bbc2e70..339b06b 100644 --- a/src/components/ProposalCard.tsx +++ b/src/components/ProposalCard.tsx @@ -24,7 +24,8 @@ export default function ProposalCard({ const { data: session } = useSession() const hasFeedback = - session?.user?.role === UserRole.SUPERVISOR && + (session?.user?.role === UserRole.SUPERVISOR || + session?.user?.role === UserRole.DEVELOPER) && proposal.receivedFeedbacks?.length > 0 return ( diff --git a/src/components/ProposalFeedback.tsx b/src/components/ProposalFeedback.tsx index e3255de..904686f 100644 --- a/src/components/ProposalFeedback.tsx +++ b/src/components/ProposalFeedback.tsx @@ -1,21 +1,20 @@ import { faComment } from '@fortawesome/free-solid-svg-icons' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import useUserRole from 'src/lib/hooks/useUserRole' import { ProposalDetails } from 'src/types/app' interface ProposalFeedbackProps { proposalDetails: ProposalDetails - isSupervisor: boolean - isAdmin: boolean } export default function ProposalFeedback({ proposalDetails, - isSupervisor, - isAdmin, }: ProposalFeedbackProps) { + const { isSupervisor, isDeveloper } = useUserRole() + if ( proposalDetails?.receivedFeedbacks?.length > 0 && - (isSupervisor || isAdmin) + (isSupervisor || isDeveloper) ) { return (
diff --git a/src/components/ProposalStatusForm.tsx b/src/components/ProposalStatusForm.tsx index 838cee5..2c39981 100644 --- a/src/components/ProposalStatusForm.tsx +++ b/src/components/ProposalStatusForm.tsx @@ -75,7 +75,9 @@ export default function ProposalStatusForm({ } else if ( (proposalDetails?.typeKey === 'STUDENT' && proposalDetails?.statusKey === 'MATCHED') || - proposalDetails?.receivedFeedbacks?.length > 0 || + (proposalDetails?.receivedFeedbacks?.length > 0 && + proposalDetails?.receivedFeedbacks?.user?.[0].userEmail === + session?.user?.email) || providedFeedback ) { return ( diff --git a/src/components/SupervisorProposals.tsx b/src/components/SupervisorProposals.tsx index 0e4b481..68e6393 100644 --- a/src/components/SupervisorProposals.tsx +++ b/src/components/SupervisorProposals.tsx @@ -1,10 +1,10 @@ import { H2 } from '@uzh-bf/design-system' import { RefObject } from 'react' +import useUserRole from 'src/lib/hooks/useUserRole' import { ProposalDetails } from 'src/types/app' import ProposalCard from './ProposalCard' interface SupervisorProposalsProps { - isSupervisor: boolean data: ProposalDetails[] selectedProposal: string | null setSelectedProposal: (proposalId: string | null) => void @@ -12,15 +12,16 @@ interface SupervisorProposalsProps { } export default function SupervisorProposals({ - isSupervisor, data, selectedProposal, setSelectedProposal, buttonRef, }: SupervisorProposalsProps) { + const { isSupervisor, isDeveloper } = useUserRole() + return (
- {isSupervisor && ( + {(isSupervisor || isDeveloper) && (

Supervisor Proposals

)}
diff --git a/src/lib/constants.ts b/src/lib/constants.ts index c62c48b..937341e 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -39,7 +39,7 @@ export enum ProposalFeedbackType { export enum UserRole { STUDENT = 'STUDENT', SUPERVISOR = 'SUPERVISOR', - ADMIN = 'ADMIN', + DEVELOPER = 'DEVELOPER', } export enum TopicAreas { diff --git a/src/lib/hooks/useUserRole.ts b/src/lib/hooks/useUserRole.ts index 1e887bb..5864bfa 100644 --- a/src/lib/hooks/useUserRole.ts +++ b/src/lib/hooks/useUserRole.ts @@ -4,13 +4,13 @@ import { UserRole } from '../constants' function useUserRole() { const { data: session } = useSession() - const isAdmin = session?.user?.role === UserRole.ADMIN const isSupervisor = session?.user?.role === UserRole.SUPERVISOR - const isStudent = !isAdmin && !isSupervisor + const isDeveloper = session?.user?.role === UserRole.DEVELOPER + const isStudent = !isSupervisor && !isDeveloper return { - isAdmin, isSupervisor, + isDeveloper, isStudent, } } diff --git a/src/pages/[[...proposalId]].tsx b/src/pages/[[...proposalId]].tsx index c957946..739af71 100644 --- a/src/pages/[[...proposalId]].tsx +++ b/src/pages/[[...proposalId]].tsx @@ -27,12 +27,11 @@ export default function Index() { status: ProposalStatusFilter.OPEN_PROPOSALS, }) - const { isAdmin, isStudent, isSupervisor } = useUserRole() + const { isSupervisor, isDeveloper } = useUserRole() - const { data, isLoading, isError, isFetching, refetch } = - trpc.proposals.useQuery({ - filters, - }) + const { data, isLoading, refetch } = trpc.proposals.useQuery({ + filters, + }) useEffect(() => { if (!router.query.proposalId && data?.[0]?.id) { @@ -67,7 +66,7 @@ export default function Index() { return (
- {isSupervisor && ( + {(isSupervisor || isDeveloper) && ( - + )} diff --git a/src/server/routers/_app.ts b/src/server/routers/_app.ts index 0cbb224..1d6ca09 100644 --- a/src/server/routers/_app.ts +++ b/src/server/routers/_app.ts @@ -88,6 +88,20 @@ async function getSupervisorProposals({ ctx, filters }) { }, }, } + } else if (ctx.user?.role === UserRole.DEVELOPER) { + where = { + ...where, + typeKey: { + in: ['SUPERVISOR', 'STUDENT'], + }, + } + applications = { + include: { + attachments: true, + status: true, + }, + } + receivedFeedbacks = {} } else { where = { ...where, @@ -242,7 +256,7 @@ export const appRouter = router({ .query(({ input, ctx }) => { if ( ctx.user?.role && - [UserRole.ADMIN, UserRole.SUPERVISOR].includes(ctx.user.role) + [UserRole.SUPERVISOR, UserRole.DEVELOPER].includes(ctx.user.role) ) { return getSupervisorProposals({ ctx, filters: input.filters }) } From 2219cfe8949a27121dfdd28812810f4617507d45 Mon Sep 17 00:00:00 2001 From: mxmlnwbr Date: Mon, 18 Dec 2023 10:29:31 +0100 Subject: [PATCH 34/45] fix(app): check against all emails on multiple feedbacks --- src/components/ProposalStatusForm.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/ProposalStatusForm.tsx b/src/components/ProposalStatusForm.tsx index 2c39981..e05a1d9 100644 --- a/src/components/ProposalStatusForm.tsx +++ b/src/components/ProposalStatusForm.tsx @@ -76,8 +76,9 @@ export default function ProposalStatusForm({ (proposalDetails?.typeKey === 'STUDENT' && proposalDetails?.statusKey === 'MATCHED') || (proposalDetails?.receivedFeedbacks?.length > 0 && - proposalDetails?.receivedFeedbacks?.user?.[0].userEmail === - session?.user?.email) || + proposalDetails?.receivedFeedbacks?.some( + (feedback) => feedback.userEmail === session?.user?.email + )) || providedFeedback ) { return ( From b8b7c562623b67682c0e4d0393ad7f29c7b9e000 Mon Sep 17 00:00:00 2001 From: mxmlnwbr Date: Mon, 18 Dec 2023 10:33:39 +0100 Subject: [PATCH 35/45] chore(release): 1.0.0-beta.9 --- CHANGELOG.md | 12 ++++++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c97143..5083ca3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,18 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.0.0-beta.9](https://github.com/uzh-bf/thesis-platform/compare/v1.0.0-beta.8...v1.0.0-beta.9) (2023-12-18) + + +### Features + +* **app:** Developer role added that can see applications on all supervisor proposals ([#21](https://github.com/uzh-bf/thesis-platform/issues/21)) ([d61fabd](https://github.com/uzh-bf/thesis-platform/commit/d61fabd2479b063882ad05ed3d8ffc1a0b9ebe21)) + + +### Bug Fixes + +* **app:** check against all emails on multiple feedbacks ([2219cfe](https://github.com/uzh-bf/thesis-platform/commit/2219cfe8949a27121dfdd28812810f4617507d45)) + ## [1.0.0-beta.8](https://github.com/uzh-bf/thesis-platform/compare/v1.0.0-beta.7...v1.0.0-beta.8) (2023-12-14) diff --git a/package-lock.json b/package-lock.json index 1c94927..bc1371f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.8", + "version": "1.0.0-beta.9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.8", + "version": "1.0.0-beta.9", "dependencies": { "@azure/identity": "3.3.0", "@azure/storage-blob": "12.15.0", diff --git a/package.json b/package.json index 7cf2700..3814601 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.8", + "version": "1.0.0-beta.9", "private": true, "scripts": { "prebuild": "npm run prisma:generate", From 867dc631fa31da71f854608eaea9f9798c4bc3c1 Mon Sep 17 00:00:00 2001 From: mxmlnwbr <71628027+mxmlnwbr@users.noreply.github.com> Date: Wed, 24 Jan 2024 08:46:25 +0100 Subject: [PATCH 36/45] feat(prisma): extended db by admin info table (#23) --- .../20240117090934_admin_table/migration.sql | 19 +++++++++++++++++++ prisma/schema.prisma | 18 ++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 prisma/migrations/20240117090934_admin_table/migration.sql diff --git a/prisma/migrations/20240117090934_admin_table/migration.sql b/prisma/migrations/20240117090934_admin_table/migration.sql new file mode 100644 index 0000000..b75acc6 --- /dev/null +++ b/prisma/migrations/20240117090934_admin_table/migration.sql @@ -0,0 +1,19 @@ +-- CreateTable +CREATE TABLE `AdminInfo` ( + `id` VARCHAR(191) NOT NULL, + `mailReceived` VARCHAR(191) NULL, + `supervisor` VARCHAR(191) NULL, + `student` VARCHAR(191) NULL, + `title` VARCHAR(191) NULL, + `type` VARCHAR(191) NULL, + `status` VARCHAR(191) NULL, + `olatCapturedDate` DATETIME(3) NULL, + `submissionDate` DATETIME(3) NULL, + `grade` DOUBLE NULL, + `olatGradeDate` DATETIME(3) NULL, + `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + `updatedAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + + UNIQUE INDEX `AdminInfo_id_key`(`id`), + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 0f4ac8b..546e8a3 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -211,3 +211,21 @@ model UserProposalFeedback { @@unique([proposalId, userEmail]) } + +model AdminInfo { + id String @id @unique @default(uuid()) + + mailReceived String? + supervisor String? + student String? + title String? + type String? + status String? + olatCapturedDate DateTime? + submissionDate DateTime? + grade Float? + olatGradeDate DateTime? + + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt +} \ No newline at end of file From 211ed0ab24af44d40ee0abe9fc1ad717664e9701 Mon Sep 17 00:00:00 2001 From: mxmlnwbr Date: Wed, 24 Jan 2024 08:47:31 +0100 Subject: [PATCH 37/45] chore(release): 1.0.0-beta.10 --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5083ca3..fa66c4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.0.0-beta.10](https://github.com/uzh-bf/thesis-platform/compare/v1.0.0-beta.9...v1.0.0-beta.10) (2024-01-24) + + +### Features + +* **prisma:** extended db by admin info table ([#23](https://github.com/uzh-bf/thesis-platform/issues/23)) ([867dc63](https://github.com/uzh-bf/thesis-platform/commit/867dc631fa31da71f854608eaea9f9798c4bc3c1)) + ## [1.0.0-beta.9](https://github.com/uzh-bf/thesis-platform/compare/v1.0.0-beta.8...v1.0.0-beta.9) (2023-12-18) diff --git a/package-lock.json b/package-lock.json index bc1371f..8009860 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.9", + "version": "1.0.0-beta.10", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.9", + "version": "1.0.0-beta.10", "dependencies": { "@azure/identity": "3.3.0", "@azure/storage-blob": "12.15.0", diff --git a/package.json b/package.json index 3814601..4ccc102 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.9", + "version": "1.0.0-beta.10", "private": true, "scripts": { "prebuild": "npm run prisma:generate", From 44ff8d51cea8cceb7c196edae9772a84ed93aad0 Mon Sep 17 00:00:00 2001 From: mxmlnwbr Date: Thu, 15 Feb 2024 10:32:48 +0100 Subject: [PATCH 38/45] change(app): form ids for shared forms --- .env.development | 4 ++-- .env.production | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.env.development b/.env.development index 8d68480..5bc876e 100644 --- a/.env.development +++ b/.env.development @@ -1,6 +1,6 @@ NEXT_PUBLIC_APP_URL=localhost:3000 -NEXT_PUBLIC_FORMS_URL_PUBLISH="https://forms.office.com/Pages/ResponsePage.aspx?id=2zjkx2LkIkypCsNYsWmAs1QgPDYXFIJFoTn3sHbg3YFUOFBGVEI2SlY2WEVQRUc0VUFIRUdKNDE5QS4u" -NEXT_PUBLIC_FORMS_URL_SUBMIT="https://forms.office.com/Pages/ResponsePage.aspx?id=2zjkx2LkIkypCsNYsWmAs1QgPDYXFIJFoTn3sHbg3YFURUhYTFNWUUdTT0lVUFRCVkJUVEsyWTdBMS4u" +NEXT_PUBLIC_FORMS_URL_PUBLISH="https://forms.office.com/Pages/ResponsePage.aspx?id=2zjkx2LkIkypCsNYsWmAs0LFaOQJoXlHrbsK8Pa1si9UOFBGVEI2SlY2WEVQRUc0VUFIRUdKNDE5QSQlQCN0PWcu" +NEXT_PUBLIC_FORMS_URL_SUBMIT="https://forms.office.com/Pages/ResponsePage.aspx?id=2zjkx2LkIkypCsNYsWmAs0LFaOQJoXlHrbsK8Pa1si9URUhYTFNWUUdTT0lVUFRCVkJUVEsyWTdBMSQlQCN0PWcu" NEXT_PUBLIC_BLOBSERVICECLIENT_URL="https://thesisplatformdev.blob.core.windows.net/uploads?" APPLICATION_URL="https://prod-16.switzerlandnorth.logic.azure.com:443/workflows/59277f26083740e5bff291f9b93ae017/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=YoKvNPy9vcURljhJzSxEEaWVIO1J_PJYJJ0j38xfGOw" PROPOSAL_FEEDBACK_URL="https://prod-14.switzerlandnorth.logic.azure.com:443/workflows/df4d7fd584834de1bcac66150f2d7e15/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=zVrizkBYfyIikgpVkQmNAM2IOJ8eHfJpvIvr7tdC3hc" diff --git a/.env.production b/.env.production index c61d155..91c8699 100644 --- a/.env.production +++ b/.env.production @@ -1,6 +1,6 @@ NEXT_PUBLIC_APP_URL=theses.bf.uzh.ch -NEXT_PUBLIC_FORMS_URL_PUBLISH="https://forms.office.com/Pages/ResponsePage.aspx?id=2zjkx2LkIkypCsNYsWmAs_TeTD3rkXtGpbExdNgeYCZUMkpSRUdOUUYxMlU4SEI3MDk4OUw5T0QzTS4u" -NEXT_PUBLIC_FORMS_URL_SUBMIT="https://forms.office.com/Pages/ResponsePage.aspx?id=2zjkx2LkIkypCsNYsWmAs_TeTD3rkXtGpbExdNgeYCZUNkpHOVo4MlREUTJPNE9LV0lVUEVSOElJVC4u" +NEXT_PUBLIC_FORMS_URL_PUBLISH="https://forms.office.com/Pages/ResponsePage.aspx?id=2zjkx2LkIkypCsNYsWmAs9iU1p12TNBNlqpakIPkkQVUMkpSRUdOUUYxMlU4SEI3MDk4OUw5T0QzTSQlQCN0PWcu" +NEXT_PUBLIC_FORMS_URL_SUBMIT="https://forms.office.com/Pages/ResponsePage.aspx?id=2zjkx2LkIkypCsNYsWmAs9iU1p12TNBNlqpakIPkkQVUNkpHOVo4MlREUTJPNE9LV0lVUEVSOElJVCQlQCN0PWcu" NEXT_PUBLIC_BLOBSERVICECLIENT_URL="https://thesisplatformdev.blob.core.windows.net/uploads?" NEXT_PUBLIC_CONTAINER_NAME=uploads NEXT_PUBLIC_AZURE_STORAGE_ACCOUNT_NAME=thesisplatformdev From a938d2ef66e63ebbee60f69d075ac0ac9df54a1f Mon Sep 17 00:00:00 2001 From: mxmlnwbr Date: Thu, 15 Feb 2024 10:38:27 +0100 Subject: [PATCH 39/45] chore(release): 1.0.0-beta.11 --- CHANGELOG.md | 2 ++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fa66c4b..6660076 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.0.0-beta.11](https://github.com/uzh-bf/thesis-platform/compare/v1.0.0-beta.10...v1.0.0-beta.11) (2024-02-15) + ## [1.0.0-beta.10](https://github.com/uzh-bf/thesis-platform/compare/v1.0.0-beta.9...v1.0.0-beta.10) (2024-01-24) diff --git a/package-lock.json b/package-lock.json index 8009860..a7cfe29 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.10", + "version": "1.0.0-beta.11", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.10", + "version": "1.0.0-beta.11", "dependencies": { "@azure/identity": "3.3.0", "@azure/storage-blob": "12.15.0", diff --git a/package.json b/package.json index 4ccc102..1eb4ba1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.10", + "version": "1.0.0-beta.11", "private": true, "scripts": { "prebuild": "npm run prisma:generate", From 990e783a9db68a3bbe9cfa1e6ed8b8cf9b402e9c Mon Sep 17 00:00:00 2001 From: mxmlnwbr Date: Thu, 22 Feb 2024 11:33:13 +0100 Subject: [PATCH 40/45] chore: latest solutions export from power automate --- solutions/UZHBFThesisPlatform.zip | Bin 39426 -> 44184 bytes .../UZHBFThesisPlatform/Other/Solution.xml | 2 +- ...-7C987104-6984-EE11-8179-002248DB4B50.json | 53 +- ...-3050E705-262A-EE11-BDF5-000D3A831DD0.json | 35 +- ...-4BF9872E-202A-EE11-BDF5-000D3A831DD0.json | 85 +- ...-F3E0B1EB-152A-EE11-BDF5-000D3A831DD0.json | 507 +++-- ...-D12D741B-A027-EE11-9966-000D3A8321BD.json | 1901 ++++++++++++----- .../environmentvariabledefinition.xml | 10 + .../environmentvariabledefinition.xml | 10 + solutions/UZHBFThesisPlatform_managed.zip | Bin 39426 -> 44180 bytes 10 files changed, 1800 insertions(+), 803 deletions(-) create mode 100644 solutions/UZHBFThesisPlatform/environmentvariabledefinitions/uzhbf_thesisplatform_department_env_var/environmentvariabledefinition.xml create mode 100644 solutions/UZHBFThesisPlatform/environmentvariabledefinitions/uzhbf_thesisplatform_root_url_env_var/environmentvariabledefinition.xml diff --git a/solutions/UZHBFThesisPlatform.zip b/solutions/UZHBFThesisPlatform.zip index c743cb7f2f4a6a56e7df6ee76574006df2e2372a..03e3d29d568c8ac8ddf2e03a20ed644777c87a70 100644 GIT binary patch delta 34077 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 UOb$MA262Y-JPZt*=Y#YE08(eSV*mgE delta 29750 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 - + UZHBFThesisPlatform diff --git a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisApplicationAcceptance-7C987104-6984-EE11-8179-002248DB4B50.json b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisApplicationAcceptance-7C987104-6984-EE11-8179-002248DB4B50.json index 16432cf..d62c31e 100644 --- a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisApplicationAcceptance-7C987104-6984-EE11-8179-002248DB4B50.json +++ b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisApplicationAcceptance-7C987104-6984-EE11-8179-002248DB4B50.json @@ -75,6 +75,13 @@ "metadata": { "schemaName": "uzhbf_thesisplatform_flow_secret_env_var" } + }, + "Department (uzhbf_thesisplatform_department_env_var)": { + "defaultValue": "DBF", + "type": "String", + "metadata": { + "schemaName": "uzhbf_thesisplatform_department_env_var" + } } }, "triggers": { @@ -128,18 +135,18 @@ "database": "default", "table": "[main].[proposal]", "id": "@triggerBody()?['proposalId']", - "item/title": "@outputs('GetProposalInfo')?['body/title']", + "item/createdAt": "@outputs('GetProposalInfo')?['body/createdAt']", "item/description": "@outputs('GetProposalInfo')?['body/description']", "item/language": "@outputs('GetProposalInfo')?['body/language']", + "item/statusKey": "MATCHED", "item/studyLevel": "@outputs('GetProposalInfo')?['body/studyLevel']", + "item/title": "@outputs('GetProposalInfo')?['body/title']", "item/topicAreaSlug": "@outputs('GetProposalInfo')?['body/topicAreaSlug']", "item/typeKey": "@outputs('GetProposalInfo')?['body/typeKey']", - "item/statusKey": "MATCHED", - "item/createdAt": "@outputs('GetProposalInfo')?['body/createdAt']", "item/updatedAt": "@utcNow()", - "item/timeFrame": "@outputs('GetProposalInfo')?['body/timeFrame']", + "item/ownedByStudent": "@outputs('GetProposalInfo')?['body/ownedByStudent']", "item/ownedByUserEmail": "@outputs('GetProposalInfo')?['body/ownedByUserEmail']", - "item/ownedByStudent": "@outputs('GetProposalInfo')?['body/ownedByStudent']" + "item/timeFrame": "@outputs('GetProposalInfo')?['body/timeFrame']" }, "authentication": "@parameters('$authentication')" } @@ -190,12 +197,12 @@ "database": "default", "table": "[main].[userproposalsupervision]", "id": "@triggerBody()?['proposalId']", - "item/proposalId": "@outputs('GetUserProposalSupervisionInfo')?['body/proposalId']", "item/createdAt": "@outputs('GetUserProposalSupervisionInfo')?['body/createdAt']", + "item/proposalId": "@outputs('GetUserProposalSupervisionInfo')?['body/proposalId']", "item/updatedAt": "@utcNow()", - "item/supervisorEmail": "@outputs('GetUserProposalSupervisionInfo')?['body/supervisorEmail']", "item/studentEmail": "@triggerBody()?['applicantEmail']", - "item/studyLevel": "@outputs('GetUserProposalSupervisionInfo')?['body/studyLevel']" + "item/studyLevel": "@outputs('GetUserProposalSupervisionInfo')?['body/studyLevel']", + "item/supervisorEmail": "@outputs('GetUserProposalSupervisionInfo')?['body/supervisorEmail']" }, "authentication": "@parameters('$authentication')" } @@ -246,14 +253,14 @@ "database": "default", "table": "[main].[proposalapplication]", "id": "@triggerBody()?['proposalApplicationId']", - "item/statusKey": "ACCEPTED", + "item/createdAt": "@outputs('GetProposalApplicationInfo')?['body/createdAt']", "item/email": "@outputs('GetProposalApplicationInfo')?['body/email']", - "item/matriculationNumber": "@outputs('GetProposalApplicationInfo')?['body/matriculationNumber']", "item/fullName": "@outputs('GetProposalApplicationInfo')?['body/fullName']", - "item/plannedStartAt": "@outputs('GetProposalApplicationInfo')?['body/plannedStartAt']", + "item/matriculationNumber": "@outputs('GetProposalApplicationInfo')?['body/matriculationNumber']", "item/motivation": "@outputs('GetProposalApplicationInfo')?['body/motivation']", + "item/plannedStartAt": "@outputs('GetProposalApplicationInfo')?['body/plannedStartAt']", "item/proposalId": "@outputs('GetProposalApplicationInfo')?['body/proposalId']", - "item/createdAt": "@outputs('GetProposalApplicationInfo')?['body/createdAt']", + "item/statusKey": "ACCEPTED", "item/updatedAt": "@utcNow()", "item/supervisionId": "@triggerBody()?['proposalId']" }, @@ -305,14 +312,14 @@ "database": "default", "table": "[main].[proposalapplication]", "id": "@items('Apply_to_each')?['id']", - "item/statusKey": "DECLINED", + "item/createdAt": "@items('Apply_to_each')?['createdAt']", "item/email": "@items('Apply_to_each')?['email']", - "item/matriculationNumber": "@items('Apply_to_each')?['matriculationNumber']", "item/fullName": "@items('Apply_to_each')?['fullName']", - "item/plannedStartAt": "@items('Apply_to_each')?['plannedStartAt']", + "item/matriculationNumber": "@items('Apply_to_each')?['matriculationNumber']", "item/motivation": "@items('Apply_to_each')?['motivation']", + "item/plannedStartAt": "@items('Apply_to_each')?['plannedStartAt']", "item/proposalId": "@items('Apply_to_each')?['proposalId']", - "item/createdAt": "@items('Apply_to_each')?['createdAt']", + "item/statusKey": "DECLINED", "item/updatedAt": "@utcNow()", "item/supervisionId": "@null" }, @@ -337,8 +344,8 @@ }, "parameters": { "emailMessage/To": "@outputs('UpdateProposalApplicationDeclined')?['body/email']", - "emailMessage/Subject": "BF Theses - Proposal Application Declined", - "emailMessage/Body": "

Dear @{outputs('UpdateProposalApplicationDeclined')?['body/fullName']},
\n
\nWe are sorry to inform you, that your application on the proposal \"@{outputs('GetProposalInfo')?['body/title']}\" was declined.
\n
\nBest regards,
\nDBF Thesis Coordinator

", + "emailMessage/Subject": "@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Theses - Proposal Application Declined", + "emailMessage/Body": "

Dear @{outputs('UpdateProposalApplicationDeclined')?['body/fullName']},
\n
\nWe are sorry to inform you, that your application on the proposal \"@{outputs('GetProposalInfo')?['body/title']}\" was declined.
\n
\nBest regards,
\n@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Thesis Coordinator

", "emailMessage/From": "@parameters('Outlook From Address (uzhbf_thesisplatform_outlook_from_address_env_var)')", "emailMessage/Importance": "Normal" }, @@ -377,7 +384,7 @@ "authentication": "@parameters('$authentication')" } }, - "AccepApplicantNotification": { + "AcceptApplicantNotification": { "runAfter": { "Apply_to_each": [ "Succeeded" @@ -395,10 +402,10 @@ }, "parameters": { "emailMessage/To": "@triggerBody()?['applicantEmail']", - "emailMessage/Subject": "BF Theses - Proposal Application Accepted", - "emailMessage/Body": "

Dear @{outputs('UpdateProposalApplicationAccepted')?['body/fullName']},
\n
\nYour application to the proposal \"@{outputs('UpdateProposalMatched')?['body/title']}\", was accepted.
\nKindly get in touch with your supervisor by replying to this email within one week.
\n
\nBest regards,
\nDBF Thesis Coordinator

", + "emailMessage/Subject": "@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Theses - Proposal Application Accepted", + "emailMessage/Body": "

Dear @{outputs('UpdateProposalApplicationAccepted')?['body/fullName']},
\n
\nYour application to the proposal \"@{outputs('UpdateProposalMatched')?['body/title']}\", was accepted.
\nKindly get in touch with your supervisor by replying to this email within one week.
\n
\nBest regards,
\n@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Thesis Coordinator

", "emailMessage/From": "@parameters('Outlook From Address (uzhbf_thesisplatform_outlook_from_address_env_var)')", - "emailMessage/Cc": "@parameters('Outlook Management Inbox (uzhbf_thesisplatform_thesis_inbox_env_var)')", + "emailMessage/Cc": "@{parameters('Outlook Management Inbox (uzhbf_thesisplatform_thesis_inbox_env_var)')};@{outputs('UpdateUserProposalSupervisionStudentEmail')?['body/supervisorEmail']}", "emailMessage/ReplyTo": "@outputs('UpdateUserProposalSupervisionStudentEmail')?['body/supervisorEmail']", "emailMessage/Importance": "Normal" }, @@ -407,7 +414,7 @@ }, "Response": { "runAfter": { - "AccepApplicantNotification": [ + "AcceptApplicantNotification": [ "Succeeded" ] }, diff --git a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalApplication-3050E705-262A-EE11-BDF5-000D3A831DD0.json b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalApplication-3050E705-262A-EE11-BDF5-000D3A831DD0.json index e35d716..280b2a8 100644 --- a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalApplication-3050E705-262A-EE11-BDF5-000D3A831DD0.json +++ b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalApplication-3050E705-262A-EE11-BDF5-000D3A831DD0.json @@ -107,6 +107,13 @@ "metadata": { "schemaName": "uzhbf_thesisplatform_flow_secret_env_var" } + }, + "Department (uzhbf_thesisplatform_department_env_var)": { + "defaultValue": "DBF", + "type": "String", + "metadata": { + "schemaName": "uzhbf_thesisplatform_department_env_var" + } } }, "triggers": { @@ -400,15 +407,15 @@ "server": "default", "database": "default", "table": "[main].[proposalapplication]", - "item/id": "@guid()", - "item/statusKey": "OPEN", + "item/createdAt": "@utcNow()", "item/email": "@triggerBody()?['uzhemail']", - "item/matriculationNumber": "@triggerBody()?['matriculationnumber']", "item/fullName": "@triggerBody()?['fullname']", - "item/plannedStartAt": "@triggerBody()?['startingdate']", + "item/id": "@guid()", + "item/matriculationNumber": "@triggerBody()?['matriculationnumber']", "item/motivation": "@triggerBody()?['motivation']", + "item/plannedStartAt": "@triggerBody()?['startingdate']", "item/proposalId": "@triggerBody()?['proposalid']", - "item/createdAt": "@utcNow()", + "item/statusKey": "OPEN", "item/updatedAt": "@utcNow()" }, "authentication": "@parameters('$authentication')" @@ -434,12 +441,12 @@ "server": "default", "database": "default", "table": "[main].[applicationattachment]", + "item/createdAt": "@utcNow()", + "item/href": "@outputs('CreateSharingLinkCv')?['body/link/webUrl']", "item/id": "@guid()", "item/name": "CV", - "item/href": "@outputs('CreateSharingLinkCv')?['body/link/webUrl']", - "item/type": "application/pdf", "item/proposalApplicationId": "@outputs('PersistApplication')?['body/id']", - "item/createdAt": "@utcNow()", + "item/type": "application/pdf", "item/updatedAt": "@utcNow()" }, "authentication": "@parameters('$authentication')" @@ -465,12 +472,12 @@ "server": "default", "database": "default", "table": "[main].[applicationattachment]", + "item/createdAt": "@utcNow()", + "item/href": "@outputs('CreateSharingLinkTranscript')?['body/link/webUrl']", "item/id": "@guid()", "item/name": "Transcript", - "item/href": "@outputs('CreateSharingLinkTranscript')?['body/link/webUrl']", - "item/type": "application/pdf", "item/proposalApplicationId": "@outputs('PersistApplication')?['body/id']", - "item/createdAt": "@utcNow()", + "item/type": "application/pdf", "item/updatedAt": "@utcNow()" }, "authentication": "@parameters('$authentication')" @@ -548,7 +555,7 @@ "parameters": { "emailMessage/MailboxAddress": "@parameters('Outlook From Address (uzhbf_thesisplatform_outlook_from_address_env_var)')", "emailMessage/To": "@outputs('GetSupervisionDetails')?['body/supervisorEmail']", - "emailMessage/Subject": "DBF Theses - New Application for Proposal \"@{outputs('GetProposalDetails')?['body/title']}\"", + "emailMessage/Subject": "@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Theses - New Application for Proposal \"@{outputs('GetProposalDetails')?['body/title']}\"", "emailMessage/Body": "

Fullname: @{triggerBody()?['fullname']}
\nMatriculation Number: @{triggerBody()?['matriculationnumber']}
\nStart Date: @{triggerBody()?['startingdate']}
\nMotivation: @{triggerBody()?['motivation']}
\n
\nTranscript:
\n
@{outputs('CreateSharingLinkTranscript')?['body/link/webUrl']}
\nPersonal CV:
\n
@{outputs('CreateSharingLinkCv')?['body/link/webUrl']}

", "emailMessage/Cc": "@outputs('GetProposalDetails')?['body/ownedByUserEmail']", "emailMessage/Bcc": "@parameters('Outlook Management Inbox (uzhbf_thesisplatform_thesis_inbox_env_var)')", @@ -577,8 +584,8 @@ "parameters": { "emailMessage/MailboxAddress": "@parameters('Outlook From Address (uzhbf_thesisplatform_outlook_from_address_env_var)')", "emailMessage/To": "@triggerBody()?['uzhemail']", - "emailMessage/Subject": "BF Theses - Confirmation Mail", - "emailMessage/Body": "

Dear @{triggerBody()?['fullname']},
\n
\nThank you for applying to the following proposal: \"@{outputs('GetProposalDetails')?['body/title']}\".
\n
\nBest regards,
\nDBF Thesis Coordinator
\n
\n---
\n
\nFullname: @{triggerBody()?['fullname']}
\nMatriculation Number: @{triggerBody()?['matriculationnumber']}
\nStart Date: @{triggerBody()?['startingdate']}
\nMotivation: @{triggerBody()?['motivation']}

", + "emailMessage/Subject": "@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Theses - Confirmation Mail", + "emailMessage/Body": "

Dear @{triggerBody()?['fullname']},
\n
\nThank you for applying to the following proposal: \"@{outputs('GetProposalDetails')?['body/title']}\".
\n
\nBest regards,
\n@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Thesis Coordinator
\n
\n---
\n
\nFullname: @{triggerBody()?['fullname']}
\nMatriculation Number: @{triggerBody()?['matriculationnumber']}
\nStart Date: @{triggerBody()?['startingdate']}
\nMotivation: @{triggerBody()?['motivation']}

", "emailMessage/Bcc": "@parameters('Outlook Management Inbox (uzhbf_thesisplatform_thesis_inbox_env_var)')", "emailMessage/Importance": "Normal" }, diff --git a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalFeedback-4BF9872E-202A-EE11-BDF5-000D3A831DD0.json b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalFeedback-4BF9872E-202A-EE11-BDF5-000D3A831DD0.json index 0cc0b3d..11e811d 100644 --- a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalFeedback-4BF9872E-202A-EE11-BDF5-000D3A831DD0.json +++ b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalFeedback-4BF9872E-202A-EE11-BDF5-000D3A831DD0.json @@ -98,6 +98,13 @@ "metadata": { "schemaName": "uzhbf_thesisplatform_flow_secret_env_var" } + }, + "Department (uzhbf_thesisplatform_department_env_var)": { + "defaultValue": "DBF", + "type": "String", + "metadata": { + "schemaName": "uzhbf_thesisplatform_department_env_var" + } } }, "triggers": { @@ -592,14 +599,14 @@ "database": "default", "table": "[main].[proposal]", "id": "@triggerBody()?['proposalid']", - "item/title": "@outputs('ProposalDetails')['title']", + "item/createdAt": "@outputs('ProposalDetails')['createdAt']", "item/description": "@outputs('ProposalDetails')['description']", "item/language": "@outputs('ProposalDetails')['language']", + "item/statusKey": "MATCHED", "item/studyLevel": "@outputs('ProposalDetails')['studyLevel']", + "item/title": "@outputs('ProposalDetails')['title']", "item/topicAreaSlug": "@outputs('ProposalDetails')['topicAreaSlug']", "item/typeKey": "@outputs('ProposalDetails')['typeKey']", - "item/statusKey": "MATCHED", - "item/createdAt": "@outputs('ProposalDetails')['createdAt']", "item/updatedAt": "@utcNow()" }, "authentication": "@parameters('$authentication')" @@ -626,14 +633,14 @@ "database": "default", "table": "[main].[proposalapplication]", "id": "@triggerBody()?['proposalId']", - "item/statusKey": "ACCEPTED", + "item/createdAt": "@outputs('ApplicationDetails')['createdAt']", "item/email": "@outputs('ApplicationDetails')['email']", - "item/matriculationNumber": "@outputs('ApplicationDetails')['matriculationNumber']", "item/fullName": "@outputs('ApplicationDetails')['fullName']", - "item/plannedStartAt": "@outputs('ApplicationDetails')['plannedStartAt']", + "item/matriculationNumber": "@outputs('ApplicationDetails')['matriculationNumber']", "item/motivation": "@outputs('ApplicationDetails')['motivation']", + "item/plannedStartAt": "@outputs('ApplicationDetails')['plannedStartAt']", "item/proposalId": "@outputs('ApplicationDetails')['proposalId']", - "item/createdAt": "@outputs('ApplicationDetails')['createdAt']", + "item/statusKey": "ACCEPTED", "item/updatedAt": "@utcNow()" }, "authentication": "@parameters('$authentication')" @@ -658,8 +665,8 @@ "parameters": { "emailMessage/MailboxAddress": "@parameters('Outlook From Address (uzhbf_thesisplatform_outlook_from_address_env_var)')", "emailMessage/To": "@{outputs('ApplicationDetails')['email']};@{triggerBody()?['supervisorEmail']}", - "emailMessage/Subject": "DBF Theses - Your Proposal has been accepted", - "emailMessage/Body": "

Dear @{outputs('ApplicationDetails')['fullName']},
\n
\nYour proposal on \"@{outputs('ProposalDetails')['title']}\" has been accepted by a supervisor. Please get in touch with your supervisor \"@{triggerBody()?['supervisorEmail']}\" to get started with the thesis process (just reply to this email).
\n
\nBest regards,
\nDBF Thesis Coordinator
\n
\n---
\n
\nMessage of your supervisor: @{triggerBody()?['comment']}

", + "emailMessage/Subject": "@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Theses - Your Proposal has been accepted", + "emailMessage/Body": "

Dear @{outputs('ApplicationDetails')['fullName']},
\n
\nYour proposal on \"@{outputs('ProposalDetails')['title']}\" has been accepted by a supervisor. Please get in touch with your supervisor \"@{triggerBody()?['supervisorEmail']}\" to get started with the thesis process (just reply to this email).
\n
\nBest regards,
\n@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Thesis Coordinator
\n
\n---
\n
\nMessage of your supervisor: @{triggerBody()?['comment']}

", "emailMessage/Cc": "@outputs('CreateAcceptSupervision')?['body/supervisorEmail']", "emailMessage/Bcc": "@parameters('Outlook Management Inbox (uzhbf_thesisplatform_thesis_inbox_env_var)')", "emailMessage/ReplyTo": "@triggerBody()?['supervisorEmail']", @@ -729,9 +736,9 @@ "server": "default", "database": "default", "table": "[main].[userproposalsupervision]", + "item/createdAt": "@utcNow()", "item/id": "@triggerBody()?['proposalId']", "item/proposalId": "@triggerBody()?['proposalId']", - "item/createdAt": "@utcNow()", "item/updatedAt": "@utcNow()", "item/supervisorEmail": "@triggerBody()?['supervisorEmail']" }, @@ -777,14 +784,14 @@ "database": "default", "table": "[main].[proposal]", "id": "@triggerBody()?['proposalId']", - "item/title": "@outputs('ProposalDetails')['title']", + "item/createdAt": "@outputs('ProposalDetails')['createdAt']", "item/description": "@outputs('ProposalDetails')['description']", "item/language": "@outputs('ProposalDetails')['language']", + "item/statusKey": "MATCHED_TENTATIVE", "item/studyLevel": "@outputs('ProposalDetails')['studyLevel']", + "item/title": "@outputs('ProposalDetails')['title']", "item/topicAreaSlug": "@outputs('ProposalDetails')['topicAreaSlug']", "item/typeKey": "@outputs('ProposalDetails')['typeKey']", - "item/statusKey": "MATCHED_TENTATIVE", - "item/createdAt": "@outputs('ProposalDetails')['createdAt']", "item/updatedAt": "@utcNow()" }, "authentication": "@parameters('$authentication')" @@ -810,9 +817,9 @@ "server": "default", "database": "default", "table": "[main].[userproposalsupervision]", + "item/createdAt": "@utcNow()", "item/id": "@triggerBody()?['proposalId']", "item/proposalId": "@triggerBody()?['proposalId']", - "item/createdAt": "@utcNow()", "item/updatedAt": "@utcNow()", "item/supervisorEmail": "@triggerBody()?['supervisorEmail']" }, @@ -840,14 +847,14 @@ "database": "default", "table": "[main].[proposalapplication]", "id": "@triggerBody()?['proposalId']", - "item/statusKey": "ACCEPTED_TENTATIVE", + "item/createdAt": "@outputs('ApplicationDetails')['createdAt']", "item/email": "@outputs('ApplicationDetails')['email']", - "item/matriculationNumber": "@outputs('ApplicationDetails')['matriculationNumber']", "item/fullName": "@outputs('ApplicationDetails')['fullName']", - "item/plannedStartAt": "@outputs('ApplicationDetails')['plannedStartAt']", + "item/matriculationNumber": "@outputs('ApplicationDetails')['matriculationNumber']", "item/motivation": "@outputs('ApplicationDetails')['motivation']", + "item/plannedStartAt": "@outputs('ApplicationDetails')['plannedStartAt']", "item/proposalId": "@outputs('ApplicationDetails')['proposalId']", - "item/createdAt": "@outputs('ApplicationDetails')['createdAt']", + "item/statusKey": "ACCEPTED_TENTATIVE", "item/updatedAt": "@utcNow()" }, "authentication": "@parameters('$authentication')" @@ -872,8 +879,8 @@ "parameters": { "emailMessage/MailboxAddress": "@parameters('Outlook From Address (uzhbf_thesisplatform_outlook_from_address_env_var)')", "emailMessage/To": "@{outputs('ApplicationDetails')['email']};@{triggerBody()?['supervisorEmail']}", - "emailMessage/Subject": "DBF Theses - Your Proposal has attracted interest", - "emailMessage/Body": "

Dear @{outputs('ApplicationDetails')['fullName']},
\n
\nYour proposal on \"@{outputs('ProposalDetails')['title']}\" has attracted the interest of a supervisor on the condition that the proposal is improved in certain areas. Please review the supervisor feedback, adjust your proposal as needed, and get in touch with your potential supervisor \"@{triggerBody()?['supervisorEmail']}\" (just reply to this email).
\n
\nBest regards,
\nDBF Thesis Coordinator
\n
\n---
\n
\nFeedback of your potential supervisor: @{triggerBody()?['comment']}

", + "emailMessage/Subject": "@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Theses - Your Proposal has attracted interest", + "emailMessage/Body": "

Dear @{outputs('ApplicationDetails')['fullName']},
\n
\nYour proposal on \"@{outputs('ProposalDetails')['title']}\" has attracted the interest of a supervisor on the condition that the proposal is improved in certain areas. Please review the supervisor feedback, adjust your proposal as needed, and get in touch with your potential supervisor \"@{triggerBody()?['supervisorEmail']}\" (just reply to this email).
\n
\nBest regards,
\n@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Thesis Coordinator
\n
\n---
\n
\nFeedback of your potential supervisor: @{triggerBody()?['comment']}

", "emailMessage/Cc": "@triggerBody()?['supervisorEmail']", "emailMessage/Bcc": "@parameters('Outlook Management Inbox (uzhbf_thesisplatform_thesis_inbox_env_var)')", "emailMessage/ReplyTo": "@triggerBody()?['supervisorEmail']", @@ -946,14 +953,14 @@ "server": "default", "database": "default", "table": "[main].[userproposalfeedback]", + "item/comment": "@triggerBody()?['comment']", + "item/createdAt": "@utcNow()", "item/id": "@guid()", "item/proposalId": "@triggerBody()?['proposalId']", - "item/userEmail": "@triggerBody()?['supervisorEmail']", - "item/typeKey": "DECLINED_@{triggerBody()?['reason']}", "item/reason": "@triggerBody()?['reason']", - "item/comment": "@triggerBody()?['comment']", - "item/createdAt": "@utcNow()", - "item/updatedAt": "@utcNow()" + "item/typeKey": "DECLINED_@{triggerBody()?['reason']}", + "item/updatedAt": "@utcNow()", + "item/userEmail": "@triggerBody()?['supervisorEmail']" }, "authentication": "@parameters('$authentication')" } @@ -977,7 +984,7 @@ "parameters": { "emailMessage/MailboxAddress": "@parameters('Outlook From Address (uzhbf_thesisplatform_outlook_from_address_env_var)')", "emailMessage/To": "@parameters('Outlook Management Inbox (uzhbf_thesisplatform_thesis_inbox_env_var)')", - "emailMessage/Subject": "DBF Theses - Proposal declined (@{outputs('ProposalDetails')['title']})", + "emailMessage/Subject": "@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Theses - Proposal declined (@{outputs('ProposalDetails')['title']})", "emailMessage/Body": "

The proposal \"@{outputs('ProposalDetails')['title']}\" has been declined by \"@{triggerBody()?['supervisorEmail']}\".
\n
\nReason: @{triggerBody()?['reason']}
\nComment: @{triggerBody()?['comment']}

", "emailMessage/Importance": "Normal" }, @@ -1051,7 +1058,7 @@ "parameters": { "emailMessage/MailboxAddress": "@parameters('Outlook From Address (uzhbf_thesisplatform_outlook_from_address_env_var)')", "emailMessage/To": "@parameters('Outlook Management Inbox (uzhbf_thesisplatform_thesis_inbox_env_var)')", - "emailMessage/Subject": "DBF Theses - Proposal rejected (@{outputs('ProposalDetails')['title']})", + "emailMessage/Subject": "@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Theses - Proposal rejected (@{outputs('ProposalDetails')['title']})", "emailMessage/Body": "

The proposal \"@{outputs('ProposalDetails')['title']}\" has been rejected by \"@{triggerBody()?['supervisorEmail']}\".
\n
\nReason: @{triggerBody()?['reason']}
\nComment: @{triggerBody()?['comment']}

", "emailMessage/Importance": "Normal" }, @@ -1145,14 +1152,14 @@ "database": "default", "table": "[main].[proposal]", "id": "@triggerBody()?['proposalId']", - "item/title": "@outputs('ProposalDetails')['title']", + "item/createdAt": "@outputs('ProposalDetails')['createdAt']", "item/description": "@outputs('ProposalDetails')['description']", "item/language": "@outputs('ProposalDetails')['language']", + "item/statusKey": "OPEN", "item/studyLevel": "@outputs('ProposalDetails')['studyLevel']", + "item/title": "@outputs('ProposalDetails')['title']", "item/topicAreaSlug": "@outputs('ProposalDetails')['topicAreaSlug']", "item/typeKey": "@outputs('ProposalDetails')['typeKey']", - "item/statusKey": "OPEN", - "item/createdAt": "@outputs('ProposalDetails')['createdAt']", "item/updatedAt": "@utcNow()" }, "authentication": "@parameters('$authentication')" @@ -1179,14 +1186,14 @@ "database": "default", "table": "[main].[proposalapplication]", "id": "@triggerBody()?['proposalId']", - "item/statusKey": "OPEN", + "item/createdAt": "@outputs('ApplicationDetails')['createdAt']", "item/email": "@outputs('ApplicationDetails')['email']", - "item/matriculationNumber": "@outputs('ApplicationDetails')['matriculationNumber']", "item/fullName": "@outputs('ApplicationDetails')['fullName']", - "item/plannedStartAt": "@outputs('ApplicationDetails')['plannedStartAt']", + "item/matriculationNumber": "@outputs('ApplicationDetails')['matriculationNumber']", "item/motivation": "@outputs('ApplicationDetails')['motivation']", + "item/plannedStartAt": "@outputs('ApplicationDetails')['plannedStartAt']", "item/proposalId": "@triggerBody()?['proposalId']", - "item/createdAt": "@outputs('ApplicationDetails')['createdAt']", + "item/statusKey": "OPEN", "item/updatedAt": "@utcNow()" }, "authentication": "@parameters('$authentication')" @@ -1225,14 +1232,14 @@ "server": "default", "database": "default", "table": "[main].[userproposalfeedback]", + "item/comment": "@triggerBody()?['comment']", + "item/createdAt": "@utcNow()", "item/id": "@guid()", "item/proposalId": "@triggerBody()?['proposalId']", - "item/userEmail": "@triggerBody()?['supervisorEmail']", - "item/typeKey": "REJECTED_@{triggerBody()?['reason']}", "item/reason": "@triggerBody()?['reason']", - "item/comment": "@triggerBody()?['comment']", - "item/createdAt": "@utcNow()", - "item/updatedAt": "@utcNow()" + "item/typeKey": "REJECTED_@{triggerBody()?['reason']}", + "item/updatedAt": "@utcNow()", + "item/userEmail": "@triggerBody()?['supervisorEmail']" }, "authentication": "@parameters('$authentication')" } diff --git a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalPosting-F3E0B1EB-152A-EE11-BDF5-000D3A831DD0.json b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalPosting-F3E0B1EB-152A-EE11-BDF5-000D3A831DD0.json index c169453..516aaef 100644 --- a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalPosting-F3E0B1EB-152A-EE11-BDF5-000D3A831DD0.json +++ b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalPosting-F3E0B1EB-152A-EE11-BDF5-000D3A831DD0.json @@ -28,15 +28,6 @@ "name": "shared_sharepointonline" } }, - "shared_onedriveforbusiness": { - "runtimeSource": "embedded", - "connection": { - "connectionReferenceLogicalName": "uzhbf_thesisplatform_oneDrive_ref" - }, - "api": { - "name": "shared_onedriveforbusiness" - } - }, "shared_office365_1": { "runtimeSource": "embedded", "connection": { @@ -60,14 +51,14 @@ "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", "contentVersion": "1.0.0.0", "parameters": { - "$connections": { - "defaultValue": {}, - "type": "Object" - }, "$authentication": { "defaultValue": {}, "type": "SecureObject" }, + "$connections": { + "defaultValue": {}, + "type": "Object" + }, "Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)": { "defaultValue": "https://uzh.sharepoint.com/sites/UZHBFThesisPlatformDEV", "type": "String", @@ -76,7 +67,7 @@ } }, "Publish Thesis Proposal Forms Id (uzhbf_thesisplatform_publish_thesis_proposal_forms_id_env_var)": { - "defaultValue": "2zjkx2LkIkypCsNYsWmAs1QgPDYXFIJFoTn3sHbg3YFUOFBGVEI2SlY2WEVQRUc0VUFIRUdKNDE5QS4u", + "defaultValue": "2zjkx2LkIkypCsNYsWmAs0LFaOQJoXlHrbsK8Pa1si9UOFBGVEI2SlY2WEVQRUc0VUFIRUdKNDE5QSQlQCN0PWcu", "type": "String", "metadata": { "schemaName": "uzhbf_thesisplatform_publish_thesis_proposal_forms_id_env_var" @@ -123,6 +114,20 @@ "metadata": { "schemaName": "uzhbf_thesisplatform_email_failure_env_var" } + }, + "Department (uzhbf_thesisplatform_department_env_var)": { + "defaultValue": "DBF", + "type": "String", + "metadata": { + "schemaName": "uzhbf_thesisplatform_department_env_var" + } + }, + "Root URL (uzhbf_thesisplatform_root_url_env_var)": { + "defaultValue": "http://localhost:3000", + "type": "String", + "metadata": { + "schemaName": "uzhbf_thesisplatform_root_url_env_var" + } } }, "triggers": { @@ -133,15 +138,14 @@ }, "type": "OpenApiConnectionWebhook", "inputs": { - "host": { - "connectionName": "shared_microsoftforms", - "operationId": "CreateFormWebhook", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_microsoftforms" - }, "parameters": { "form_id": "@parameters('Publish Thesis Proposal Forms Id (uzhbf_thesisplatform_publish_thesis_proposal_forms_id_env_var)')" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_microsoftforms", + "operationId": "CreateFormWebhook", + "connectionName": "shared_microsoftforms" + } } } }, @@ -221,22 +225,20 @@ "Try": { "actions": { "GetResponseDetails": { - "runAfter": {}, "metadata": { "operationMetadataId": "a4ebfb3a-cca3-40f0-ae3c-bcc1463b605d" }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_microsoftforms", - "operationId": "GetFormResponseById", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_microsoftforms" - }, "parameters": { "form_id": "@parameters('Publish Thesis Proposal Forms Id (uzhbf_thesisplatform_publish_thesis_proposal_forms_id_env_var)')", "response_id": "@triggerOutputs()?['body/resourceData/responseId']" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_microsoftforms", + "operationId": "GetFormResponseById", + "connectionName": "shared_microsoftforms" + } } }, "SetProposalId": { @@ -265,18 +267,17 @@ }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_azuremysql", - "operationId": "GetItems", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql" - }, "parameters": { "server": "default", "database": "default", "table": "[main].[user]", "$filter": "email eq '@{outputs('GetResponseDetails')?['body/responder']}'" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql", + "operationId": "GetItems", + "connectionName": "shared_azuremysql" + } } }, "IfUserExists": { @@ -289,29 +290,27 @@ "else": { "actions": { "PersistNewUser": { - "runAfter": {}, "metadata": { "operationMetadataId": "5e447837-c6a0-4b84-bd3d-46efd8c4f5ba" }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_azuremysql", - "operationId": "PostItem", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql" - }, "parameters": { "server": "default", "database": "default", "table": "[main].[user]", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", + "item/email": "@outputs('GetResponseDetails')?['body/responder']", "item/id": "@guid()", "item/name": "Anonymous", - "item/email": "@outputs('GetResponseDetails')?['body/responder']", "item/role": "SUPERVISOR", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql", + "operationId": "PostItem", + "connectionName": "shared_azuremysql" + } } } } @@ -338,18 +337,17 @@ }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_sharepointonline", - "operationId": "GetItems", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline" - }, "parameters": { "dataset": "@parameters('Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)')", "table": "@parameters('Supervisors List Name (uzhbf_thesisplatform_supervisors_list_name_env_var)')", - "$filter": "field_1 eq '@{outputs('GetResponseDetails')?['body/ra234958191ee49a28a4fc68389dd0ce2']}'", + "$filter": "Name eq '@{outputs('GetResponseDetails')?['body/ra234958191ee49a28a4fc68389dd0ce2']}'", "$top": 1 }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline", + "operationId": "GetItems", + "connectionName": "shared_sharepointonline" + } } }, "SetSupervisorEmail": { @@ -364,13 +362,12 @@ "type": "SetVariable", "inputs": { "name": "SupervisorEmail", - "value": "@{first(body('GetSupervisors')['value'])['Title']}" + "value": "@{first(body('GetSupervisors')['value'])['Email']}" } }, "IsProposalPdfAttached": { "actions": { "ParseProposalPDF": { - "runAfter": {}, "metadata": { "operationMetadataId": "fa91e1d7-7937-4285-8fc3-677cb8bf6a7c" }, @@ -436,32 +433,9 @@ "value": "@{first(body('ParseProposalPDF'))?['name']}" } }, - "GetFileUploadProposalPDF": { - "runAfter": { - "SetProposalPdfName": [ - "Succeeded" - ] - }, - "metadata": { - "operationMetadataId": "339b9272-47e6-4510-8a05-dad3e41ab01d" - }, - "type": "OpenApiConnection", - "inputs": { - "host": { - "connectionName": "shared_onedriveforbusiness", - "operationId": "GetFileContentByPath", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_onedriveforbusiness" - }, - "parameters": { - "path": "/Apps/Microsoft Forms/Publish Thesis Proposal/Research Proposal (PDF)/@{variables('ProposalPDFName')}", - "inferContentType": true - }, - "authentication": "@parameters('$authentication')" - } - }, "PersistProposalPDF": { "runAfter": { - "GetFileUploadProposalPDF": [ + "GetProposalFileContentUsingPath": [ "Succeeded" ] }, @@ -470,18 +444,17 @@ }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_sharepointonline", - "operationId": "CreateFile", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline" - }, "parameters": { "dataset": "@parameters('Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)')", "folderPath": "/@{parameters('Proposals Document Library Name (uzhbf_thesisplatform_proposals_document_library_name_env_var)')}/Proposals/@{outputs('GetResponseDetails')?['body/responder']}", "name": "@{variables('ProposalId')}.pdf", - "body": "@body('GetFileUploadProposalPDF')" + "body": "@body('GetProposalFileContentUsingPath')" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline", + "operationId": "CreateFile", + "connectionName": "shared_sharepointonline" + } }, "runtimeConfiguration": { "contentTransfer": { @@ -500,11 +473,6 @@ }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_sharepointonline", - "operationId": "CreateSharingLink", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline" - }, "parameters": { "dataset": "@parameters('Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)')", "table": "@parameters('Proposals Document Library Name (uzhbf_thesisplatform_proposals_document_library_name_env_var)')", @@ -512,7 +480,11 @@ "permission/type": "view", "permission/scope": "organization" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline", + "operationId": "CreateSharingLink", + "connectionName": "shared_sharepointonline" + } } }, "PersistProposalAttachment": { @@ -526,24 +498,46 @@ }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_azuremysql", - "operationId": "PostItem", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql" - }, "parameters": { "server": "default", "database": "default", "table": "[main].[proposalattachment]", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", + "item/href": "@outputs('CreateShareLinkProposalPDF')?['body/link/webUrl']", "item/id": "@{guid()}", "item/name": "Proposal", - "item/href": "@outputs('CreateShareLinkProposalPDF')?['body/link/webUrl']", - "item/type": "@outputs('PersistProposalPDF')?['body/MediaType']", "item/proposalId": "@variables('ProposalId')", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", + "item/type": "@outputs('PersistProposalPDF')?['body/MediaType']", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql", + "operationId": "PostItem", + "connectionName": "shared_azuremysql" + } + } + }, + "GetProposalFileContentUsingPath": { + "runAfter": { + "SetProposalPdfName": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "6a4d4b80-363c-4fa2-987a-c6ffe1eb477d" + }, + "type": "OpenApiConnection", + "inputs": { + "parameters": { + "dataset": "@parameters('Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)')", + "path": "Shared Documents/Apps/Microsoft Forms/Publish Thesis Proposal/Research Proposal (PDF)/@{variables('ProposalPDFName')}", + "inferContentType": true + }, + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline", + "operationId": "GetFileContentByPath", + "connectionName": "shared_sharepointonline" + } } } }, @@ -552,6 +546,9 @@ "Succeeded" ] }, + "else": { + "actions": {} + }, "expression": { "not": { "equals": [ @@ -579,11 +576,6 @@ }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_azuremysql", - "operationId": "GetItems", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql" - }, "parameters": { "server": "default", "database": "default", @@ -591,7 +583,11 @@ "$filter": "Email eq '@{variables('SupervisorEmail')}'", "$top": 1 }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql", + "operationId": "GetItems", + "connectionName": "shared_azuremysql" + } } }, "IfSupervisorExists": { @@ -604,29 +600,27 @@ "else": { "actions": { "PersistNewSupervisor": { - "runAfter": {}, "metadata": { "operationMetadataId": "0bc44550-c738-4962-afd9-8944446555e6" }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_azuremysql", - "operationId": "PostItem", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql" - }, "parameters": { "server": "default", "database": "default", "table": "[main].[user]", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", + "item/email": "@variables('SupervisorEmail')", "item/id": "@guid()", "item/name": "@outputs('GetResponseDetails')?['body/ra234958191ee49a28a4fc68389dd0ce2']", - "item/email": "@variables('SupervisorEmail')", "item/role": "SUPERVISOR", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql", + "operationId": "PostItem", + "connectionName": "shared_azuremysql" + } } } } @@ -653,29 +647,28 @@ }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_azuremysql", - "operationId": "PostItem", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql" - }, "parameters": { "server": "default", "database": "default", "table": "[main].[proposal]", - "item/id": "@variables('ProposalId')", - "item/title": "@outputs('GetResponseDetails')?['body/r2b3875d21899474a988a886e0d5b3621']", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/description": "@outputs('GetResponseDetails')?['body/rc6188bd68e4d4ab19206e5e06dd703be']", + "item/id": "@variables('ProposalId')", "item/language": "@outputs('GetResponseDetails')?['body/rb26c844ff536435a9abf2fae9d962082']", + "item/statusKey": "OPEN", "item/studyLevel": "@outputs('GetResponseDetails')?['body/r93c920c31aaf4b8f8ca5e55bb9a0bf87']", + "item/title": "@outputs('GetResponseDetails')?['body/r2b3875d21899474a988a886e0d5b3621']", "item/topicAreaSlug": "@replace(toLower(variables('TopicArea')),' ','_')", "item/typeKey": "SUPERVISOR", - "item/statusKey": "OPEN", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']", - "item/timeFrame": "@outputs('GetResponseDetails')?['body/r564b7a6cc5bf42ffb900990d26246c80']", - "item/ownedByUserEmail": "@outputs('GetResponseDetails')?['body/responder']" + "item/ownedByUserEmail": "@outputs('GetResponseDetails')?['body/responder']", + "item/timeFrame": "@outputs('GetResponseDetails')?['body/r564b7a6cc5bf42ffb900990d26246c80']" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql", + "operationId": "PostItem", + "connectionName": "shared_azuremysql" + } } }, "PersistProposalSupervision": { @@ -689,31 +682,33 @@ }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_azuremysql", - "operationId": "PostItem", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql" - }, "parameters": { "server": "default", "database": "default", "table": "[main].[userproposalsupervision]", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/id": "@variables('ProposalId')", "item/proposalId": "@variables('ProposalId')", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']", - "item/supervisorEmail": "@variables('SupervisorEmail')", - "item/studyLevel": "@outputs('GetResponseDetails')?['body/r93c920c31aaf4b8f8ca5e55bb9a0bf87']" + "item/studyLevel": "@outputs('GetResponseDetails')?['body/r93c920c31aaf4b8f8ca5e55bb9a0bf87']", + "item/supervisorEmail": "@variables('SupervisorEmail')" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql", + "operationId": "PostItem", + "connectionName": "shared_azuremysql" + } } }, "SupervisorConfirmationEmail": { "runAfter": { + "PersistProposalSupervision": [ + "Succeeded" + ], "IsProposalPdfAttached": [ "Succeeded" ], - "PersistProposalSupervision": [ + "HasFurtherAttachments": [ "Succeeded" ] }, @@ -722,22 +717,21 @@ }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_office365_1", - "operationId": "SharedMailboxSendEmailV2", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_office365" - }, "parameters": { "emailMessage/MailboxAddress": "@parameters('Outlook From Address (uzhbf_thesisplatform_outlook_from_address_env_var)')", "emailMessage/To": "@variables('SupervisorEmail')", - "emailMessage/Subject": "DBF Theses - Your Proposal was posted", - "emailMessage/Body": "

Your proposal on \"@{outputs('GetResponseDetails')?['body/r2b3875d21899474a988a886e0d5b3621']}\" was posted on the DBF Thesis Platform. You will be notified as soon as applications are received.
\n
\nThe proposal is visible on https://theses.bf.uzh.ch/?supervisor=true&proposalId=@{variables('ProposalId')}.
\n
\nIf you have any further remarks, please contact the DBF Thesis Coordinator by replying to this email.
\n
\nBest regards,
\nDBF Thesis Coordinator

", + "emailMessage/Subject": "@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Theses - Your Proposal was posted", + "emailMessage/Body": "

Your proposal on \"@{outputs('GetResponseDetails')?['body/r2b3875d21899474a988a886e0d5b3621']}\" was posted on the @{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Thesis Platform. You will be notified as soon as applications are received.
\n
\nThe proposal is visible on @{parameters('Root URL (uzhbf_thesisplatform_root_url_env_var)')}/@{variables('ProposalId')}.
\n
\nIf you have any further remarks, please contact the @{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Thesis Coordinator by replying to this email.
\n
\nBest regards,
\n@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Thesis Coordinator

", "emailMessage/Cc": "@outputs('GetResponseDetails')?['body/responder']", "emailMessage/Bcc": "@parameters('Outlook Management Inbox (uzhbf_thesisplatform_thesis_inbox_env_var)')", "emailMessage/ReplyTo": "@parameters('Outlook Management Inbox (uzhbf_thesisplatform_thesis_inbox_env_var)')", "emailMessage/Importance": "Normal" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_office365", + "operationId": "SharedMailboxSendEmailV2", + "connectionName": "shared_office365_1" + } } }, "SetTopicArea": { @@ -754,6 +748,221 @@ "name": "TopicArea", "value": "@outputs('GetResponseDetails')?['body/r2a41d1ed540f418caa89f10a35cdb069']" } + }, + "HasFurtherAttachments": { + "actions": { + "ApplyToEach": { + "foreach": "@body('ParseJSON')", + "actions": { + "GetLinkToFile": { + "metadata": { + "operationMetadataId": "0e847db9-e416-4943-b305-529db20f62cb" + }, + "type": "Compose", + "inputs": "@items('ApplyToEach')['link']" + }, + "GetFileName": { + "runAfter": { + "GetLinkToFile": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "fad18ee5-cd8e-4dd8-aaf2-883784aac189" + }, + "type": "Compose", + "inputs": "@items('ApplyToEach')['name']" + }, + "GetFurtherFileContentUsingPath": { + "runAfter": { + "GetFileName": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "6a4d4b80-363c-4fa2-987a-c6ffe1eb477d" + }, + "type": "OpenApiConnection", + "inputs": { + "parameters": { + "dataset": "@parameters('Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)')", + "path": "Shared Documents/Apps/Microsoft Forms/Publish Thesis Proposal/Further Attachments/@{outputs('GetFileName')}", + "inferContentType": true + }, + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline", + "operationId": "GetFileContentByPath", + "connectionName": "shared_sharepointonline" + } + } + }, + "PersistAdditionalFile": { + "runAfter": { + "GetFurtherFileContentUsingPath": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "73d10613-2f21-405c-94f2-a864355e8d60" + }, + "type": "OpenApiConnection", + "inputs": { + "parameters": { + "dataset": "@parameters('Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)')", + "folderPath": "/@{parameters('Proposals Document Library Name (uzhbf_thesisplatform_proposals_document_library_name_env_var)')}/Proposals/@{outputs('GetResponseDetails')?['body/responder']}", + "name": "@{variables('ProposalId')}_@{outputs('GetFileName')}", + "body": "@body('GetFurtherFileContentUsingPath')" + }, + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline", + "operationId": "CreateFile", + "connectionName": "shared_sharepointonline" + } + }, + "runtimeConfiguration": { + "contentTransfer": { + "transferMode": "Chunked" + } + } + }, + "CreateShareLinkAttachment": { + "runAfter": { + "PersistAdditionalFile": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "c63fa1e6-f889-4076-b4d1-47638b03d785" + }, + "type": "OpenApiConnection", + "inputs": { + "parameters": { + "dataset": "@parameters('Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)')", + "table": "@parameters('Proposals Document Library Name (uzhbf_thesisplatform_proposals_document_library_name_env_var)')", + "id": "@outputs('PersistAdditionalFile')?['body/ItemId']", + "permission/type": "view", + "permission/scope": "organization" + }, + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline", + "operationId": "CreateSharingLink", + "connectionName": "shared_sharepointonline" + } + } + }, + "PersistFurtherAttachment": { + "runAfter": { + "CreateShareLinkAttachment": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "2e44e2bf-bb36-4238-8ab8-7804f6a6725d" + }, + "type": "OpenApiConnection", + "inputs": { + "parameters": { + "server": "default", + "database": "default", + "table": "[main].[proposalattachment]", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", + "item/href": "@outputs('CreateShareLinkAttachment')?['body/link/webUrl']", + "item/id": "@{guid()}", + "item/name": "Attachment", + "item/proposalId": "@variables('ProposalId')", + "item/type": "@outputs('PersistAdditionalFile')?['body/MediaType']", + "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" + }, + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql", + "operationId": "PostItem", + "connectionName": "shared_azuremysql" + } + } + } + }, + "runAfter": { + "ParseJSON": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "c1a920f2-cb46-419f-ad59-992d59f90e69" + }, + "type": "Foreach" + }, + "ParseJSON": { + "metadata": { + "operationMetadataId": "82579673-fcb0-46ba-85f7-2f3ceef9100f" + }, + "type": "ParseJson", + "inputs": { + "content": "@outputs('GetResponseDetails')?['body/r0ef08ac303644c3982b9c360d95d0025']", + "schema": { + "items": { + "properties": { + "driveId": { + "type": "string" + }, + "id": { + "type": "string" + }, + "link": { + "type": "string" + }, + "name": { + "type": "string" + }, + "referenceId": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "status": { + "type": "integer" + }, + "type": {}, + "uploadSessionUrl": {} + }, + "required": [ + "name", + "link", + "id", + "type", + "size", + "referenceId", + "driveId", + "status", + "uploadSessionUrl" + ], + "type": "object" + }, + "type": "array" + } + } + } + }, + "runAfter": { + "SetProposalId": [ + "Succeeded" + ] + }, + "else": { + "actions": {} + }, + "expression": { + "not": { + "equals": [ + "@outputs('GetResponseDetails')?['body/r0ef08ac303644c3982b9c360d95d0025']", + "" + ] + } + }, + "metadata": { + "operationMetadataId": "5c34f61b-22b4-4ea3-9b2e-1dc34152a758" + }, + "type": "If" } }, "runAfter": { @@ -769,7 +978,6 @@ "Catch": { "actions": { "FilterForFailedOrTimedOutStatus": { - "runAfter": {}, "metadata": { "operationMetadataId": "ca1bedd8-7555-4a99-a290-1c22c2e6e229" }, @@ -837,17 +1045,16 @@ }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_sendmail-2", - "operationId": "SendEmailV3", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_sendmail" - }, "parameters": { "request/to": "@{parameters('Email Failure Notification (uzhbf_thesisplatform_email_failure_env_var)')};", "request/subject": "(@{parameters('Environment (uzhbf_thesisplatform_environment_env_var)')}) Failure in UZH BF Thesis Platform - Thesis Proposal Posting", "request/text": "

@{body('CreateHtmlTable')}

" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_sendmail", + "operationId": "SendEmailV3", + "connectionName": "shared_sendmail-2" + } } } }, @@ -864,7 +1071,7 @@ } } }, - "templateName": "" + "templateName": null }, "schemaVersion": "1.0.0.0" } \ No newline at end of file diff --git a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalSubmission-D12D741B-A027-EE11-9966-000D3A8321BD.json b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalSubmission-D12D741B-A027-EE11-9966-000D3A8321BD.json index 1d3fa88..f4192be 100644 --- a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalSubmission-D12D741B-A027-EE11-9966-000D3A8321BD.json +++ b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalSubmission-D12D741B-A027-EE11-9966-000D3A8321BD.json @@ -28,13 +28,13 @@ "name": "shared_azuremysql" } }, - "shared_onedriveforbusiness_1": { + "shared_sharepointonline": { "runtimeSource": "embedded", "connection": { - "connectionReferenceLogicalName": "uzhbf_thesisplatform_oneDrive_ref" + "connectionReferenceLogicalName": "uzhbf_thesisplatform_sharePoint_ref" }, "api": { - "name": "shared_onedriveforbusiness" + "name": "shared_sharepointonline" } }, "shared_office365_1": { @@ -60,14 +60,14 @@ "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", "contentVersion": "1.0.0.0", "parameters": { - "$connections": { - "defaultValue": {}, - "type": "Object" - }, "$authentication": { "defaultValue": {}, "type": "SecureObject" }, + "$connections": { + "defaultValue": {}, + "type": "Object" + }, "Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)": { "defaultValue": "https://uzh.sharepoint.com/sites/UZHBFThesisPlatformDEV", "type": "String", @@ -76,7 +76,7 @@ } }, "Submit Thesis Proposal Forms Id (uzhbf_thesisplatform_submit_thesis_proposal_forms_id_env_var)": { - "defaultValue": "2zjkx2LkIkypCsNYsWmAs1QgPDYXFIJFoTn3sHbg3YFURUhYTFNWUUdTT0lVUFRCVkJUVEsyWTdBMS4u", + "defaultValue": "2zjkx2LkIkypCsNYsWmAs0LFaOQJoXlHrbsK8Pa1si9URUhYTFNWUUdTT0lVUFRCVkJUVEsyWTdBMSQlQCN0PWcu", "type": "String", "metadata": { "schemaName": "uzhbf_thesisplatform_submit_thesis_proposal_forms_id_env_var" @@ -144,6 +144,13 @@ "metadata": { "schemaName": "uzhbf_thesisplatform_flow_secret_env_var" } + }, + "Department (uzhbf_thesisplatform_department_env_var)": { + "defaultValue": "DBF", + "type": "String", + "metadata": { + "schemaName": "uzhbf_thesisplatform_department_env_var" + } } }, "triggers": { @@ -154,15 +161,14 @@ }, "type": "OpenApiConnectionWebhook", "inputs": { - "host": { - "connectionName": "shared_microsoftforms", - "operationId": "CreateFormWebhook", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_microsoftforms" - }, "parameters": { "form_id": "@parameters('Submit Thesis Proposal Forms Id (uzhbf_thesisplatform_submit_thesis_proposal_forms_id_env_var)')" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_microsoftforms", + "operationId": "CreateFormWebhook", + "connectionName": "shared_microsoftforms" + } } } }, @@ -318,22 +324,20 @@ "Try": { "actions": { "GetResponseDetails": { - "runAfter": {}, "metadata": { "operationMetadataId": "d7a6dd06-5c53-41d1-966b-2d312f30fe3a" }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_microsoftforms", - "operationId": "GetFormResponseById", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_microsoftforms" - }, "parameters": { "form_id": "@parameters('Submit Thesis Proposal Forms Id (uzhbf_thesisplatform_submit_thesis_proposal_forms_id_env_var)')", "response_id": "@triggerOutputs()?['body/resourceData/responseId']" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_microsoftforms", + "operationId": "GetFormResponseById", + "connectionName": "shared_microsoftforms" + } } }, "SetProposalId": { @@ -392,16 +396,15 @@ }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_sharepointonline_1", - "operationId": "GetItems", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline" - }, "parameters": { "dataset": "@parameters('Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)')", "table": "@parameters('Supervisors List Name (uzhbf_thesisplatform_supervisors_list_name_env_var)')" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline", + "operationId": "GetItems", + "connectionName": "shared_sharepointonline_1" + } } }, "SetTopicArea": { @@ -431,27 +434,26 @@ }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_azuremysql", - "operationId": "PostItem", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql" - }, "parameters": { "server": "default", "database": "default", "table": "[main].[proposal]", - "item/id": "@variables('ProposalId')", - "item/title": "@outputs('GetResponseDetails')?['body/r7240915136fb41e8b884a045d08f39ce']", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/description": "@outputs('GetResponseDetails')?['body/r7425856917f245efbd0c4cb2a7f0c434']", + "item/id": "@variables('ProposalId')", "item/language": "@outputs('GetResponseDetails')?['body/r8b7f3f4a7502459598d155e9b31eb25e']", + "item/statusKey": "OPEN", "item/studyLevel": "@outputs('GetResponseDetails')?['body/rc797ecd1491b44a0ac091174abbac9f6']", + "item/title": "@outputs('GetResponseDetails')?['body/r7240915136fb41e8b884a045d08f39ce']", "item/topicAreaSlug": "@replace(toLower(variables('TopicArea')),' ','_')", "item/typeKey": "STUDENT", - "item/statusKey": "OPEN", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql", + "operationId": "PostItem", + "connectionName": "shared_azuremysql" + } } }, "PersistApplicationToDB": { @@ -465,27 +467,26 @@ }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_azuremysql", - "operationId": "PostItem", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql" - }, "parameters": { "server": "default", "database": "default", "table": "[main].[proposalapplication]", - "item/id": "@outputs('PersistProposalToDB')?['body/id']", - "item/statusKey": "OPEN", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/email": "@outputs('GetResponseDetails')?['body/responder']", - "item/matriculationNumber": "@outputs('GetResponseDetails')?['body/r6c3b387342aa4bd0b5f423aa43662850']", "item/fullName": "@outputs('GetResponseDetails')?['body/r7844031f633e4dd49368b0c116ad148d']", - "item/plannedStartAt": "@outputs('GetResponseDetails')?['body/r837fec8c113c4851a217e947217c5b7f']", + "item/id": "@outputs('PersistProposalToDB')?['body/id']", + "item/matriculationNumber": "@outputs('GetResponseDetails')?['body/r6c3b387342aa4bd0b5f423aa43662850']", "item/motivation": "@outputs('GetResponseDetails')?['body/r60d760e8828645cc84d8fde2a6fe3b27']", + "item/plannedStartAt": "@outputs('GetResponseDetails')?['body/r837fec8c113c4851a217e947217c5b7f']", "item/proposalId": "@outputs('PersistProposalToDB')?['body/id']", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", + "item/statusKey": "OPEN", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql", + "operationId": "PostItem", + "connectionName": "shared_azuremysql" + } } }, "ParseFileUploadProposalPDF": { @@ -671,32 +672,9 @@ "value": "@{first(body('ParseFileUploadProposalPDF'))?['name']}" } }, - "GetFileUploadProposalPDF": { - "runAfter": { - "SetProposalPdfName": [ - "Succeeded" - ] - }, - "metadata": { - "operationMetadataId": "fc42a6f8-0ab5-470e-9768-b94ffce6ecbf" - }, - "type": "OpenApiConnection", - "inputs": { - "host": { - "connectionName": "shared_onedriveforbusiness_1", - "operationId": "GetFileContentByPath", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_onedriveforbusiness" - }, - "parameters": { - "path": "/Apps/Microsoft Forms/Submit Thesis Proposal/Research Proposal (MS Word or PDF)/@{variables('ProposalPDFName')}", - "inferContentType": true - }, - "authentication": "@parameters('$authentication')" - } - }, "PersistProposalFile": { "runAfter": { - "GetFileUploadProposalPDF": [ + "GetProposalFileContentUsingPath": [ "Succeeded" ] }, @@ -705,18 +683,17 @@ }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_sharepointonline_1", - "operationId": "CreateFile", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline" - }, "parameters": { "dataset": "@parameters('Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)')", "folderPath": "/@{parameters('Proposals Document Library Name (uzhbf_thesisplatform_proposals_document_library_name_env_var)')}/Proposals/@{outputs('GetResponseDetails')?['body/responder']}", "name": "@{variables('ProposalId')}_proposal_@{variables('ProposalPDFName')}", - "body": "@body('GetFileUploadProposalPDF')" + "body": "@body('GetProposalFileContentUsingPath')" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline", + "operationId": "CreateFile", + "connectionName": "shared_sharepointonline_1" + } }, "runtimeConfiguration": { "contentTransfer": { @@ -735,11 +712,6 @@ }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_sharepointonline_1", - "operationId": "CreateSharingLink", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline" - }, "parameters": { "dataset": "@parameters('Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)')", "table": "@parameters('Proposals Document Library Name (uzhbf_thesisplatform_proposals_document_library_name_env_var)')", @@ -747,7 +719,11 @@ "permission/type": "view", "permission/scope": "organization" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline", + "operationId": "CreateSharingLink", + "connectionName": "shared_sharepointonline_1" + } } }, "SetPersonalCvPdfName": { @@ -765,32 +741,9 @@ "value": "@{first(body('ParsePersonalCVPDF'))?['name']}" } }, - "GetFileUploadCVPDF": { - "runAfter": { - "SetPersonalCvPdfName": [ - "Succeeded" - ] - }, - "metadata": { - "operationMetadataId": "907d739d-ea78-479a-9b6a-03d3b381ed25" - }, - "type": "OpenApiConnection", - "inputs": { - "host": { - "connectionName": "shared_onedriveforbusiness_1", - "operationId": "GetFileContentByPath", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_onedriveforbusiness" - }, - "parameters": { - "path": "/Apps/Microsoft Forms/Submit Thesis Proposal/Personal CV (PDF)/@{variables('PersonalCVPDFName')}", - "inferContentType": true - }, - "authentication": "@parameters('$authentication')" - } - }, "PersistCVPDF": { "runAfter": { - "GetFileUploadCVPDF": [ + "GetCVFileContentUsingPath": [ "Succeeded" ] }, @@ -799,18 +752,17 @@ }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_sharepointonline_1", - "operationId": "CreateFile", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline" - }, "parameters": { "dataset": "@parameters('Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)')", "folderPath": "/@{parameters('Proposals Document Library Name (uzhbf_thesisplatform_proposals_document_library_name_env_var)')}/Proposals/@{outputs('GetResponseDetails')?['body/responder']}", "name": "@{variables('ProposalId')}_cv_@{variables('PersonalCVPDFName')}", - "body": "@body('GetFileUploadCVPDF')" + "body": "@body('GetCVFileContentUsingPath')" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline", + "operationId": "CreateFile", + "connectionName": "shared_sharepointonline_1" + } }, "runtimeConfiguration": { "contentTransfer": { @@ -829,11 +781,6 @@ }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_sharepointonline_1", - "operationId": "CreateSharingLink", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline" - }, "parameters": { "dataset": "@parameters('Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)')", "table": "@parameters('Proposals Document Library Name (uzhbf_thesisplatform_proposals_document_library_name_env_var)')", @@ -841,7 +788,11 @@ "permission/type": "view", "permission/scope": "organization" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline", + "operationId": "CreateSharingLink", + "connectionName": "shared_sharepointonline_1" + } } }, "SetTranscriptPdfName": { @@ -859,32 +810,9 @@ "value": "@{first(body('ParseTranscriptPDF'))?['name']}" } }, - "GetFileUploadTranscriptPDF": { - "runAfter": { - "SetTranscriptPdfName": [ - "Succeeded" - ] - }, - "metadata": { - "operationMetadataId": "4ba05d15-c466-44b5-956a-92142a49e468" - }, - "type": "OpenApiConnection", - "inputs": { - "host": { - "connectionName": "shared_onedriveforbusiness_1", - "operationId": "GetFileContentByPath", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_onedriveforbusiness" - }, - "parameters": { - "path": "/Apps/Microsoft Forms/Submit Thesis Proposal/Transcript of Records (PDF)/@{variables('TranscriptPDFName')}", - "inferContentType": true - }, - "authentication": "@parameters('$authentication')" - } - }, "PersistTranscriptPDF": { "runAfter": { - "GetFileUploadTranscriptPDF": [ + "GetTranscriptFileContentUsingPath_": [ "Succeeded" ] }, @@ -893,18 +821,17 @@ }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_sharepointonline_1", - "operationId": "CreateFile", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline" - }, "parameters": { "dataset": "@parameters('Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)')", "folderPath": "/@{parameters('Proposals Document Library Name (uzhbf_thesisplatform_proposals_document_library_name_env_var)')}/Proposals/@{outputs('GetResponseDetails')?['body/responder']}", "name": "@{variables('ProposalId')}_transcript_@{variables('TranscriptPDFName')}", - "body": "@body('GetFileUploadTranscriptPDF')" + "body": "@body('GetTranscriptFileContentUsingPath_')" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline", + "operationId": "CreateFile", + "connectionName": "shared_sharepointonline_1" + } }, "runtimeConfiguration": { "contentTransfer": { @@ -923,11 +850,6 @@ }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_sharepointonline_1", - "operationId": "CreateSharingLink", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline" - }, "parameters": { "dataset": "@parameters('Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)')", "table": "@parameters('Proposals Document Library Name (uzhbf_thesisplatform_proposals_document_library_name_env_var)')", @@ -935,7 +857,11 @@ "permission/type": "view", "permission/scope": "organization" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline", + "operationId": "CreateSharingLink", + "connectionName": "shared_sharepointonline_1" + } } }, "CreateProposalAttachment": { @@ -949,24 +875,23 @@ }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_azuremysql", - "operationId": "PostItem", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql" - }, "parameters": { "server": "default", "database": "default", "table": "[main].[proposalattachment]", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", + "item/href": "@outputs('ShareLinkProposalFile')?['body/link/webUrl']", "item/id": "@{guid()}", "item/name": "Proposal", - "item/href": "@outputs('ShareLinkProposalFile')?['body/link/webUrl']", - "item/type": "@outputs('PersistProposalFile')?['body/MediaType']", "item/proposalId": "@variables('ProposalId')", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", + "item/type": "@outputs('PersistProposalFile')?['body/MediaType']", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql", + "operationId": "PostItem", + "connectionName": "shared_azuremysql" + } } }, "CreateCVAttachment": { @@ -980,24 +905,23 @@ }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_azuremysql", - "operationId": "PostItem", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql" - }, "parameters": { "server": "default", "database": "default", "table": "[main].[applicationattachment]", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", + "item/href": "@outputs('ShareLinkCVPDF')?['body/link/webUrl']", "item/id": "@{guid()}", "item/name": "CV", - "item/href": "@outputs('ShareLinkCVPDF')?['body/link/webUrl']", - "item/type": "@outputs('PersistCVPDF')?['body/MediaType']", "item/proposalApplicationId": "@outputs('PersistApplicationToDB')?['body/id']", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", + "item/type": "@outputs('PersistCVPDF')?['body/MediaType']", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql", + "operationId": "PostItem", + "connectionName": "shared_azuremysql" + } } }, "CreateTranscriptAttachment": { @@ -1011,400 +935,836 @@ }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_azuremysql", - "operationId": "PostItem", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql" - }, "parameters": { "server": "default", "database": "default", "table": "[main].[applicationattachment]", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", + "item/href": "@outputs('ShareLinkTranscriptPDF')?['body/link/webUrl']", "item/id": "@{guid()}", "item/name": "Transcript", - "item/href": "@outputs('ShareLinkTranscriptPDF')?['body/link/webUrl']", - "item/type": "@outputs('PersistTranscriptPDF')?['body/MediaType']", "item/proposalApplicationId": "@outputs('PersistApplicationToDB')?['body/id']", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", + "item/type": "@outputs('PersistTranscriptPDF')?['body/MediaType']", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql", + "operationId": "PostItem", + "connectionName": "shared_azuremysql" + } } }, - "EmailToSupervisors": { - "foreach": "@variables('MatchingSupervisors')", + "ForEachSupervisor": { + "foreach": "@outputs('SupervisorList')?['body/value']", "actions": { - "AdaptiveCard": { - "runAfter": {}, - "metadata": { - "operationMetadataId": "fe7ccff6-5733-4c75-8c50-ce0674dbd1b1" - }, - "type": "Compose", - "inputs": { - "type": "AdaptiveCard", - "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", - "version": "1.0", - "originator": "@{variables('Originator')}", - "body": [ - { - "type": "TextBlock", - "text": "@{outputs('GetResponseDetails')?['body/r7240915136fb41e8b884a045d08f39ce']}", - "wrap": true, - "weight": "Bolder", - "size": "Medium" - }, - { - "type": "TextBlock", - "text": "@{outputs('GetResponseDetails')?['body/r7425856917f245efbd0c4cb2a7f0c434']}", - "wrap": true + "ForEachAreaOfInterest": { + "foreach": "@items('ForEachSupervisor')?['AreasOfInterest']", + "actions": { + "IsSupervisingTopicArea": { + "actions": { + "AppendToMatchingSupervisors": { + "metadata": { + "operationMetadataId": "c2e44021-c939-4132-a7da-e0d1b23020cd" + }, + "type": "AppendToArrayVariable", + "inputs": { + "name": "MatchingSupervisors", + "value": "@items('ForEachSupervisor')?['Email']" + } + } }, - { - "type": "TextBlock", - "text": "@{outputs('GetResponseDetails')?['body/r60d760e8828645cc84d8fde2a6fe3b27']}", - "wrap": true + "else": { + "actions": {} }, - { - "type": "FactSet", - "facts": [ - { - "title": "Submitted By", - "value": "@{outputs('GetResponseDetails')?['body/r7844031f633e4dd49368b0c116ad148d']} (@{outputs('GetResponseDetails')?['body/r6c3b387342aa4bd0b5f423aa43662850']}, @{outputs('GetResponseDetails')?['body/responder']})" - }, - { - "title": "Proposed Title", - "value": "@{outputs('GetResponseDetails')?['body/r7240915136fb41e8b884a045d08f39ce']}" - }, - { - "title": "Type of Proposal", - "value": "@{outputs('GetResponseDetails')?['body/rc797ecd1491b44a0ac091174abbac9f6']}" - }, - { - "title": "Field of Research", - "value": "@{outputs('GetResponseDetails')?['body/r975d59f3f5114998b6e30c56c035334b']}" - }, + "expression": { + "and": [ { - "title": "Proposal Language", - "value": "@{outputs('GetResponseDetails')?['body/r8b7f3f4a7502459598d155e9b31eb25e']}" + "equals": [ + "@items('ForEachAreaOfinterest')?['Value']", + "@variables('TopicArea')" + ] }, { - "title": "Planned Start Date", - "value": "@{outputs('GetResponseDetails')?['body/r837fec8c113c4851a217e947217c5b7f']}" + "equals": [ + "@outputs('GetEmailNotificationEnabled')", + "y" + ] } - ], - "separator": true - } - ], - "actions": [ - { - "type": "Action.ShowCard", - "title": "Accept", - "card": { - "type": "AdaptiveCard", - "body": [ - { - "type": "TextBlock", - "text": "Once you accept this proposal, the student will be asked to verify the matching. The proposal will be removed from the proposal market and assigned to you for supervision.", - "wrap": true - }, - { - "type": "Input.Text", - "placeholder": "Your message will be sent to the student alongside your acceptance notification.", - "id": "acceptComment", - "isRequired": true, - "errorMessage": "Field required", - "label": "Comment" - } - ], - "actions": [ - { - "type": "Action.Http", - "title": "Submit", - "method": "POST", - "url": "@{parameters('Http Trigger Thesis Proposal Feedback (uzhbf_thesisplatform_http_trigger_thesis_proposal_feedback_env_var)')}", - "body": "{\"actionType\": \"ACCEPT\", \"comment\": \"{{acceptComment.value}}\", \"proposalId\": \"@{variables('ProposalId')}\",\"supervisorEmail\": \"@{items('EmailToSupervisors')}\"}", - "headers": [ - { - "name": "Authorization", - "value": "" - }, - { - "name": "Content-type", - "value": "application/json" - }, - { - "name": "secretkey", - "value": "@{parameters('Flow Secret (uzhbf_thesisplatform_flow_secret_env_var)')}" - } - ] - } - ] - } + ] }, - { - "type": "Action.ShowCard", - "title": "Accept (Tentative)", - "card": { - "type": "AdaptiveCard", - "body": [ - { - "type": "TextBlock", - "text": "When you accept the proposal tentatively, the student will receive your feedback and is required to improve the proposal before you finally accept the proposal for supervision.", - "wrap": true - }, - { - "type": "Input.Text", - "placeholder": "Your message will be sent to the student alongside your notification of interest.", - "id": "tentativeComment", - "label": "Comment", - "isMultiline": true, - "isRequired": true, - "errorMessage": "Field required" - } - ], - "actions": [ - { - "type": "Action.Http", - "title": "Submit", - "method": "POST", - "url": "@{parameters('Http Trigger Thesis Proposal Feedback (uzhbf_thesisplatform_http_trigger_thesis_proposal_feedback_env_var)')}", - "body": "{\"actionType\": \"ACCEPT_TENTATIVE\", \"comment\": \"{{tentativeComment.value}}\", \"proposalId\": \"@{variables('ProposalId')}\",\"supervisorEmail\": \"@{items('EmailToSupervisors')}\"}", - "headers": [ - { - "name": "Authorization", - "value": "" - }, - { - "name": "Content-type", - "value": "application/json" - }, - { - "name": "secretkey", - "value": "@{parameters('Flow Secret (uzhbf_thesisplatform_flow_secret_env_var)')}" - } - ] - } - ] + "metadata": { + "operationMetadataId": "0b3c57ab-9365-4f2e-88e1-09f66daff6f0" + }, + "type": "If" + } + }, + "runAfter": { + "GetEmailNotificationEnabled": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "3cdcdaa5-8261-4fbc-9cc8-80f431b3c204" + }, + "type": "Foreach" + }, + "GetEmailNotificationEnabled": { + "type": "Compose", + "inputs": "@items('ForEachSupervisor')['EmailNotification']?['Value']" + } + }, + "runAfter": { + "SetTopicArea": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "2a8c2544-f8b6-40be-8842-9a8104fc0fc1" + }, + "type": "Foreach" + }, + "GetProposalFileContentUsingPath": { + "runAfter": { + "SetProposalPdfName": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "6a4d4b80-363c-4fa2-987a-c6ffe1eb477d" + }, + "type": "OpenApiConnection", + "inputs": { + "parameters": { + "dataset": "@parameters('Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)')", + "path": "Shared Documents/Apps/Microsoft Forms/Submit Thesis Proposal/Research Proposal (MS Word or PDF)/@{variables('ProposalPDFName')}", + "inferContentType": true + }, + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline", + "operationId": "GetFileContentByPath", + "connectionName": "shared_sharepointonline" + } + } + }, + "GetCVFileContentUsingPath": { + "runAfter": { + "SetPersonalCvPdfName": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "6a4d4b80-363c-4fa2-987a-c6ffe1eb477d" + }, + "type": "OpenApiConnection", + "inputs": { + "parameters": { + "dataset": "@parameters('Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)')", + "path": "Shared Documents/Apps/Microsoft Forms/Submit Thesis Proposal/Personal CV (PDF)/@{variables('PersonalCVPDFName')}", + "inferContentType": true + }, + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline", + "operationId": "GetFileContentByPath", + "connectionName": "shared_sharepointonline" + } + } + }, + "GetTranscriptFileContentUsingPath_": { + "runAfter": { + "SetTranscriptPdfName": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "6a4d4b80-363c-4fa2-987a-c6ffe1eb477d" + }, + "type": "OpenApiConnection", + "inputs": { + "parameters": { + "dataset": "@parameters('Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)')", + "path": "Shared Documents/Apps/Microsoft Forms/Submit Thesis Proposal/Transcript of Records (PDF)/@{variables('TranscriptPDFName')}", + "inferContentType": true + }, + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline", + "operationId": "GetFileContentByPath", + "connectionName": "shared_sharepointonline" + } + } + }, + "HasFurtherAttachments": { + "actions": { + "ParseJSON": { + "metadata": { + "operationMetadataId": "eab6a594-1385-4e5e-b663-fb671444906b" + }, + "type": "ParseJson", + "inputs": { + "content": "@body('GetResponseDetails')?['r03afe1c9ab4547a18b4bdbff6418b128']", + "schema": { + "items": { + "properties": { + "driveId": { + "type": "string" + }, + "id": { + "type": "string" + }, + "link": { + "type": "string" + }, + "name": { + "type": "string" + }, + "referenceId": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "status": { + "type": "integer" + }, + "type": {}, + "uploadSessionUrl": {} + }, + "required": [ + "name", + "link", + "id", + "type", + "size", + "referenceId", + "driveId", + "status", + "uploadSessionUrl" + ], + "type": "object" + }, + "type": "array" + } + } + }, + "ApplyToEach": { + "foreach": "@body('ParseJSON')", + "actions": { + "GetLinkToFile": { + "metadata": { + "operationMetadataId": "b70302ea-adc9-4092-b37f-76fc3cd2822d" + }, + "type": "Compose", + "inputs": "@items('ApplyToEach')['link']" + }, + "GetFileName": { + "runAfter": { + "GetLinkToFile": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "478500e3-9558-49b7-99e0-f2dc3d7a2f6a" + }, + "type": "Compose", + "inputs": "@items('ApplyToEach')['name']" + }, + "GetFurtherFileContentUsingPath": { + "runAfter": { + "GetFileName": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "4edb2b43-d449-44b1-9912-1402f0964deb" + }, + "type": "OpenApiConnection", + "inputs": { + "parameters": { + "dataset": "@parameters('Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)')", + "path": "Shared Documents/Apps/Microsoft Forms/Submit Thesis Proposal/Further Attachments/@{outputs('GetFileName')}", + "inferContentType": true + }, + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline", + "operationId": "GetFileContentByPath", + "connectionName": "shared_sharepointonline_1" } + } + }, + "PersistAdditionalFile": { + "runAfter": { + "GetFurtherFileContentUsingPath": [ + "Succeeded" + ] }, - { - "type": "Action.ShowCard", - "title": "Reject", - "card": { - "type": "AdaptiveCard", - "body": [ - { - "type": "TextBlock", - "text": "Rejecting this proposal because of lacking content quality or format requirements will cause review by the thesis coordinator. The student will need to improve and resubmit the proposal.", - "wrap": true - }, - { - "type": "Input.ChoiceSet", - "choices": [ - { - "title": "Proposal too broad", - "value": "TOO_BROAD" - }, - { - "title": "Proposal not sufficiently scientific", - "value": "NOT_SCIENTIFIC" - }, - { - "title": "Proposal or scope not clear", - "value": "NOT_CLEAR" - }, + "metadata": { + "operationMetadataId": "73d10613-2f21-405c-94f2-a864355e8d60" + }, + "type": "OpenApiConnection", + "inputs": { + "parameters": { + "dataset": "@parameters('Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)')", + "folderPath": "/@{parameters('Proposals Document Library Name (uzhbf_thesisplatform_proposals_document_library_name_env_var)')}/Proposals/@{outputs('GetResponseDetails')?['body/responder']}", + "name": "@{variables('ProposalId')}_attachment_@{outputs('GetFileName')}", + "body": "@body('GetFurtherFileContentUsingPath')" + }, + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline", + "operationId": "CreateFile", + "connectionName": "shared_sharepointonline" + } + }, + "runtimeConfiguration": { + "contentTransfer": { + "transferMode": "Chunked" + } + } + }, + "ShareLinkAttachment": { + "runAfter": { + "PersistAdditionalFile": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "5aa84c0a-2fdd-4b42-a54a-9d0e05c65856" + }, + "type": "OpenApiConnection", + "inputs": { + "parameters": { + "dataset": "@parameters('Sharepoint Site (uzhbf_thesisplatform_sharepoint_site_env_var)')", + "table": "@parameters('Proposals Document Library Name (uzhbf_thesisplatform_proposals_document_library_name_env_var)')", + "id": "@outputs('PersistAdditionalFile')?['body/ItemId']", + "permission/type": "view", + "permission/scope": "organization" + }, + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline", + "operationId": "CreateSharingLink", + "connectionName": "shared_sharepointonline_1" + } + } + }, + "CreateFurtherAttachment": { + "runAfter": { + "ShareLinkAttachment": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "6023d5d8-64fd-4511-812e-c3f1f0b1bd8f" + }, + "type": "OpenApiConnection", + "inputs": { + "parameters": { + "server": "default", + "database": "default", + "table": "[main].[applicationattachment]", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", + "item/href": "@outputs('ShareLinkAttachment')?['body/link/webUrl']", + "item/id": "@{guid()}", + "item/name": "Attachment", + "item/proposalApplicationId": "@outputs('PersistApplicationToDB')?['body/id']", + "item/type": "@outputs('PersistAdditionalFile')?['body/MediaType']", + "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" + }, + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql", + "operationId": "PostItem", + "connectionName": "shared_azuremysql" + } + } + }, + "AppendAttachmentLinkToArray": { + "runAfter": { + "CreateFurtherAttachment": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "74ef45a8-c5b8-4f87-9837-66f24094a7b3" + }, + "type": "AppendToArrayVariable", + "inputs": { + "name": "links", + "value": { + "type": "Action.OpenUrl", + "title": "Attachment", + "url": "@{outputs('ShareLinkAttachment')?['body/link/webUrl']}" + } + } + }, + "AppendAttachmentLinkToString": { + "runAfter": { + "AppendAttachmentLinkToArray": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "df7b500c-36cc-469c-ad57-998fba723271" + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "linksAsList", + "value": "
  • @{outputs('ShareLinkAttachment')?['body/link/webUrl']}
  • " + } + } + }, + "runAfter": { + "ParseJSON": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "7bf6e852-4c83-4f54-9d6f-0d383f6a1a19" + }, + "type": "Foreach" + }, + "EmailToSupervisorsWithAttachments": { + "foreach": "@variables('MatchingSupervisors')", + "actions": { + "AdaptiveCardWithAttachments": { + "metadata": { + "operationMetadataId": "fe7ccff6-5733-4c75-8c50-ce0674dbd1b1" + }, + "type": "Compose", + "inputs": { + "type": "AdaptiveCard", + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.3", + "originator": "@{variables('Originator')}", + "body": [ + { + "type": "TextBlock", + "text": "@{outputs('GetResponseDetails')?['body/r7240915136fb41e8b884a045d08f39ce']}", + "wrap": true, + "weight": "Bolder", + "size": "Medium" + }, + { + "type": "TextBlock", + "text": "@{outputs('GetResponseDetails')?['body/r7425856917f245efbd0c4cb2a7f0c434']}", + "wrap": true + }, + { + "type": "TextBlock", + "text": "@{outputs('GetResponseDetails')?['body/r60d760e8828645cc84d8fde2a6fe3b27']}", + "wrap": true + }, + { + "type": "FactSet", + "facts": [ + { + "title": "Submitted By", + "value": "@{outputs('GetResponseDetails')?['body/r7844031f633e4dd49368b0c116ad148d']} (@{outputs('GetResponseDetails')?['body/r6c3b387342aa4bd0b5f423aa43662850']}, @{outputs('GetResponseDetails')?['body/responder']})" + }, + { + "title": "Proposed Title", + "value": "@{outputs('GetResponseDetails')?['body/r7240915136fb41e8b884a045d08f39ce']}" + }, + { + "title": "Type of Proposal", + "value": "@{outputs('GetResponseDetails')?['body/rc797ecd1491b44a0ac091174abbac9f6']}" + }, + { + "title": "Field of Research", + "value": "@{outputs('GetResponseDetails')?['body/r975d59f3f5114998b6e30c56c035334b']}" + }, + { + "title": "Proposal Language", + "value": "@{outputs('GetResponseDetails')?['body/r8b7f3f4a7502459598d155e9b31eb25e']}" + }, + { + "title": "Planned Start Date", + "value": "@{outputs('GetResponseDetails')?['body/r837fec8c113c4851a217e947217c5b7f']}" + }, + { + "title": "Additional Comment", + "value": "@{outputs('GetResponseDetails')?['body/r036f3f6320bc47e5b8c3694816ffe095']}" + } + ], + "separator": true + }, + { + "type": "ActionSet", + "actions": "@variables('links')" + } + ], + "actions": [ + { + "type": "Action.ShowCard", + "title": "Accept", + "card": { + "type": "AdaptiveCard", + "body": [ { - "title": "Format unsuitable", - "value": "FORMAT_UNSUITABLE" + "type": "TextBlock", + "text": "Once you accept this proposal, the student will be asked to verify the matching. The proposal will be removed from the proposal market and assigned to you for supervision.", + "wrap": true }, { - "title": "Mismatch in topic area", - "value": "TOPIC_AREA_INVALID" + "type": "Input.Text", + "placeholder": "Your message will be sent to the student alongside your acceptance notification.", + "id": "acceptComment", + "isRequired": true, + "errorMessage": "Field required", + "label": "Comment" } ], - "placeholder": "Why should this proposal be rejected?", - "isRequired": true, - "id": "rejectReason", - "errorMessage": "Field required", - "label": "Reason" - }, - { - "type": "Input.Text", - "placeholder": "Why do you recommend this proposal for rejection? Your comment will not be shown to the student.", - "id": "rejectComment", - "isRequired": true, - "errorMessage": "Field required", - "label": "Comment", - "isMultiline": true + "actions": [ + { + "type": "Action.Http", + "title": "Submit", + "method": "POST", + "url": "@{parameters('Http Trigger Thesis Proposal Feedback (uzhbf_thesisplatform_http_trigger_thesis_proposal_feedback_env_var)')}", + "body": "{\"actionType\": \"ACCEPT\", \"comment\": \"{{acceptComment.value}}\", \"proposalId\": \"@{variables('ProposalId')}\",\"supervisorEmail\": \"@{items('EmailToSupervisorsWithAttachments')}\"}", + "headers": [ + { + "name": "Authorization", + "value": "" + }, + { + "name": "Content-type", + "value": "application/json" + }, + { + "name": "secretkey", + "value": "@{parameters('Flow Secret (uzhbf_thesisplatform_flow_secret_env_var)')}" + } + ] + } + ] } - ], - "actions": [ - { - "type": "Action.Http", - "title": "Submit", - "method": "POST", - "url": "@{parameters('Http Trigger Thesis Proposal Feedback (uzhbf_thesisplatform_http_trigger_thesis_proposal_feedback_env_var)')}", - "body": "{\"actionType\": \"REJECT\", \"comment\": \"{{rejectComment.value}}\", \n\"reason\": \"{{rejectReason.value}}\", \"proposalId\": \"@{variables('ProposalId')}\",\"supervisorEmail\": \"@{items('EmailToSupervisors')}\"}", - "headers": [ + }, + { + "type": "Action.ShowCard", + "title": "Accept (Tentative)", + "card": { + "type": "AdaptiveCard", + "body": [ { - "name": "Authorization", - "value": "" + "type": "TextBlock", + "text": "When you accept the proposal tentatively, the student will receive your feedback and is required to improve the proposal before you finally accept the proposal for supervision.", + "wrap": true }, { - "name": "Content-type", - "value": "application/json" - }, + "type": "Input.Text", + "placeholder": "Your message will be sent to the student alongside your notification of interest.", + "id": "tentativeComment", + "label": "Comment", + "isMultiline": true, + "isRequired": true, + "errorMessage": "Field required" + } + ], + "actions": [ { - "name": "secretkey", - "value": "@{parameters('Flow Secret (uzhbf_thesisplatform_flow_secret_env_var)')}" + "type": "Action.Http", + "title": "Submit", + "method": "POST", + "url": "@{parameters('Http Trigger Thesis Proposal Feedback (uzhbf_thesisplatform_http_trigger_thesis_proposal_feedback_env_var)')}", + "body": "{\"actionType\": \"ACCEPT_TENTATIVE\", \"comment\": \"{{tentativeComment.value}}\", \"proposalId\": \"@{variables('ProposalId')}\",\"supervisorEmail\": \"@{items('EmailToSupervisorsWithAttachments')}\"}", + "headers": [ + { + "name": "Authorization", + "value": "" + }, + { + "name": "Content-type", + "value": "application/json" + }, + { + "name": "secretkey", + "value": "@{parameters('Flow Secret (uzhbf_thesisplatform_flow_secret_env_var)')}" + } + ] } ] } - ] - } - }, - { - "type": "Action.ShowCard", - "title": "Decline", - "card": { - "type": "AdaptiveCard", - "body": [ - { - "type": "TextBlock", - "text": "Declining this proposal because of a mismatch of interests or a high workload on your side will keep it available for other supervisors.", - "wrap": true - }, - { - "type": "Input.ChoiceSet", - "choices": [ + }, + { + "type": "Action.ShowCard", + "title": "Reject", + "card": { + "type": "AdaptiveCard", + "body": [ { - "title": "Lack of interest in specific topic", - "value": "LACKING_INTEREST" + "type": "TextBlock", + "text": "Rejecting this proposal because of lacking content quality or format requirements will cause review by the thesis coordinator. The student will need to improve and resubmit the proposal.", + "wrap": true }, { - "title": "Personal workload too high", - "value": "PERSONAL_WORKLOAD" + "type": "Input.ChoiceSet", + "choices": [ + { + "title": "Proposal too broad", + "value": "TOO_BROAD" + }, + { + "title": "Proposal not sufficiently scientific", + "value": "NOT_SCIENTIFIC" + }, + { + "title": "Proposal or scope not clear", + "value": "NOT_CLEAR" + }, + { + "title": "Format unsuitable", + "value": "FORMAT_UNSUITABLE" + }, + { + "title": "Mismatch in topic area", + "value": "TOPIC_AREA_INVALID" + } + ], + "placeholder": "Why should this proposal be rejected?", + "isRequired": true, + "id": "rejectReason", + "errorMessage": "Field required", + "label": "Reason" }, { - "title": "Mismatch in language", - "value": "LANGUAGE" + "type": "Input.Text", + "placeholder": "Why do you recommend this proposal for rejection? Your comment will not be shown to the student.", + "id": "rejectComment", + "isRequired": true, + "errorMessage": "Field required", + "label": "Comment", + "isMultiline": true } ], - "placeholder": "Why do you want to decline this proposal?", - "id": "declineReason", - "label": "Reason", - "isRequired": true, - "errorMessage": "Field required" - }, - { - "type": "Input.Text", - "placeholder": "Why do you decline this proposal specifically? Your comment will not be shown to the student.", - "id": "declineComment", - "label": "Comment", - "isMultiline": true, - "isRequired": true, - "errorMessage": "Field required" + "actions": [ + { + "type": "Action.Http", + "title": "Submit", + "method": "POST", + "url": "@{parameters('Http Trigger Thesis Proposal Feedback (uzhbf_thesisplatform_http_trigger_thesis_proposal_feedback_env_var)')}", + "body": "{\"actionType\": \"REJECT\", \"comment\": \"{{rejectComment.value}}\", \n\"reason\": \"{{rejectReason.value}}\", \"proposalId\": \"@{variables('ProposalId')}\",\"supervisorEmail\": \"@{items('EmailToSupervisorsWithAttachments')}\"}", + "headers": [ + { + "name": "Authorization", + "value": "" + }, + { + "name": "Content-type", + "value": "application/json" + }, + { + "name": "secretkey", + "value": "@{parameters('Flow Secret (uzhbf_thesisplatform_flow_secret_env_var)')}" + } + ] + } + ] } - ], - "actions": [ - { - "type": "Action.Http", - "title": "Submit", - "method": "POST", - "url": "@{parameters('Http Trigger Thesis Proposal Feedback (uzhbf_thesisplatform_http_trigger_thesis_proposal_feedback_env_var)')}", - "body": "{\"actionType\": \"DECLINE\", \"comment\": \"{{declineComment.value}}\", \n\"reason\": \"{{declineReason.value}}\", \"proposalId\": \"@{variables('ProposalId')}\",\"supervisorEmail\": \"@{items('EmailToSupervisors')}\"}", - "headers": [ + }, + { + "type": "Action.ShowCard", + "title": "Decline", + "card": { + "type": "AdaptiveCard", + "body": [ { - "name": "Authorization", - "value": "" + "type": "TextBlock", + "text": "Declining this proposal because of a mismatch of interests or a high workload on your side will keep it available for other supervisors.", + "wrap": true }, { - "name": "Content-type", - "value": "application/json" + "type": "Input.ChoiceSet", + "choices": [ + { + "title": "Lack of interest in specific topic", + "value": "LACKING_INTEREST" + }, + { + "title": "Personal workload too high", + "value": "PERSONAL_WORKLOAD" + }, + { + "title": "Mismatch in language", + "value": "LANGUAGE" + } + ], + "placeholder": "Why do you want to decline this proposal?", + "id": "declineReason", + "label": "Reason", + "isRequired": true, + "errorMessage": "Field required" }, { - "name": "secretkey", - "value": "@{parameters('Flow Secret (uzhbf_thesisplatform_flow_secret_env_var)')}" + "type": "Input.Text", + "placeholder": "Why do you decline this proposal specifically? Your comment will not be shown to the student.", + "id": "declineComment", + "label": "Comment", + "isMultiline": true, + "isRequired": true, + "errorMessage": "Field required" + } + ], + "actions": [ + { + "type": "Action.Http", + "title": "Submit", + "method": "POST", + "url": "@{parameters('Http Trigger Thesis Proposal Feedback (uzhbf_thesisplatform_http_trigger_thesis_proposal_feedback_env_var)')}", + "body": "{\"actionType\": \"DECLINE\", \"comment\": \"{{declineComment.value}}\", \n\"reason\": \"{{declineReason.value}}\", \"proposalId\": \"@{variables('ProposalId')}\",\"supervisorEmail\": \"@{items('EmailToSupervisorsWithAttachments')}\"}", + "headers": [ + { + "name": "Authorization", + "value": "" + }, + { + "name": "Content-type", + "value": "application/json" + }, + { + "name": "secretkey", + "value": "@{parameters('Flow Secret (uzhbf_thesisplatform_flow_secret_env_var)')}" + } + ] } ] } + } + ], + "autoInvokeAction": { + "type": "Action.Http", + "method": "POST", + "url": "@{parameters('Http Trigger Thesis Proposal Feedback (uzhbf_thesisplatform_http_trigger_thesis_proposal_feedback_env_var)')}", + "body": "{\"actionType\": \"REFETCH\",\"proposalId\": \"@{variables('ProposalId')}\",\"supervisorEmail\": \"@{items('EmailToSupervisorsWithAttachments')}\"}", + "headers": [ + { + "name": "Authorization", + "value": "" + }, + { + "name": "Content-type", + "value": "application/json" + }, + { + "name": "secretkey", + "value": "@{parameters('Flow Secret (uzhbf_thesisplatform_flow_secret_env_var)')}" + } ] } } - ], - "autoInvokeAction": { - "type": "Action.Http", - "method": "POST", - "url": "@{parameters('Http Trigger Thesis Proposal Feedback (uzhbf_thesisplatform_http_trigger_thesis_proposal_feedback_env_var)')}", - "body": "{\"actionType\": \"REFETCH\",\"proposalId\": \"@{variables('ProposalId')}\",\"supervisorEmail\": \"@{items('EmailToSupervisors')}\"}", - "headers": [ - { - "name": "Authorization", - "value": "" - }, - { - "name": "Content-type", - "value": "application/json" + }, + "EmailContentsWithAttachments": { + "runAfter": { + "AdaptiveCardWithAttachments": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "4a75e677-4358-4992-a664-ffe5b41e0922" + }, + "type": "Compose", + "inputs": "" + }, + "SupervisorInformationEmailWithAttachments": { + "runAfter": { + "EmailContentsWithAttachments": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "ca5e164f-cb5e-4a62-9467-189c5311ca33" + }, + "type": "OpenApiConnection", + "inputs": { + "parameters": { + "emailMessage/MailboxAddress": "@parameters('Outlook From Address (uzhbf_thesisplatform_outlook_from_address_env_var)')", + "emailMessage/To": "@items('EmailToSupervisorsWithAttachments')", + "emailMessage/Subject": "@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Theses - New Proposal for Review (@{outputs('GetResponseDetails')?['body/r7240915136fb41e8b884a045d08f39ce']})", + "emailMessage/Body": "@outputs('EmailContentsWithAttachments')", + "emailMessage/Bcc": "@parameters('Outlook Management Inbox (uzhbf_thesisplatform_thesis_inbox_env_var)')", + "emailMessage/Attachments": [ + { + "Name": "@variables('PersonalCVPDFName')", + "ContentBytes": "@body('GetCVFileContentUsingPath')" + }, + { + "Name": "@variables('TranscriptPDFName')", + "ContentBytes": "@body('GetTranscriptFileContentUsingPath_')" + }, + { + "Name": "@variables('ProposalPDFName')", + "ContentBytes": "@body('GetProposalFileContentUsingPath')" + } + ], + "emailMessage/ReplyTo": "@outputs('GetResponseDetails')?['body/responder']", + "emailMessage/Importance": "High" }, - { - "name": "secretkey", - "value": "@{parameters('Flow Secret (uzhbf_thesisplatform_flow_secret_env_var)')}" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_office365", + "operationId": "SharedMailboxSendEmailV2", + "connectionName": "shared_office365_1" } - ] + } } - } - }, - "EmailContents": { + }, "runAfter": { - "AdaptiveCard": [ + "AppendListClosing": [ "Succeeded" ] }, "metadata": { - "operationMetadataId": "4a75e677-4358-4992-a664-ffe5b41e0922" + "operationMetadataId": "59fc0f49-7782-4696-b7cb-f1b30f3402ea" }, - "type": "Compose", - "inputs": "" + "type": "Foreach" }, - "SupervisorInformationEmail": { + "StudentConfirmationEmailWithAttachments": { "runAfter": { - "EmailContents": [ + "EmailToSupervisorsWithAttachments": [ "Succeeded" ] }, "metadata": { - "operationMetadataId": "ca5e164f-cb5e-4a62-9467-189c5311ca33" + "operationMetadataId": "956b2cfb-109b-4b96-b61d-4431cd5de8f4" }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_office365_1", - "operationId": "SharedMailboxSendEmailV2", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_office365" - }, "parameters": { "emailMessage/MailboxAddress": "@parameters('Outlook From Address (uzhbf_thesisplatform_outlook_from_address_env_var)')", - "emailMessage/To": "@items('EmailToSupervisors')", - "emailMessage/Subject": "DBF Theses - New Proposal for Review (@{outputs('GetResponseDetails')?['body/r7240915136fb41e8b884a045d08f39ce']})", - "emailMessage/Body": "@outputs('EmailContents')", - "emailMessage/Bcc": "@parameters('Outlook Management Inbox (uzhbf_thesisplatform_thesis_inbox_env_var)')", + "emailMessage/To": "@outputs('GetResponseDetails')?['body/responder']", + "emailMessage/Subject": "@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Theses - Your Proposal has been received (@{outputs('GetResponseDetails')?['body/r7240915136fb41e8b884a045d08f39ce']})", + "emailMessage/Body": "

    Dear @{outputs('GetResponseDetails')?['body/r7844031f633e4dd49368b0c116ad148d']},
    \n
    \nWe have received your thesis proposal with the information as provided below. Please keep in mind that the thesis matching process usually takes about one month, but might take less or more depending on the workload of our supervisors. You will hear from us as soon as the proposal has been matched to a supervisor or if any further action from your side should be required.
    \n
    \nIf you have any urgent questions, please contact our @{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Thesis Coordinator by replying to this email.
    \n
    \nBest regards,
    \n@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Thesis Coordinator
    \n
    \n---
    \n
    \nSubmitted By: @{outputs('GetResponseDetails')?['body/submitDate']} (@{outputs('GetResponseDetails')?['body/responder']})
    \n
    \nProposed Title: @{outputs('GetResponseDetails')?['body/r7240915136fb41e8b884a045d08f39ce']}
    \nThesis Language: @{outputs('GetResponseDetails')?['body/r8b7f3f4a7502459598d155e9b31eb25e']}
    \nField of Research: @{outputs('GetResponseDetails')?['body/r975d59f3f5114998b6e30c56c035334b']}
    \nPlanned Start Date: @{outputs('GetResponseDetails')?['body/r837fec8c113c4851a217e947217c5b7f']}
    \n
    \nSummary: @{outputs('GetResponseDetails')?['body/r7425856917f245efbd0c4cb2a7f0c434']}
    \nMotivation: @{outputs('GetResponseDetails')?['body/r60d760e8828645cc84d8fde2a6fe3b27']}
    \n
    \nFurther Attachments: @{variables('linksAsList')}

    ", "emailMessage/Attachments": [ { "Name": "@variables('PersonalCVPDFName')", - "ContentBytes": "@body('GetFileUploadCVPDF')" + "ContentBytes": "@body('GetCVFileContentUsingPath')" }, { "Name": "@variables('TranscriptPDFName')", - "ContentBytes": "@body('GetFileUploadTranscriptPDF')" + "ContentBytes": "@body('GetTranscriptFileContentUsingPath_')" }, { "Name": "@variables('ProposalPDFName')", - "ContentBytes": "@body('GetFileUploadProposalPDF')" + "ContentBytes": "@body('GetProposalFileContentUsingPath')" } ], - "emailMessage/ReplyTo": "@outputs('GetResponseDetails')?['body/responder']", + "emailMessage/ReplyTo": "@parameters('Outlook Management Inbox (uzhbf_thesisplatform_thesis_inbox_env_var)')", "emailMessage/Importance": "High" }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_office365", + "operationId": "SharedMailboxSendEmailV2", + "connectionName": "shared_office365_1" + } + } + }, + "AppendListClosing": { + "runAfter": { + "ApplyToEach": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "5e201a86-23eb-49cf-a67a-0c2fc4acce69" + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "linksAsList", + "value": "" } } }, @@ -1417,107 +1777,459 @@ ], "CreateTranscriptAttachment": [ "Succeeded" - ] - }, - "metadata": { - "operationMetadataId": "59fc0f49-7782-4696-b7cb-f1b30f3402ea" - }, - "type": "Foreach" - }, - "StudentConfirmationEmail": { - "runAfter": { - "EmailToSupervisors": [ + ], + "PersistApplicationToDB": [ "Succeeded" ] }, - "metadata": { - "operationMetadataId": "956b2cfb-109b-4b96-b61d-4431cd5de8f4" - }, - "type": "OpenApiConnection", - "inputs": { - "host": { - "connectionName": "shared_office365_1", - "operationId": "SharedMailboxSendEmailV2", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_office365" - }, - "parameters": { - "emailMessage/MailboxAddress": "@parameters('Outlook From Address (uzhbf_thesisplatform_outlook_from_address_env_var)')", - "emailMessage/To": "@outputs('GetResponseDetails')?['body/responder']", - "emailMessage/Subject": "DBF Theses - Your Proposal has been received (@{outputs('GetResponseDetails')?['body/r7240915136fb41e8b884a045d08f39ce']})", - "emailMessage/Body": "

    Dear @{outputs('GetResponseDetails')?['body/r7844031f633e4dd49368b0c116ad148d']},
    \n
    \nWe have received your thesis proposal with the information as provided below. Please keep in mind that the thesis matching process usually takes about one month, but might take less or more depending on the workload of our supervisors. You will hear from us as soon as the proposal has been matched to a supervisor or if any further action from your side should be required.
    \n
    \nIf you have any urgent questions, please contact our DBF Thesis Coordinator by replying to this email.
    \n
    \nBest regards,
    \nDBF Thesis Coordinator
    \n
    \n---
    \n
    \nSubmitted By: @{outputs('GetResponseDetails')?['body/submitDate']} (@{outputs('GetResponseDetails')?['body/responder']})
    \n
    \nProposed Title: @{outputs('GetResponseDetails')?['body/r7240915136fb41e8b884a045d08f39ce']}
    \nThesis Language: @{outputs('GetResponseDetails')?['body/r8b7f3f4a7502459598d155e9b31eb25e']}
    \nField of Research: @{outputs('GetResponseDetails')?['body/r975d59f3f5114998b6e30c56c035334b']}
    \nPlanned Start Date: @{outputs('GetResponseDetails')?['body/r837fec8c113c4851a217e947217c5b7f']}
    \n
    \nSummary: @{outputs('GetResponseDetails')?['body/r7425856917f245efbd0c4cb2a7f0c434']}
    \nMotivation: @{outputs('GetResponseDetails')?['body/r60d760e8828645cc84d8fde2a6fe3b27']}

    ", - "emailMessage/Attachments": [ - { - "Name": "@variables('PersonalCVPDFName')", - "ContentBytes": "@body('GetFileUploadCVPDF')" - }, - { - "Name": "@variables('TranscriptPDFName')", - "ContentBytes": "@body('GetFileUploadTranscriptPDF')" - }, - { - "Name": "@variables('ProposalPDFName')", - "ContentBytes": "@body('GetFileUploadProposalPDF')" - } - ], - "emailMessage/ReplyTo": "@parameters('Outlook Management Inbox (uzhbf_thesisplatform_thesis_inbox_env_var)')", - "emailMessage/Importance": "High" - }, - "authentication": "@parameters('$authentication')" - } - }, - "ForEachSupervisor": { - "foreach": "@outputs('SupervisorList')?['body/value']", - "actions": { - "ForEachAreaOfInterest": { - "foreach": "@items('ForEachSupervisor')?['AreasOfInterestV2']", - "actions": { - "IsSupervisingTopicArea": { - "actions": { - "AppendToMatchingSupervisors": { - "runAfter": {}, - "metadata": { - "operationMetadataId": "c2e44021-c939-4132-a7da-e0d1b23020cd" - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "MatchingSupervisors", - "value": "@items('ForEachSupervisor')?['Title']" + "else": { + "actions": { + "EmailToSupervisors": { + "foreach": "@variables('MatchingSupervisors')", + "actions": { + "AdaptiveCard": { + "metadata": { + "operationMetadataId": "fe7ccff6-5733-4c75-8c50-ce0674dbd1b1" + }, + "type": "Compose", + "inputs": { + "type": "AdaptiveCard", + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.3", + "originator": "@{variables('Originator')}", + "body": [ + { + "type": "TextBlock", + "text": "@{outputs('GetResponseDetails')?['body/r7240915136fb41e8b884a045d08f39ce']}", + "wrap": true, + "weight": "Bolder", + "size": "Medium" + }, + { + "type": "TextBlock", + "text": "@{outputs('GetResponseDetails')?['body/r7425856917f245efbd0c4cb2a7f0c434']}", + "wrap": true + }, + { + "type": "TextBlock", + "text": "@{outputs('GetResponseDetails')?['body/r60d760e8828645cc84d8fde2a6fe3b27']}", + "wrap": true + }, + { + "type": "FactSet", + "facts": [ + { + "title": "Submitted By", + "value": "@{outputs('GetResponseDetails')?['body/r7844031f633e4dd49368b0c116ad148d']} (@{outputs('GetResponseDetails')?['body/r6c3b387342aa4bd0b5f423aa43662850']}, @{outputs('GetResponseDetails')?['body/responder']})" + }, + { + "title": "Proposed Title", + "value": "@{outputs('GetResponseDetails')?['body/r7240915136fb41e8b884a045d08f39ce']}" + }, + { + "title": "Type of Proposal", + "value": "@{outputs('GetResponseDetails')?['body/rc797ecd1491b44a0ac091174abbac9f6']}" + }, + { + "title": "Field of Research", + "value": "@{outputs('GetResponseDetails')?['body/r975d59f3f5114998b6e30c56c035334b']}" + }, + { + "title": "Proposal Language", + "value": "@{outputs('GetResponseDetails')?['body/r8b7f3f4a7502459598d155e9b31eb25e']}" + }, + { + "title": "Planned Start Date", + "value": "@{outputs('GetResponseDetails')?['body/r837fec8c113c4851a217e947217c5b7f']}" + }, + { + "title": "Additional Comment", + "value": "@{outputs('GetResponseDetails')?['body/r036f3f6320bc47e5b8c3694816ffe095']}" + } + ], + "separator": true + } + ], + "actions": [ + { + "type": "Action.ShowCard", + "title": "Accept", + "card": { + "type": "AdaptiveCard", + "body": [ + { + "type": "TextBlock", + "text": "Once you accept this proposal, the student will be asked to verify the matching. The proposal will be removed from the proposal market and assigned to you for supervision.", + "wrap": true + }, + { + "type": "Input.Text", + "placeholder": "Your message will be sent to the student alongside your acceptance notification.", + "id": "acceptComment", + "isRequired": true, + "errorMessage": "Field required", + "label": "Comment" + } + ], + "actions": [ + { + "type": "Action.Http", + "title": "Submit", + "method": "POST", + "url": "@{parameters('Http Trigger Thesis Proposal Feedback (uzhbf_thesisplatform_http_trigger_thesis_proposal_feedback_env_var)')}", + "body": "{\"actionType\": \"ACCEPT\", \"comment\": \"{{acceptComment.value}}\", \"proposalId\": \"@{variables('ProposalId')}\",\"supervisorEmail\": \"@{items('EmailToSupervisors')}\"}", + "headers": [ + { + "name": "Authorization", + "value": "" + }, + { + "name": "Content-type", + "value": "application/json" + }, + { + "name": "secretkey", + "value": "@{parameters('Flow Secret (uzhbf_thesisplatform_flow_secret_env_var)')}" + } + ] + } + ] + } + }, + { + "type": "Action.ShowCard", + "title": "Accept (Tentative)", + "card": { + "type": "AdaptiveCard", + "body": [ + { + "type": "TextBlock", + "text": "When you accept the proposal tentatively, the student will receive your feedback and is required to improve the proposal before you finally accept the proposal for supervision.", + "wrap": true + }, + { + "type": "Input.Text", + "placeholder": "Your message will be sent to the student alongside your notification of interest.", + "id": "tentativeComment", + "label": "Comment", + "isMultiline": true, + "isRequired": true, + "errorMessage": "Field required" + } + ], + "actions": [ + { + "type": "Action.Http", + "title": "Submit", + "method": "POST", + "url": "@{parameters('Http Trigger Thesis Proposal Feedback (uzhbf_thesisplatform_http_trigger_thesis_proposal_feedback_env_var)')}", + "body": "{\"actionType\": \"ACCEPT_TENTATIVE\", \"comment\": \"{{tentativeComment.value}}\", \"proposalId\": \"@{variables('ProposalId')}\",\"supervisorEmail\": \"@{items('EmailToSupervisors')}\"}", + "headers": [ + { + "name": "Authorization", + "value": "" + }, + { + "name": "Content-type", + "value": "application/json" + }, + { + "name": "secretkey", + "value": "@{parameters('Flow Secret (uzhbf_thesisplatform_flow_secret_env_var)')}" + } + ] + } + ] + } + }, + { + "type": "Action.ShowCard", + "title": "Reject", + "card": { + "type": "AdaptiveCard", + "body": [ + { + "type": "TextBlock", + "text": "Rejecting this proposal because of lacking content quality or format requirements will cause review by the thesis coordinator. The student will need to improve and resubmit the proposal.", + "wrap": true + }, + { + "type": "Input.ChoiceSet", + "choices": [ + { + "title": "Proposal too broad", + "value": "TOO_BROAD" + }, + { + "title": "Proposal not sufficiently scientific", + "value": "NOT_SCIENTIFIC" + }, + { + "title": "Proposal or scope not clear", + "value": "NOT_CLEAR" + }, + { + "title": "Format unsuitable", + "value": "FORMAT_UNSUITABLE" + }, + { + "title": "Mismatch in topic area", + "value": "TOPIC_AREA_INVALID" + } + ], + "placeholder": "Why should this proposal be rejected?", + "isRequired": true, + "id": "rejectReason", + "errorMessage": "Field required", + "label": "Reason" + }, + { + "type": "Input.Text", + "placeholder": "Why do you recommend this proposal for rejection? Your comment will not be shown to the student.", + "id": "rejectComment", + "isRequired": true, + "errorMessage": "Field required", + "label": "Comment", + "isMultiline": true + } + ], + "actions": [ + { + "type": "Action.Http", + "title": "Submit", + "method": "POST", + "url": "@{parameters('Http Trigger Thesis Proposal Feedback (uzhbf_thesisplatform_http_trigger_thesis_proposal_feedback_env_var)')}", + "body": "{\"actionType\": \"REJECT\", \"comment\": \"{{rejectComment.value}}\", \n\"reason\": \"{{rejectReason.value}}\", \"proposalId\": \"@{variables('ProposalId')}\",\"supervisorEmail\": \"@{items('EmailToSupervisors')}\"}", + "headers": [ + { + "name": "Authorization", + "value": "" + }, + { + "name": "Content-type", + "value": "application/json" + }, + { + "name": "secretkey", + "value": "@{parameters('Flow Secret (uzhbf_thesisplatform_flow_secret_env_var)')}" + } + ] + } + ] + } + }, + { + "type": "Action.ShowCard", + "title": "Decline", + "card": { + "type": "AdaptiveCard", + "body": [ + { + "type": "TextBlock", + "text": "Declining this proposal because of a mismatch of interests or a high workload on your side will keep it available for other supervisors.", + "wrap": true + }, + { + "type": "Input.ChoiceSet", + "choices": [ + { + "title": "Lack of interest in specific topic", + "value": "LACKING_INTEREST" + }, + { + "title": "Personal workload too high", + "value": "PERSONAL_WORKLOAD" + }, + { + "title": "Mismatch in language", + "value": "LANGUAGE" + } + ], + "placeholder": "Why do you want to decline this proposal?", + "id": "declineReason", + "label": "Reason", + "isRequired": true, + "errorMessage": "Field required" + }, + { + "type": "Input.Text", + "placeholder": "Why do you decline this proposal specifically? Your comment will not be shown to the student.", + "id": "declineComment", + "label": "Comment", + "isMultiline": true, + "isRequired": true, + "errorMessage": "Field required" + } + ], + "actions": [ + { + "type": "Action.Http", + "title": "Submit", + "method": "POST", + "url": "@{parameters('Http Trigger Thesis Proposal Feedback (uzhbf_thesisplatform_http_trigger_thesis_proposal_feedback_env_var)')}", + "body": "{\"actionType\": \"DECLINE\", \"comment\": \"{{declineComment.value}}\", \n\"reason\": \"{{declineReason.value}}\", \"proposalId\": \"@{variables('ProposalId')}\",\"supervisorEmail\": \"@{items('EmailToSupervisors')}\"}", + "headers": [ + { + "name": "Authorization", + "value": "" + }, + { + "name": "Content-type", + "value": "application/json" + }, + { + "name": "secretkey", + "value": "@{parameters('Flow Secret (uzhbf_thesisplatform_flow_secret_env_var)')}" + } + ] + } + ] + } + } + ], + "autoInvokeAction": { + "type": "Action.Http", + "method": "POST", + "url": "@{parameters('Http Trigger Thesis Proposal Feedback (uzhbf_thesisplatform_http_trigger_thesis_proposal_feedback_env_var)')}", + "body": "{\"actionType\": \"REFETCH\",\"proposalId\": \"@{variables('ProposalId')}\",\"supervisorEmail\": \"@{items('EmailToSupervisors')}\"}", + "headers": [ + { + "name": "Authorization", + "value": "" + }, + { + "name": "Content-type", + "value": "application/json" + }, + { + "name": "secretkey", + "value": "@{parameters('Flow Secret (uzhbf_thesisplatform_flow_secret_env_var)')}" + } + ] } } }, - "runAfter": {}, - "expression": { - "equals": [ - "@items('ForEachAreaOfinterest')?['Value']", - "@variables('TopicArea')" - ] + "EmailContents": { + "runAfter": { + "AdaptiveCard": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "4a75e677-4358-4992-a664-ffe5b41e0922" + }, + "type": "Compose", + "inputs": "" }, - "metadata": { - "operationMetadataId": "0b3c57ab-9365-4f2e-88e1-09f66daff6f0" + "SupervisorInformationEmail": { + "runAfter": { + "EmailContents": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "ca5e164f-cb5e-4a62-9467-189c5311ca33" + }, + "type": "OpenApiConnection", + "inputs": { + "parameters": { + "emailMessage/MailboxAddress": "@parameters('Outlook From Address (uzhbf_thesisplatform_outlook_from_address_env_var)')", + "emailMessage/To": "@items('EmailToSupervisors')", + "emailMessage/Subject": "@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Theses - New Proposal for Review (@{outputs('GetResponseDetails')?['body/r7240915136fb41e8b884a045d08f39ce']})", + "emailMessage/Body": "@outputs('EmailContents')", + "emailMessage/Bcc": "@parameters('Outlook Management Inbox (uzhbf_thesisplatform_thesis_inbox_env_var)')", + "emailMessage/Attachments": [ + { + "Name": "@variables('PersonalCVPDFName')", + "ContentBytes": "@body('GetCVFileContentUsingPath')" + }, + { + "Name": "@variables('TranscriptPDFName')", + "ContentBytes": "@body('GetTranscriptFileContentUsingPath_')" + }, + { + "Name": "@variables('ProposalPDFName')", + "ContentBytes": "@body('GetProposalFileContentUsingPath')" + } + ], + "emailMessage/ReplyTo": "@outputs('GetResponseDetails')?['body/responder']", + "emailMessage/Importance": "High" + }, + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_office365", + "operationId": "SharedMailboxSendEmailV2", + "connectionName": "shared_office365_1" + } + } + } + }, + "metadata": { + "operationMetadataId": "59fc0f49-7782-4696-b7cb-f1b30f3402ea" + }, + "type": "Foreach" + }, + "StudentConfirmationEmail": { + "runAfter": { + "EmailToSupervisors": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "956b2cfb-109b-4b96-b61d-4431cd5de8f4" + }, + "type": "OpenApiConnection", + "inputs": { + "parameters": { + "emailMessage/MailboxAddress": "@parameters('Outlook From Address (uzhbf_thesisplatform_outlook_from_address_env_var)')", + "emailMessage/To": "@outputs('GetResponseDetails')?['body/responder']", + "emailMessage/Subject": "@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Theses - Your Proposal has been received (@{outputs('GetResponseDetails')?['body/r7240915136fb41e8b884a045d08f39ce']})", + "emailMessage/Body": "

    Dear @{outputs('GetResponseDetails')?['body/r7844031f633e4dd49368b0c116ad148d']},
    \n
    \nWe have received your thesis proposal with the information as provided below. Please keep in mind that the thesis matching process usually takes about one month, but might take less or more depending on the workload of our supervisors. You will hear from us as soon as the proposal has been matched to a supervisor or if any further action from your side should be required.
    \n
    \nIf you have any urgent questions, please contact our @{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Thesis Coordinator by replying to this email.
    \n
    \nBest regards,
    \n@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Thesis Coordinator
    \n
    \n---
    \n
    \nSubmitted By: @{outputs('GetResponseDetails')?['body/submitDate']} (@{outputs('GetResponseDetails')?['body/responder']})
    \n
    \nProposed Title: @{outputs('GetResponseDetails')?['body/r7240915136fb41e8b884a045d08f39ce']}
    \nThesis Language: @{outputs('GetResponseDetails')?['body/r8b7f3f4a7502459598d155e9b31eb25e']}
    \nField of Research: @{outputs('GetResponseDetails')?['body/r975d59f3f5114998b6e30c56c035334b']}
    \nPlanned Start Date: @{outputs('GetResponseDetails')?['body/r837fec8c113c4851a217e947217c5b7f']}
    \n
    \nSummary: @{outputs('GetResponseDetails')?['body/r7425856917f245efbd0c4cb2a7f0c434']}
    \nMotivation: @{outputs('GetResponseDetails')?['body/r60d760e8828645cc84d8fde2a6fe3b27']}

    ", + "emailMessage/Attachments": [ + { + "Name": "@variables('PersonalCVPDFName')", + "ContentBytes": "@body('GetCVFileContentUsingPath')" + }, + { + "Name": "@variables('TranscriptPDFName')", + "ContentBytes": "@body('GetTranscriptFileContentUsingPath_')" + }, + { + "Name": "@variables('ProposalPDFName')", + "ContentBytes": "@body('GetProposalFileContentUsingPath')" + } + ], + "emailMessage/ReplyTo": "@parameters('Outlook Management Inbox (uzhbf_thesisplatform_thesis_inbox_env_var)')", + "emailMessage/Importance": "High" }, - "type": "If" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_office365", + "operationId": "SharedMailboxSendEmailV2", + "connectionName": "shared_office365_1" + } } - }, - "runAfter": {}, - "metadata": { - "operationMetadataId": "3cdcdaa5-8261-4fbc-9cc8-80f431b3c204" - }, - "type": "Foreach" + } } }, - "runAfter": { - "SetTopicArea": [ - "Succeeded" + "expression": { + "and": [ + { + "not": { + "equals": [ + "@body('GetResponseDetails')?['r03afe1c9ab4547a18b4bdbff6418b128']", + "" + ] + } + } ] }, "metadata": { - "operationMetadataId": "2a8c2544-f8b6-40be-8842-9a8104fc0fc1" + "operationMetadataId": "414efc57-a3c0-4b35-b64f-93c879d79ac7" }, - "type": "Foreach" + "type": "If" } }, "runAfter": { - "InitializeTranscriptPdfName": [ + "InitializeLinksToAttachmentsAsList": [ "Succeeded" ] }, @@ -1529,7 +2241,6 @@ "Catch": { "actions": { "FilterForFailedOrTimedOutStatus": { - "runAfter": {}, "metadata": { "operationMetadataId": "ca1bedd8-7555-4a99-a290-1c22c2e6e229" }, @@ -1597,17 +2308,16 @@ }, "type": "OpenApiConnection", "inputs": { - "host": { - "connectionName": "shared_sendmail-2", - "operationId": "SendEmailV3", - "apiId": "/providers/Microsoft.PowerApps/apis/shared_sendmail" - }, "parameters": { "request/to": "@{parameters('Email Failure Notification (uzhbf_thesisplatform_email_failure_env_var)')};", "request/subject": "(@{parameters('Environment (uzhbf_thesisplatform_environment_env_var)')}) Failure in UZH BF Thesis Platform - Thesis Proposal Submission", "request/text": "

    @{body('CreateHtmlTable')}

    " }, - "authentication": "@parameters('$authentication')" + "host": { + "apiId": "/providers/Microsoft.PowerApps/apis/shared_sendmail", + "operationId": "SendEmailV3", + "connectionName": "shared_sendmail-2" + } } } }, @@ -1621,10 +2331,49 @@ "operationMetadataId": "054f28a3-080c-4f8a-9529-1183121f12f9" }, "type": "Scope" + }, + "InitializeLinksToAttachments": { + "runAfter": { + "InitializeTranscriptPdfName": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "11aa68ed-fbd5-48a8-b078-5683c4037ea9" + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "links", + "type": "array" + } + ] + } + }, + "InitializeLinksToAttachmentsAsList": { + "runAfter": { + "InitializeLinksToAttachments": [ + "Succeeded" + ] + }, + "metadata": { + "operationMetadataId": "ad967f30-6249-479c-84d4-670e62425731" + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "linksAsList", + "type": "string", + "value": "
      " + } + ] + } } } }, - "templateName": "" + "templateName": null }, "schemaVersion": "1.0.0.0" } \ No newline at end of file diff --git a/solutions/UZHBFThesisPlatform/environmentvariabledefinitions/uzhbf_thesisplatform_department_env_var/environmentvariabledefinition.xml b/solutions/UZHBFThesisPlatform/environmentvariabledefinitions/uzhbf_thesisplatform_department_env_var/environmentvariabledefinition.xml new file mode 100644 index 0000000..04e488d --- /dev/null +++ b/solutions/UZHBFThesisPlatform/environmentvariabledefinitions/uzhbf_thesisplatform_department_env_var/environmentvariabledefinition.xml @@ -0,0 +1,10 @@ + + + + 0.0.0.4 + 1 + 0 + 0 + 100000000 + \ No newline at end of file diff --git a/solutions/UZHBFThesisPlatform/environmentvariabledefinitions/uzhbf_thesisplatform_root_url_env_var/environmentvariabledefinition.xml b/solutions/UZHBFThesisPlatform/environmentvariabledefinitions/uzhbf_thesisplatform_root_url_env_var/environmentvariabledefinition.xml new file mode 100644 index 0000000..6fc69a7 --- /dev/null +++ b/solutions/UZHBFThesisPlatform/environmentvariabledefinitions/uzhbf_thesisplatform_root_url_env_var/environmentvariabledefinition.xml @@ -0,0 +1,10 @@ + + + + 0.0.0.4 + 1 + 0 + 0 + 100000000 + \ No newline at end of file diff --git a/solutions/UZHBFThesisPlatform_managed.zip b/solutions/UZHBFThesisPlatform_managed.zip index 3f050f2047efe3067c8cd0bbad8bb9f0aa55be1c..6bdbfaac4e77389bdd3a1f35f96e7a3269b35964 100644 GIT binary patch delta 34091 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

      iR<)Ve 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 R;tb*p=Xn?y*3Sp&2LN~hs7e3; delta 29758 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ⅆs&Va5xdIw8-c%kdzwYJkrFF#oPf_bcRqFyr zE_W8FSipfE!)B2)1XI*5F@r30;!ypjx~jx7l}g9S=(R`$RlnA5Y%oa_IBEzksM#$` z6JWVOB%9fiy8p}1c{t`m@Mbqgla#aR5}aI#_1!Vh3cF8wo;#PS?RL8H(;hdx7(m2Z zK6I3-h9VCt)mo`$jXWu z5aOlFYqlMEByv`~8ndLU+dC+OI3tuL84Viemh}jQ8=dnZQ?JT5 z&wau)j=;G6>ha`|fek&wwvyt|A|d$|6N2amGf!7mLm3`qgP~`WytV2|;C~6@mBt;# zVd^1LqEm7u>r`8DK4&gB9H%S_)Mu9EU@mwttumvTSkc*Ao5Uc%ek6|G;Tun>;FZ+l zxy;d}GP+)j;F8&|IQp&>Qy3xlT3W}j7?@vhV~fY_r@PC6dTzi8L{-vI?Fd28y?_=I#M@6y%~>rLf_M@A$b!wijj>eZ?L#t6Kgin$pqmLy`G(>k zM6hqXHged{3CZJoQ^pE5Sj;cr+BA)k1bIgm0?=$lz3-Hp8?jITregIKe)rbcV<*o) zQG@Xp?Ct%dFLjCLzXSlw=L;h}`UVylYI!$~4`&76Tt;|{Fk71CDAdsIMzS!BT82%w;hD8;= z2s%GQuuJ|81bIlHofM5uXl&f~#~&V#BE2apnx-&t;y8=Zw80A!RdopwWMxWhV!mTw6{duSkkfLe~*o~)|B24>c!JM0-dvi1+t0L5C6CEE<%V&=?$-q!K-J6-SI`KoUSB2{={3yf9FeQOE)k7=y z4fHh}LxpIekBoqq8&I88Ya%8P{6p^|{{<(2t>)fMP26q@9NikJI=wHC)6MW;SsN;E zdF_In(i7#7PmG?b?1+d*z^bk_1rSXT&(>Lx=b3AtPJQr2Mn0Twxne^N^M$(VLXuS~M1mv&Ax02|oS$q|+!sD=KF)KCoD6VfA-bMZARMdGIk_|}ouhDO6^mBma~ZIW z69bFw0bSC5y{+mV$DJ0zZGSmv}@cdv34$>QF9u!6jD8dWw|8nh!dAG z%?cw(T=sU@Y9p!;&F;eW>g&?ExZYgQ#gLG)wsYfN{UObYQI1_GR-}-&iFav<6W>%Buj7JI63Tx+4axs3+g4k zKoC`USivw`W8rEA(>JZi+&YYt_ZRfV=LiqZ6;1)l+>^SJcXc7dRF@Ufjxxa|s0bSz z!DIwH!2v@kt%dgjW1Lklc#Jk5Fin~xxgTY~Emt)Ys(gB) z&pQ{ah=-gP){8{rOWTR7k^C%~5pdmO7wi+~5NeBIorYgLvAYMrnS|AzhGKz9P@7`?n32|%;XVhmV=0z;RhI#$ z#Mzd|J~YbX`~f@zr9oZu#-mAB80B!1q;i#1y3R_lg^Q%ySaO}{Pb|e@!6dSHsE0U^ z31wF7ITMiu*}0HYrX)kYPE?+KX&WdcGK2g}>ZE2R!$SSJ`8Ho8~AU+nIBjyOk=6?J-Ol zxgkb52wOs_AE4Bv82&9m{zhfMuS!WKn>VH;HJf{FRZFkjotTO|r3=&~v`Zjv|p}r)BMT1I;tcOiJP|mQr|IM8?zg8RxzzvN90DacX5Ompe z=j~-Tkc!XdvkxtV{h(SG9w}ph-J$m-tB*jUB^H9Hs+H_-C5$B)#VA-39B(Jn5OXq7 z?XiO@X;#w4=H7M>8#QYYUm7wnd}>_K!1Dm^Ce6`D5E#HxBCvl-UG8jPh1#NV4MO%j zhw!JMsYHojffY1Ku4N4%o{%Kxjz3D)A9*v74LqwDodkO@ZJrr9$F7LmoXU--aln!3`x)(kzak{$xi;RtZBz$xIAKl*(H*xRfxphiMG3bGD z8_S`oC>Bv^4X7cmkd2r^wDkW`Cq-aAn4&h-qM=1qzPhYOb=C>o%8-s~iA?H~Qkc7K zBTnzEunYCz#PVIEFKR0s8zYA;L|;wpCx>ZImPXq@kSuC!1s`XVt>;ue7L7h(;S`1E zRNto*QLgNkC;i!=<`LS3rnrO%JffYdgPeQjU;(W0o3Re_B_FMVHrBcZHR$BSj^rFxau zVm&0&P1DQao{-p;2f6ZEJtTE==r_SCrcda?+1`rI{$~!&C z<(Gib+I3(|R~Ke@WzegqCRnP@h&0n^bqHJiPeRT~7fqzDV%s5qN=3?eulL>X+1a_c zas`bOsReVb3oSnL21?5^di?oH3`A7W1$GjqZ_5zz#?n`nM)FVWRoWOc1Sx`d_Vr7n_j$45mw_STGZE7R_uL zYMP}%+Bzm|>@Sr1;7B(qt-)IsVO(eRYgHK?hHgcYNmf4A03Bj@(moeOo8&J^GN+2d zw{V>sA*o+EYjipi!gABSEq~GLE_;n4)lDst4qbqx6+L!xi{r`r?EAyLvKvEEpbqr7t{lDR{Wgc4sJ%A9%XXS{` z5x-e|^4^zdYe%t!JIl*dtsNglCv9ayu}nL2W5U6JnYANI9+HMT8mIGq39WBBOv=Tm zm?%1+tk@*O?)yD|hLH_V@9&9EE1Vz^EDF$w=FYj!;h6pqasmV#N&g=|COIR1`(kuq zf!Je590Qv-E;&BfSN|Ef z1S-_QIX!P6oLAs z(iLpLB+)Cxh*Lvr1c1py@uWg+qf#+7`yI`2bW3gc*7o$c(K@~RxB=vYRY+B&MGFM~ zp1+kGwtY>Fl^C(xxQ*nuY8AH1C#lFXkle7%OET_ocAq;;eH^qMC3>92Hd4H(=vxDN zo}U9f{*5$H^q}(#S%wk~_l!E$$DXV3Xm z4QoJgj>gmAL+!fpzV~s z2o8_8ySB>V4oaSML$G|Cw`NTqewtYI<0+U{){A{k=VDW4H53rT2 zrh~&x+jk~8+i0NOMKJXBGUIi~yN~tj?aTV9-uvaz(_wxMYt0VF)5^>K(cAN%3&za+ zdgRN^Ia%>bolXI6ftL2?=eKwy-eNi88WmELRd}u-c{uqD{+P2OAjnAlOED@uVV}+R=8@I_=ZYrX{*`Y>!BV$YB8FOaW1g)NIr3AAYO07EM$gdHwG7C#6^~Qw3zi zBa+DY3tONZ9yB`m4i8Latq#hi0#fN%>ABF9e*J2rxCAN~V}0jb~Wyu*`$q08$xqW7!K1BDI6*YqaLE*PcD>g#jl-u@>m0_~5h zXBIgA&Gwg|O+sjnrM|HY;KS5|+{A9Pfae+Fhda>C(+mF>EMHCQ-nE-yE~I5CVF+C- z;to@IV*-gR8<$U^EJ2^{J;Yg31LtbJ$Y5j;DzQ?^Le56G{4-H_;}R(@O_~?l7L1sy zGx-=cRcD?CEpxkNBgys6_H7SwoD2Qoba;43z$ytGbhy_(h7o$`!@Rq)Q3FJui(|@0 zstb_(9py%r2R^~qtV#rvCJ}ph4(dFNwD3@g`c~0NOW{C5zXDc(+E7KC^pKoa6LuyG z1qS`aZH`f>*5QUCE>xRhqNUdCOsVsJ3fG{AKHu>cixXl*YoFvJ(V2{Hc$+%RRrmFL zbCt8e)w4OCdX;!}N`0^h(=p4GX-Iil0tUDu%0cK07y_Th?sA`J_bt|n2DK4swsG}X z!K}KEMSKY9>G>`B(fvd1cRMQ#6gXED+Fh%`&v76x<`1rNM7pk@R$N*3+;ah;xq*@# zwHV(PL~(FwepsCC>O6&s{pmAkr`p=-C<1xpZM59MUtS8o1qYT(6aEnJ$U#Rr)ERbC*Pe2QnFb%ezUHa-|fP7L-6}D_sTNB?bLZT z8#(CCFa%OuI&hK@2Vb24e0Jkh1tUOOp0Uu08(4@zOm0v3uRL@l@H$58>iyK*#L}#A z>{u(5omQe6lwf~sFKoB99+0$o$JFy>qPe9+Y|62#BdITHSC`aNGEWpwIm6%O8edz@ zjyh!r@>ny$Lvv^lL?gfq$WMlWO}}h+R6A$U@j@?kiA%q^c~PSH2y+T{1gv`2_V6cr{{ra8=ZwbI70@QOZF{0xmUV1v9d&TVj55ygFW zNGt7}AZy_nDT3F{Uycfh9a0ki=Ztn<{pyE#W3aFNEJE`DSH z>E@m4oHy4uezuv_9Mnuz<$JjztZE;z8Vu^a*@sl`WXK~5Y_=ZrZ|SEoH-y1uMx{-| zx6Hh{FE@D-c9RYXb)q_(@&7i;VMKMr`n5ere4jwA#LYhraxYu>-V=sI948p6DEMk$ z$FJrCp+RK(Mw_oatuo7`&zlFKb+c43|FgU1QNp+28c1Kzb%}d+!v~uLZ?^xjEEd{Ktdg zQ3pex)=G(4Mhc(B?3^mUV+MamMr}$6q;lXn!%#P(dui5dcl%Xo)3w%VxrIu~``&Yr zcyQbf^mbb;&E}W-ZV&bGu)eK9$fWSg)=9uZu8ghwUX!i7c*I=da^b#J{d?LM46w=+ z=ei08I-pwVsWG+v=&wmHB;MLNllWq2Ce-NaZG$-n9c-Ui(3!%zN$l9G6Zl$}d+Iv{G)UulB~}6adwZ$NWFyZ0-sD5gX;B!sZ(%k_ z0O?m-uIS@skGJ1m^Z0s5cID}OFwSFJ(I(6iG{8Ihp+0VA1ZY^DgKyJXCDgS6M`HeY z#;9C`?#W}g*ZrJWepxmob3f9Mb*`~%gKlhd>{B6{&4tMNXG%|x#&2b&{Mbo}3W$ow zF%CHEYmV8+8*uD&G23ht&FXJN6~?3ei97|)f4^^(YkL6bv0R3^WE&9?R zCP4EUbWbppfZt8i*+q6I5l8Z3z1h11&St7&2DwaN_N4$C%ogFH*jZ7tXogU8l(BA8 zt|{B72(d(~O2Gka+Rla1G14U8Qbnr$!%zz4@?pMV;HZm8^hF=?3_KJEGXHQ6xrXU} zfT+7og1CAr=hK>tu;13J6&C%s@H!zPAK=f5i1_{l=3$AEad@n;w((0cm9b+hE+-X6 zLq8v4NYrv(Qx(C0aG9(#tAVOU{33&NM5~qPjGmict@;xX+wsaC_xnyMlp;n<0 zU!_ftO>|K&>?%W7?gGDunvZEiX%A8B={4?SsHOqVUtAo zoPXx?!I+^Jv!FEM`(}Tg0dvzkQ#Oeug=?Lu?vGB5+{T+j zW(|IHg78$e3wkCp3G0Z{k-Rj_l4v<4hAz zr#}NrWg>%q@s@7SCbqlS&&F;zt4*z!L30=0^D;g2a!-@ zyLlcU>23rNuDDFWYT6~sFv&o*Nls}QI1f^a1`*>9YUG1#Y9|xwJsNPTp!||52$e3z zr(6-HHo`*##^O5{`xTDZNjxA!(Y~n#k^%QoloRlnG`ipGoe5EQc>=655tM^5rabk_ zpzIdq0By`QBGq~1(xndC)qpepwb8TnQZNg6AKZ6%-meM48diDG_SVfp~&q9Xbi&8&%o(Ddw$`TWDID7 zVyT6O3G7t}>_p@prvYxYirAdERb8gX5b~I-NR%*mFfH`K^&A;CBCw+d+{fVT@s<*5Tk=qV`Y%U4t%*QLUv4VW)X26i zeNPNG;L8!2G+yV#Cowka)`lmAcO=ZXVEx^ZQPNHMwWh8Fl>M@~~LFb0v?KjQpXsAS!uy@`v?>jv+REfBx1-@BYI1<ijK_qpfV# z3LwxBJ(pulK;Q{&1>xyL z%n8Y@fHDI~z~T0T;rR_jQnXeAzj*()HQ2sU1hMwS7lt>z+(zzPvmSbFaje|xNx37b zd$jVW|LPC0WJ$h~b$2}ZSg|+~N`ku+J_$!F59_QbOI_N)>&LGz%H)em(U#ZCx|Q%^5(%$~-vIp0a8$lP}OL6#*pzUwa6uXv483gR1b=Z>u~^8dcLuZ=$Qq*4T+u|$IKONRC9IiD^m?xt5M+#y;51V=41A7B=M4U=Aby2$OM=t z4thGnR!&O~SO1d6EeE>~W6XTSjn$kUa0k zdMnXTb5&0XNOpLc>voS=;c?FxKLNV)kjS*bi{mLeO~>1!Sp5?DP<&0WxVh#_>$svh zx@Q|_!`Os*mlX!MVSsiiF};m@uO%Iq?>_8OqMn8{=b^^*cKQ>G+$lKqp&=rc9C093 zL0c@Lk!_b+J{z?;=xB|X1=%FM&)YqSh5FFxbm>UGU_F&WL$sBuk*vIqlQB+woLRguOtu?pIoMeG&j@2}+DX2+1~Q?-EZEmkpD$Ew`9m2{tk z`k=Dv&7+Q#o%;oFT5lOObA;v#oI50PWW!f&xH#o5U6g$<5IA4{k|1Um__1NiA*(e@ zuX(32i#SJpu^JIRL{^L!nFqWxX)N7S2+LYTwSD^*VTwN0NH$o)6k_|8CCS))=d0wZ z=_Wvm_qxJ{Ij#XR-o5uAMX&x_T+vqbPJ&+Z12PiQrnAqw2aOLEjd+2c*E7q&M4MEG z&s(~%tn8K2)`^!A=*Q{eo{b$QU~ILdcbaGQ7L|RWYNEdtVTP@Ly&Gt7Qye#@oZ_zR z4kYI!9aXBpQ&6xO!V>Q*iWdOnIoL?6>?*%la$hw7-G+lCs$wI$;CY%)R}trTcMX&L%amCUK{Z7Bvvw?y|#0e+F;9 zs#qG_==*wfv?*e+H|Zu-ssMJtiHXkyNVTuq79CL00(V9q1wCKqb8-{VpO|6<%l@rNl#JL%{6rDA8xp z&SauB1HhSKDKmPWd_uR60up`8Q0As}&JE4gN*``=30E9>g z%ni;*X@u!5B^m_wmfSv^FO=Ul|EVTc37(V_Ozrp938ES%=8I~V1grZDO=icr zwhjRSe8Be8(bHDgA%!=IyPYf`_70~EKvu6rIu0h=rkWUaCY3E5HoLP!c7%!L&N(JIL|7;&#>A_<*dxKe;R=M_ z`!aL4Mr&9)#L}kC@;yFYQJoz)rz}W%Ys2DA(;tlR6(+-s30=jUm|jBM%~V`uERc#l z*IziojzJmt!{_OCTj<$-b{;7;90|b(b5$ff(PCP8+c2c{ZV zA^boKk-Xrx8j+l&G8=z6NF+-AMNr}tYDwq(^Mm!UFhG-2LQZ%-EtJK{76;!_C@)uw z6uVGHrAdL>&CMa4JaCVaPCh_pvYbkh0y|moh4&g5i+T(wo}9|7J23v(A|5gWV#~@M zUcJhzqs#5899C0CK1&Spk(<$TXS;?RV%vRwyR71G=ld8MNeB`Mm$j%i!8$)vmVKCd zfA{>Xw+@u@_|}K17#7=C}AtQ@k%qYo?4_u5r6qwO?V@5-gs0dJvUdHLWf@4E_e~ zC{_>5w&AhaE6lwb*Rx{eRTdlO>Vo@DFi@=bXCMaC_1@uGg6{%3y6Wqk_1aT~Eu=FYPr zAm-y4kY+FN&P}ZiN*}Kop3?K^X<;YORLR8}CpQ$p#wU(Yp}x&e$22B=ItdQ3JpKbn z0u8Z>Ah?&>9TE+XFh$j5f&-zk$ih3FH=5#aM~9@Ob}kL7EKu+zK|gi>w+duO@p1gD zNK!&xu_3Dc(-0)Sd}B_EDF9iTuP}aBwf0FxxI;{g338BpF-^K7Wx_OjR)T-|W?ja) zusOc~JD6i7t{s>TsseMv1lbXF`?qTW5Jj!rBb zFhn#rJDcm@h`+wPW$UYQrisK_Akrjz{tC1(;Jr&sG#6M^3skP!puvMd!8GP33SFpD z?-|cRARk7fF`QEEQPjvRT%TiQMFpQXgG_=W|Z`ptBQ5n#kJ&jm89y=RNa9 zhok{IgH*XvgtPBiOW8oRZce!HA1+uF>di;eoBnL8t8>S-S~G;WlOfAvVH`a&c&iDO zKNm|MFqwaq)713x2%9Z1SyY>#1*av<%~L+*##C?gmUTk%-fGQ)%^}-tc7TOi>rS4e zFUdflSJc0!{>-vNWcpABc~HdY4SU(38IRvV0qzo!;+Z1lTf z|KaShk64ctqp=ERDNl8M?9!f`;O%Y-S!Vnp8DLt*qEolZ9K^ycsYVFQg+k}h6@e3U zV8Wa~3Ceb9bma>+OfDQkXziHi!`%U9r4T&hENB3lGAU{;_fV5($9 z$h?q7i~v5E2uVZc+#92BTi@+h+KvWB=G3wJ#Sj?9*Y|x(s#B5}jEne5gyc#grb6?1 zXr~x8ysV{@cwj zFMNPI)I?(68J_BCZ?i-=IAV9%G+Qn|7L}Dzpt(Pm{$vb*%%!$&7bc{Yc$qQR_#kN*kIVn+Z3EewkC zFPjL14taU~AW%Qxf_|4EioOY`ui|0X+I6+d3o)%slc>a&McEeo)Rp|%a9D=w$th;U zmRyzwPBRzmj`0`9`854B?^SsO0TB~Dg!^P-v*X63cR|!bI!j&-?4X1*#w;f{3)S?E z#v_{0UCv8wb!x)2Gg{AT#5N9>vYbG83c5a7^_vPoZ|O?l#2*l&=>w5mX7h#Z*pa{i zTRh*VWaJ!!G>~5yphZgH8OgRM1^j%~pndk=zkiQ?qZW2eN!zo4`NmF25CwXxbircD zVSIog+ivws7T2<{S_ea-R12(zNZV8wxq- z31l`r^Q~*58P+xdF0JHKt?83xok|?Sa{nDykMEBP@FPQfm`%l3bc2FZ?t2-|jwsXb z?aW3*Gtr>(IzZkftn>g`3xiS z5V)xdz!T7=rl3&aPUP6*({7R?n#ATl8OPja)(teKU_RC)bNn zz<#BiPA;`#AIplQ%4GCBHIJfWLI3Lelj5rEaqHVop(=PHy7!-fy33~y$(Ihr9--11GL{b6m zqs=Ejvl9JdYdB8SHcv}rzA0*y)E!EWS|t%GF(K9~>)>Ll(Q!)_RWiYjH5z$VSQ2y6 zkTjK}OOD4=X#k_)T?B1YY48P8){)u&?#YEN+-3~Yh*aH<=TBh z&T7>eai_smiudZx&UTHQt%8P5xUgt>fhsBDUcG=#>Dj9zWwfqz-{jg-)xEiJn9^`} z-RlM+=JF39ZD?!^kzDjISJNLjYfuWD@;%GpLR2UNqMN8LW!5JIywM_77OX8>S z;JW87d6nz-dISDD52EXIA0L1S0urX3u;m^Kv|Ig-_R%HS1)d8}f`7H*CEy`86^*VJ zIVj8E;@Bb$ZuE<%;kSH2ZwTSSm221jSb->mq@--w-Yir!+2rK-QvgY% zsR2^}lM5-{8~IuxaV@gs)*nGbj;l>yaMGuO_f%9-bONxBULYl@%;Ai9^?M>8GP-~Z zu=ocmIVtFaHG~pAH6-^+xq^xzR!Fne6-$c??8D?W+ivPBS8Zmw8(19v1TO)P5NC&B zx^~c3Q)6b2}evhCS`CLBz{;k*K}xVJbY+kmTpUC8F7qc?%P z?hh@K-}5fa30KMXcHdoKge1r+SQh#x8>xLvCqyc;d@ouB}cH!TH=No*QdQR9LdVkxePLc|&!I zYdEJcG_E+GeYXcCGOwpy9&o3;fh^DdE*46zu_n6v%Zi+^0i{1gEnpP-YbE2)B9uJ+cdA?Kcxy{Fs5AuoSG@>)>wAj z4d0tdu9XBLv)k~Oz{20`G%S&r_iZBjll1DcKV$i)$5KBAQBHV^*hXE?SRY{SZ_Su& z{cI*Sqc8_Q7$c_luAysp0`}%Zdf97)a^18uKpWJAv{Ib7KX$IJ+JDvt)d{{0E^byd zmGjA9z6@R(@c6l%`mA&+RiOVeY#<-COZySnvgdHZBUI*7-oc0_45Emz;q}^Sa8fjP z6Tt2{4y&y-TS|8f6;O>QR%QTNXOr}0tj0Lc|0`GeynKn+3wYB{KOm6JF{ZpyBq15Q zez{MwyEpqV0rQFP@B&3kyOaOTYo&Vbo;S*1l++AA?q?0=TNjdT8vc~&3}}7?Qmad; zSAuiSE1o38HsCF3D{ zfsLqg0?vbIV<`U6bs%So>u`;1>lM##VJuGZne`w?@wuru>6cs{+9pbo)Wz>k^$#_` zOeU0Xv38Oh6Kvt=+(1~4Ekt82#G_g(CdUy4n5SOps*sgt{-O{*_#-_7{zQA(bu%~u zDutfAv!k1*fm<`3JA|_u44If6KPld6*YY^yv<~Bp{ypB7b>Q;3%Qnr=K(RsGy+KIt z<}W>!$alxD99X+1G(^4L?!QS$vB%5RXLJCf%%QM2aP-Mq(D{8|ht4BYG~svGO-+vd zP-J$UHVPN9VWm$wY*)l-EKf)G)6@=|OC?U>2GmtdjK8W2f0akoNDn~$W`kRD;d@lF zsUK$=@zx<~MginDU>WtmSK;rH9N0(>o!pH(*tE2$>gwT>T z5|yM)6_B6|Kl1wH5t%S<@gr|8HYu*pt9AG+V1Qq2kG< z&3xsGVYJf2t^LDj&^7u7UArIYvHe*ZcfLX`(t*Ke?$N{D4S1^o#>lXK)VuBKTCsXs zEBT(r(;12{#nEeFDZ+k3rA)NBlBtlFEG{efhWYXW{>roX2aS}!0n*jU>-F{C#1$Ed z8(&FUNEK)Re-y%~G=3n0#)$8oC3C*EQ9fc}FiXE6*&aeBRUYs_W@;P1)7zAS?HWJ`_gaUv3742 z!VU369f^F|`sLk+PCpyfwD`%(oJ?Oz-+Z7%_+ig6Xj{cK`F6-WO?`xZ~ z`!gjU#X@qzGZjN!@tU@h#8!4tDOD|d{zFkhWMG1#@dS&I@zc)}b)m9>czDX_=VEE6o;21(kKt^a`#%o4AP_k z?mZM2HNKwUD~4x{pjPMO~MLa0eAEDeYwFA?CK|8;t2gzwL4E5@fPHwLgD3}d=AI`-O- zKh*Nmb5`ZrlN@^n7g%@sYm~8_k4q}cu4!|HNNo8mwv0$Rdl4j&pND7J$JWG|E-hWx#%5w+hpNQSkdX5`2UDYypJ0Jk+ zeye{4LMa4RZ*Q@DW>{R(v>E95cy zbhyko1rpM`z0QqZRyO{&G3D|!cIoqeyGc?LgqlZ!a41XwQWMkuN-A7R0qK!HMJ_ z+sYpuaCI24%qTLE(wROdQ4w>$G1*csOIKpgoe60W`SwaU=s1XLC)fCyOsIak8X06d z$$qcHhEPPx4S@@l9QPIPD~k#yS(MaP35Hg*b@i+(7fn;nXNqh51DqE+2&ACtxZT^(Fc-ASDE&hu3ZR-5WkDKj`C{V8@zj%rd zAL{39lY-$ba$=e$B2&A*2v1y~et!@ir2gx|eJKZa6{%@x60Fp)Xp8f%B$8TrfUQ5D zS!ldi%cx06u5d1gx1>4&yQNZO@a{@l@?$&U;@#UBKL2A`FoHU{q-9tjQAfEmOHmWB(l zs7KM!%FxtxXJiUNot$&T5JuM9kAhV5oX0_ z*yzYfCTvc&4EYlfOXb2%*4##n)u&XFlV8P`PU(QzBJ)eXEjN!YaA>ugt^?ekN6RuS zb-`=&${+B#7S(EiAG{AQtqkjDwXN|{-U~*SkGu#0Onsnl;d})|y+`gI2(bHEiB7QF zZ0k-HNs+UB&h~ywSbd^13KTyGz?nJC$uOBn(8+O2E1JrcmA)~lS&pevYB8fSTk#uP zsJ<;v_S|Y(&omo*l~=d>PWU$f;Gv-u5aPfTogPFMtZ@y1`uctBB{0F%Go+Fr08;%p!BFE>6ijRF-tlp7melAY8~UBoCI z9);|euzmhq!snjMwlf67mAn=#vyXXztxFAE(J*+JhPZMuXoQOueP4unDd&bewb{L) zElOW)LNjUvifSYE@t?ZL&MS+v<6d9@;%d%+hQ$?*V8xRw#Tk#p84s4!?8mDjQo`Pxrx7ngnI>KoiwG=s&TZR@@;4%b!M0K|ny-KtVtp6ExB|>S;se zLH~9=tbYrS2mRajkOzswd@-RjMxcHvlKH=r2+^hgwSL6_|7-Eax&7B_i4Xd(C6w6p zUkf5R0u=Q>T@+z-5`VpZYMy>-1|*;+bJQ=T*#8$Kla}(2Ws-`*TsK2Gm7Ofll({FU)|t7mHu~4!zPgCGJH0NWB%-`gzy*q zzjD$bAiDoUep-k`pJ401pnoOo{|gks^_TIL_uKz5{wsaqUtn{|zhKKe!N08k3x7dC zjQ$1mv-$*5CS2u7|Fchld^|8K_k`F2_5|8cfrRP&e|*1uP_jSyT-fq?D;@qt0Pgt- z_Wi5!_vibZ%=`pd{0o%!S-ZW^^&f@uLOd`upT7$7(USkCz*A-axb^?LxC{6f{1)@= zKj42z&WrHCg#A9pIT8em1^%i_vFnHJe-ix1MazGwcl!S&c#UWO9|3*|9+-IG-*KA~ zvA+Zb9&}Ov*<;5ifz`hV;DSHh=SYAp75+zEt`rX}E#&Xwr4+gUBaJV^15*t9I~<$# z_ul;j&n?3PJx_@F^p!T_e;ZB Date: Thu, 22 Feb 2024 11:57:33 +0100 Subject: [PATCH 41/45] chore(app): defaultSorting by Date on supervisor proposal application (oldest to newest) --- src/components/ProposalApplication.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/ProposalApplication.tsx b/src/components/ProposalApplication.tsx index 4427b7a..0e107ed 100644 --- a/src/components/ProposalApplication.tsx +++ b/src/components/ProposalApplication.tsx @@ -106,6 +106,7 @@ export default function ProposalApplication({ }, ]} data={proposalDetails?.applications} + defaultSortField="createdAt" /> )}

    From fd97f7d8daa9e0fba246b144743d8315583910c8 Mon Sep 17 00:00:00 2001 From: mxmlnwbr Date: Tue, 27 Feb 2024 07:42:58 +0100 Subject: [PATCH 42/45] chore(app): Display student e-mail on student proposal (to supervisors) --- src/components/ProposalMeta.tsx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/components/ProposalMeta.tsx b/src/components/ProposalMeta.tsx index ee6d4c7..f66ca13 100644 --- a/src/components/ProposalMeta.tsx +++ b/src/components/ProposalMeta.tsx @@ -80,6 +80,13 @@ export default function ProposalMeta({ proposalDetails }: ProposalMetaProps) {
    Submitted On
    {format(parseISO(proposalDetails.createdAt), 'dd.MM.Y')}
    + + {proposalDetails.typeKey === 'STUDENT' && ( +
    +
    Email
    +
    {proposalDetails.applications[0].email}
    +
    + )}
    {proposalDetails.typeKey === 'STUDENT' && ( From c29f111b8f49383a2d4ed967b3683c7a57104548 Mon Sep 17 00:00:00 2001 From: mxmlnwbr Date: Tue, 27 Feb 2024 09:49:26 +0100 Subject: [PATCH 43/45] chore(app): Add Comment from student into Frontend (non-required question from last page of Submit Thesis Proposal) --- .../migration.sql | 2 ++ prisma/schema.prisma | 1 + src/components/ProposalMeta.tsx | 10 ++++++++++ 3 files changed, 13 insertions(+) create mode 100644 prisma/migrations/20240227081238_additional_student_comment/migration.sql diff --git a/prisma/migrations/20240227081238_additional_student_comment/migration.sql b/prisma/migrations/20240227081238_additional_student_comment/migration.sql new file mode 100644 index 0000000..e141f32 --- /dev/null +++ b/prisma/migrations/20240227081238_additional_student_comment/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE `proposal` ADD COLUMN `additionalStudentComment` TEXT NULL; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 546e8a3..11e26ba 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -123,6 +123,7 @@ model Proposal { language String studyLevel String timeFrame String? + additionalStudentComment String? @db.Text topicArea TopicArea @relation(fields: [topicAreaSlug], references: [slug]) topicAreaSlug String diff --git a/src/components/ProposalMeta.tsx b/src/components/ProposalMeta.tsx index f66ca13..5ee162b 100644 --- a/src/components/ProposalMeta.tsx +++ b/src/components/ProposalMeta.tsx @@ -89,6 +89,16 @@ export default function ProposalMeta({ proposalDetails }: ProposalMetaProps) { )}
    + {proposalDetails.typeKey === 'STUDENT' && + proposalDetails.additionalStudentComment && ( +
    +
    Additional Comment
    +

    + {proposalDetails.additionalStudentComment} +

    +
    + )} + {proposalDetails.typeKey === 'STUDENT' && (
    {proposalDetails.attachments.map((attachment: any) => ( From 06da1f26d98bcdc1ac2fc7aec7cf568169ed82d5 Mon Sep 17 00:00:00 2001 From: mxmlnwbr Date: Tue, 27 Feb 2024 16:55:25 +0100 Subject: [PATCH 44/45] chore(release): 1.0.0-beta.12 --- CHANGELOG.md | 2 ++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6660076..339c768 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.0.0-beta.12](https://github.com/uzh-bf/thesis-platform/compare/v1.0.0-beta.11...v1.0.0-beta.12) (2024-02-27) + ## [1.0.0-beta.11](https://github.com/uzh-bf/thesis-platform/compare/v1.0.0-beta.10...v1.0.0-beta.11) (2024-02-15) ## [1.0.0-beta.10](https://github.com/uzh-bf/thesis-platform/compare/v1.0.0-beta.9...v1.0.0-beta.10) (2024-01-24) diff --git a/package-lock.json b/package-lock.json index a7cfe29..7440cff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.11", + "version": "1.0.0-beta.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.11", + "version": "1.0.0-beta.12", "dependencies": { "@azure/identity": "3.3.0", "@azure/storage-blob": "12.15.0", diff --git a/package.json b/package.json index 1eb4ba1..9a3a71e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@uzh-bf/thesis-platform", - "version": "1.0.0-beta.11", + "version": "1.0.0-beta.12", "private": true, "scripts": { "prebuild": "npm run prisma:generate", From ea8c8d3ee07d5d7beaafafc0ee58dd143a31bdec Mon Sep 17 00:00:00 2001 From: mxmlnwbr Date: Wed, 28 Feb 2024 07:02:29 +0100 Subject: [PATCH 45/45] chore(solutions): latest solutions export into repo --- solutions/UZHBFThesisPlatform.zip | Bin 44184 -> 44223 bytes .../UZHBFThesisPlatform/Other/Solution.xml | 2 +- ...-7C987104-6984-EE11-8179-002248DB4B50.json | 2 +- ...-D12D741B-A027-EE11-9966-000D3A8321BD.json | 45 +++++++++--------- solutions/UZHBFThesisPlatform_managed.zip | Bin 44180 -> 44223 bytes 5 files changed, 25 insertions(+), 24 deletions(-) diff --git a/solutions/UZHBFThesisPlatform.zip b/solutions/UZHBFThesisPlatform.zip index 03e3d29d568c8ac8ddf2e03a20ed644777c87a70..99b10063b9a102426a403a571ebe1f8fa32fd214 100644 GIT binary patch delta 13885 zcmZX*1CS<5*Dc(}v^{N2+qS1|+qR9Tt!dk~ZTGZo+qQM*o%8+g|DAg)Dk@j3T6@*r z6_JsV8JQ_7Al)k6K@4p7a2 zPE4$c4i&2g5xpotYl-J2f+ULa0tgWyj)t~UC<*rcnYBSLo> zdea$+0Jy`WhPnr?SFGf^pM;7y=-523U(7{~t*43pe z0~94IbS%wNSjRe;UX+45>o zhihbw+3-Rb?M%sg1W!9eSqr6RB?@h<>5^{waM3jirNOo|$p+I*M&C7u*O<6h=WXw5 zNSW&M8%yqpt^Tk8ln~sowMcvrg?sMn)k^XVsj24v!TPM#7umDFgxl^&T?UmrToQg{ zc(WVo@2tv$tVETd80tdXeE|C&4v~jinH1lxm9|*+lUv0piukt@Hzrd~M=oUVMfFO` znvGvJ3(4CdL=VbaxKlQuoR^m@A&C}?;BT;v&s3DUZ@A<$@X=_gN$$T{w0M6W;y&_l z+^2p!uVJ6|rgrU7lvl|WKcQcJAv;_1_n=J}%aEz6&NXaw##7QX&IM?8M>#z+gNh2# z?(m|VrM65tJxDe88?E@5wL6z&+TZ))wHlL%ZU$3y%iL$08GK|6k>>%gGe}Qq?#Pf9 zQ|wezC5a=8ec-)iG!3#AxmV%n!!erZf7qE#yCf-9H;Q)coTrw>9@DK6Hq^Vu@Z&LE zKrz?);Y`r~eX0SNYh~c2cYgWvp^JY6<9kp;lv)oIPc#`l+?Df(bZVB`z{Ftr;GPA;hdhs*d zbn!NM%<+YUxb-s9=g36GygRDFv5OG%-vv$FXkfbT=UU~K+Qa`Y@;iFwh$fhX{!M$J5ZO8Q^ zKySOgLi_DSDfCYLz8Y0yg6C?mYc@lqb5?@g9R|%-^M(?;A-n)$r5aQiAz=BRU@0{C zL=i~PtxLSdtj6}m`6EGT%EOgNMCbPC-Esc+_Cd@NKF`M^@x{>*qO$mzuG69H@?Uzo zs9d~n*SE(L>Ti$otm3~OZMSec%`K(oiHSU7P68;Om^)E7R`nTMbJMY~i9|;TJg0)yH+0M~||eVZ{2X<89|r$GEnc*O7&rVY~30o_$h zR-jz`#v^&l9q(QQlqZY>v-Ut{SuKSrFMAQ|V8H_LvYam#Dl->}KTcZMdS2kK+<^eR zmU7k49oYDU%QJVaKL6NDBO|lS{*h|J-U|A=VCJd~I~?plx5j9iT0(L4oqGTg(7>EZ zp5;EOfI0F`DBqfq#BTTY6GWg}CNGdhC$vmtFZhXmU@2Tn6G3W-mCLS7RA-{HC?gl8 zl!qUny>**RN-qmdq%(fP_%@$kve)`57t8hZc~Oqm2n)?L_YDMy;{nLYcoAZl28iLY zW`w;dLuYcC3$;kmuwI2QGIOBlRYDaedb;C;;Undt3AiBHl4 z0x5m;9EETWu?9nw?CxF3+t(RqYXbWYS_#1;mT$q+_C|1M5!LX1uN$H_T`t+Ec(qQPOC z#89oIdt%MIkmIeNof07_DGdQBzd3gUs&#mUg-zUnCGfPR;#Pkg)DMW+QLV+XG0?h) z{(`7BEKBlo1_OlRyY4@7AbuZ|4Hk{SS&)8{)@SK)bWV zt{|5T?KJx<58ot0EQLfIlGTTDzJL=#Em`IWvyu?5GvJ2OD*b!(fH%wvI}n(l>ajyE z49Gaec9E#|DY(z^nrr2urSYVh;{B0`+Mhw`8C{W_Ap{@aSLTXHVxR$-p3szWE*u8Y zfkCe;ASR$S%=!x(gMX_?M%D%c(C{)aw<4Nd&G(H<+DHFPx0h5ceU_K4Pb1+maZC6eAV*TdIdR}M z1{I*zXF|-3+SX176%d5i1C{RkOv)$?X1(;fC_K|#I$%nIIc0e#In)%*x@FJmV)4

    rQ_avYL- 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 G^8WxxXu9qI delta 13818 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 - + UZHBFThesisPlatform diff --git a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisApplicationAcceptance-7C987104-6984-EE11-8179-002248DB4B50.json b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisApplicationAcceptance-7C987104-6984-EE11-8179-002248DB4B50.json index d62c31e..0fe13e3 100644 --- a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisApplicationAcceptance-7C987104-6984-EE11-8179-002248DB4B50.json +++ b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisApplicationAcceptance-7C987104-6984-EE11-8179-002248DB4B50.json @@ -403,7 +403,7 @@ "parameters": { "emailMessage/To": "@triggerBody()?['applicantEmail']", "emailMessage/Subject": "@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Theses - Proposal Application Accepted", - "emailMessage/Body": "

    Dear @{outputs('UpdateProposalApplicationAccepted')?['body/fullName']},
    \n
    \nYour application to the proposal \"@{outputs('UpdateProposalMatched')?['body/title']}\", was accepted.
    \nKindly get in touch with your supervisor by replying to this email within one week.
    \n
    \nBest regards,
    \n@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Thesis Coordinator

    ", + "emailMessage/Body": "

    Dear @{outputs('UpdateProposalApplicationAccepted')?['body/fullName']},
    \n
    \nYour application to the proposal \"@{outputs('UpdateProposalMatched')?['body/title']}\", was accepted by @{outputs('UpdateUserProposalSupervisionStudentEmail')?['body/supervisorEmail']}.
    \nKindly get in touch with your supervisor by replying to this email within one week.
    \n
    \nBest regards,
    \n@{parameters('Department (uzhbf_thesisplatform_department_env_var)')} Thesis Coordinator

    ", "emailMessage/From": "@parameters('Outlook From Address (uzhbf_thesisplatform_outlook_from_address_env_var)')", "emailMessage/Cc": "@{parameters('Outlook Management Inbox (uzhbf_thesisplatform_thesis_inbox_env_var)')};@{outputs('UpdateUserProposalSupervisionStudentEmail')?['body/supervisorEmail']}", "emailMessage/ReplyTo": "@outputs('UpdateUserProposalSupervisionStudentEmail')?['body/supervisorEmail']", diff --git a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalSubmission-D12D741B-A027-EE11-9966-000D3A8321BD.json b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalSubmission-D12D741B-A027-EE11-9966-000D3A8321BD.json index f4192be..14b9c55 100644 --- a/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalSubmission-D12D741B-A027-EE11-9966-000D3A8321BD.json +++ b/solutions/UZHBFThesisPlatform/Workflows/UZHBFThesisPlatform-ThesisProposalSubmission-D12D741B-A027-EE11-9966-000D3A8321BD.json @@ -438,16 +438,17 @@ "server": "default", "database": "default", "table": "[main].[proposal]", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", - "item/description": "@outputs('GetResponseDetails')?['body/r7425856917f245efbd0c4cb2a7f0c434']", "item/id": "@variables('ProposalId')", + "item/title": "@outputs('GetResponseDetails')?['body/r7240915136fb41e8b884a045d08f39ce']", + "item/description": "@outputs('GetResponseDetails')?['body/r7425856917f245efbd0c4cb2a7f0c434']", "item/language": "@outputs('GetResponseDetails')?['body/r8b7f3f4a7502459598d155e9b31eb25e']", - "item/statusKey": "OPEN", "item/studyLevel": "@outputs('GetResponseDetails')?['body/rc797ecd1491b44a0ac091174abbac9f6']", - "item/title": "@outputs('GetResponseDetails')?['body/r7240915136fb41e8b884a045d08f39ce']", "item/topicAreaSlug": "@replace(toLower(variables('TopicArea')),' ','_')", "item/typeKey": "STUDENT", - "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" + "item/statusKey": "OPEN", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", + "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']", + "item/additionalStudentComment": "@body('GetResponseDetails')?['r036f3f6320bc47e5b8c3694816ffe095']" }, "host": { "apiId": "/providers/Microsoft.PowerApps/apis/shared_azuremysql", @@ -471,15 +472,15 @@ "server": "default", "database": "default", "table": "[main].[proposalapplication]", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", - "item/email": "@outputs('GetResponseDetails')?['body/responder']", - "item/fullName": "@outputs('GetResponseDetails')?['body/r7844031f633e4dd49368b0c116ad148d']", "item/id": "@outputs('PersistProposalToDB')?['body/id']", + "item/statusKey": "OPEN", + "item/email": "@outputs('GetResponseDetails')?['body/responder']", "item/matriculationNumber": "@outputs('GetResponseDetails')?['body/r6c3b387342aa4bd0b5f423aa43662850']", - "item/motivation": "@outputs('GetResponseDetails')?['body/r60d760e8828645cc84d8fde2a6fe3b27']", + "item/fullName": "@outputs('GetResponseDetails')?['body/r7844031f633e4dd49368b0c116ad148d']", "item/plannedStartAt": "@outputs('GetResponseDetails')?['body/r837fec8c113c4851a217e947217c5b7f']", + "item/motivation": "@outputs('GetResponseDetails')?['body/r60d760e8828645cc84d8fde2a6fe3b27']", "item/proposalId": "@outputs('PersistProposalToDB')?['body/id']", - "item/statusKey": "OPEN", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" }, "host": { @@ -879,12 +880,12 @@ "server": "default", "database": "default", "table": "[main].[proposalattachment]", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", - "item/href": "@outputs('ShareLinkProposalFile')?['body/link/webUrl']", "item/id": "@{guid()}", "item/name": "Proposal", - "item/proposalId": "@variables('ProposalId')", + "item/href": "@outputs('ShareLinkProposalFile')?['body/link/webUrl']", "item/type": "@outputs('PersistProposalFile')?['body/MediaType']", + "item/proposalId": "@variables('ProposalId')", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" }, "host": { @@ -909,12 +910,12 @@ "server": "default", "database": "default", "table": "[main].[applicationattachment]", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", - "item/href": "@outputs('ShareLinkCVPDF')?['body/link/webUrl']", "item/id": "@{guid()}", "item/name": "CV", - "item/proposalApplicationId": "@outputs('PersistApplicationToDB')?['body/id']", + "item/href": "@outputs('ShareLinkCVPDF')?['body/link/webUrl']", "item/type": "@outputs('PersistCVPDF')?['body/MediaType']", + "item/proposalApplicationId": "@outputs('PersistApplicationToDB')?['body/id']", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" }, "host": { @@ -939,12 +940,12 @@ "server": "default", "database": "default", "table": "[main].[applicationattachment]", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", - "item/href": "@outputs('ShareLinkTranscriptPDF')?['body/link/webUrl']", "item/id": "@{guid()}", "item/name": "Transcript", - "item/proposalApplicationId": "@outputs('PersistApplicationToDB')?['body/id']", + "item/href": "@outputs('ShareLinkTranscriptPDF')?['body/link/webUrl']", "item/type": "@outputs('PersistTranscriptPDF')?['body/MediaType']", + "item/proposalApplicationId": "@outputs('PersistApplicationToDB')?['body/id']", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" }, "host": { @@ -1259,12 +1260,12 @@ "server": "default", "database": "default", "table": "[main].[applicationattachment]", - "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", - "item/href": "@outputs('ShareLinkAttachment')?['body/link/webUrl']", "item/id": "@{guid()}", "item/name": "Attachment", - "item/proposalApplicationId": "@outputs('PersistApplicationToDB')?['body/id']", + "item/href": "@outputs('ShareLinkAttachment')?['body/link/webUrl']", "item/type": "@outputs('PersistAdditionalFile')?['body/MediaType']", + "item/proposalApplicationId": "@outputs('PersistApplicationToDB')?['body/id']", + "item/createdAt": "@outputs('GetResponseDetails')?['body/submitDate']", "item/updatedAt": "@outputs('GetResponseDetails')?['body/submitDate']" }, "host": { diff --git a/solutions/UZHBFThesisPlatform_managed.zip b/solutions/UZHBFThesisPlatform_managed.zip index 6bdbfaac4e77389bdd3a1f35f96e7a3269b35964..878d2aa097dd3686307728496496b49a8b6159db 100644 GIT binary patch delta 14000 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 delta 13904 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
  • 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 JdH)IVe*t#cwQm3b