Skip to content

Commit

Permalink
add reset user subscriptions to admin panel
Browse files Browse the repository at this point in the history
  • Loading branch information
claushaas committed Oct 24, 2024
1 parent 67a074d commit 7fcfe27
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 0 deletions.
42 changes: 42 additions & 0 deletions app/routes/admin.students.$username.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,16 @@ export const action = async ({request, params}: ActionFunctionArgs) => {
break;
}

case 'subscriptions': {
const {data: user} = await userService.getUserData(username!);

await new SubscriptionService().resetUserSubscriptions(user);

userSession.flash('success', 'Matrículas do aluno resetadas com sucesso');

break;
}

default: {
userSession.flash('error', 'Tipo de formulário inválido');
break;
Expand Down Expand Up @@ -541,6 +551,38 @@ export default function Student() {

<div>
<h2>Matrículas</h2>

<RadixForm.Root asChild>
<Form method='post' action={`/admin/students/${username}`}>

<RadixForm.Field name='id' className='hidden'>
<RadixForm.Control asChild>
<input
disabled={isSubmittingAnyForm}
type='text'
value={studentData.id}
/>
</RadixForm.Control>
</RadixForm.Field>

<RadixForm.Field name='type' className='hidden'>
<RadixForm.Control asChild>
<input
disabled={isSubmittingAnyForm}
type='text'
value='subscriptions'
/>
</RadixForm.Control>
</RadixForm.Field>

<RadixForm.Submit asChild>
<Button isDisabled={isSubmittingAnyForm} text='Resetar Matrículas' preset={ButtonPreset.Secondary} type={ButtonType.Submit}/>
</RadixForm.Submit>

{isSubmittingAnyForm && <YemSpinner/>}
</Form>
</RadixForm.Root>

{subscriptions && (
<ul>
{subscriptions.map(subscription => (
Expand Down
20 changes: 20 additions & 0 deletions app/services/subscription.service.server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,26 @@ export default class SubscriptionService {
};
}

public async resetUserSubscriptions(user: TUser): Promise<TServiceReturn<string>> {
try {
await this._model.userSubscriptions.deleteMany({
where: {
userId: user.id,
},
});

await this.createUserInitialSubscriptions(user);

return {
status: 'NO_CONTENT',
data: 'Subscriptions reset successfully',
};
} catch (error) {
logger.logError(`Error resetting user subscriptions: ${(error as Error).message}`);
throw new CustomError('UNKNOWN', `Error resetting user subscriptions: ${(error as Error).message}`);
}
}

public async getUserSubscriptions(user: TUser): Promise<TServiceReturn<TPrismaPayloadGetUserSubscriptions[] | undefined>> {
try {
const subscriptions = await this._model.userSubscriptions.findMany({
Expand Down

0 comments on commit 7fcfe27

Please sign in to comment.