← marzneshin
/
dashboard/src/modules/users/components/dialogs/mutation/sections/expiration-method/expiration-method.strategy.ts
/
blame
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/users/components/dialogs/mutation/sections/expiration-method/expiration-method.strategy.ts
· nightly
Source
| 1 | d377c4c | Dawsh | 2y ago | import { useFormContext } from "react-hook-form"; |
| 2 | e6e6467 | Dawsh | 2y ago | import { ExpireStrategy } from "@marzneshin/modules/users"; |
| 3 | d377c4c | Dawsh | 2y ago | |
| 4 | d42c6e6 | Mardin | 2y ago | abstract class ExpirationMethodStrategy { |
| 5 | d42c6e6 | Mardin | 2y ago | protected abstract strategy: string; |
| 6 | d42c6e6 | Mardin | 2y ago | protected abstract applyFieldValues(form: ReturnType<typeof useFormContext>): void; |
| 7 | d42c6e6 | Mardin | 2y ago | |
| 8 | d377c4c | Dawsh | 2y ago | protected clearErrors(form: ReturnType<typeof useFormContext>) { |
| 9 | d377c4c | Dawsh | 2y ago | form.clearErrors("expire_date"); |
| 10 | d377c4c | Dawsh | 2y ago | form.clearErrors("usage_duration"); |
| 11 | d377c4c | Dawsh | 2y ago | form.clearErrors("activation_deadline"); |
| 12 | d377c4c | Dawsh | 2y ago | } |
| 13 | d377c4c | Dawsh | 2y ago | |
| 14 | d42c6e6 | Mardin | 2y ago | /** |
| 15 | d42c6e6 | Mardin | 2y ago | * Applied the rules on the form's fields, called by component |
| 16 | d42c6e6 | Mardin | 2y ago | * |
| 17 | d42c6e6 | Mardin | 2y ago | * @param form - form object from the context |
| 18 | d42c6e6 | Mardin | 2y ago | */ |
| 19 | d42c6e6 | Mardin | 2y ago | public apply(form: ReturnType<typeof useFormContext>) { |
| 20 | d42c6e6 | Mardin | 2y ago | form.setValue("expire_strategy", this.strategy); |
| 21 | d42c6e6 | Mardin | 2y ago | this.applyFieldValues(form) |
| 22 | d42c6e6 | Mardin | 2y ago | this.clearErrors(form) |
| 23 | d42c6e6 | Mardin | 2y ago | } |
| 24 | d377c4c | Dawsh | 2y ago | } |
| 25 | d377c4c | Dawsh | 2y ago | |
| 26 | d42c6e6 | Mardin | 2y ago | export class FirstUseStrategy extends ExpirationMethodStrategy { |
| 27 | d42c6e6 | Mardin | 2y ago | strategy = "start_on_first_use"; |
| 28 | d377c4c | Dawsh | 2y ago | |
| 29 | d42c6e6 | Mardin | 2y ago | protected applyFieldValues(form: ReturnType<typeof useFormContext>) { |
| 30 | d377c4c | Dawsh | 2y ago | form.setValue("expire", undefined); |
| 31 | d377c4c | Dawsh | 2y ago | } |
| 32 | d377c4c | Dawsh | 2y ago | } |
| 33 | d377c4c | Dawsh | 2y ago | |
| 34 | d42c6e6 | Mardin | 2y ago | export class NeverStrategy extends ExpirationMethodStrategy { |
| 35 | d42c6e6 | Mardin | 2y ago | strategy = "never"; |
| 36 | d377c4c | Dawsh | 2y ago | |
| 37 | d42c6e6 | Mardin | 2y ago | protected applyFieldValues(form: ReturnType<typeof useFormContext>) { |
| 38 | d377c4c | Dawsh | 2y ago | form.setValue("expire_date", undefined); |
| 39 | d377c4c | Dawsh | 2y ago | form.setValue("activation_deadline", undefined); |
| 40 | d377c4c | Dawsh | 2y ago | form.setValue("usage_duration", undefined); |
| 41 | d377c4c | Dawsh | 2y ago | } |
| 42 | d377c4c | Dawsh | 2y ago | } |
| 43 | d377c4c | Dawsh | 2y ago | |
| 44 | d42c6e6 | Mardin | 2y ago | export class FixedStrategy extends ExpirationMethodStrategy { |
| 45 | d42c6e6 | Mardin | 2y ago | strategy = "fixed_date"; |
| 46 | d377c4c | Dawsh | 2y ago | |
| 47 | d42c6e6 | Mardin | 2y ago | protected applyFieldValues(form: ReturnType<typeof useFormContext>) { |
| 48 | d42c6e6 | Mardin | 2y ago | form.setValue("usage_duration", undefined); |
| 49 | d42c6e6 | Mardin | 2y ago | form.setValue("activation_deadline", undefined); |
| 50 | d377c4c | Dawsh | 2y ago | } |
| 51 | d377c4c | Dawsh | 2y ago | } |
| 52 | d377c4c | Dawsh | 2y ago | |
| 53 | d377c4c | Dawsh | 2y ago | export const strategies: { [key in ExpireStrategy]: ExpirationMethodStrategy } = { |
| 54 | d377c4c | Dawsh | 2y ago | start_on_first_use: new FirstUseStrategy(), |
| 55 | d377c4c | Dawsh | 2y ago | never: new NeverStrategy(), |
| 56 | d377c4c | Dawsh | 2y ago | fixed_date: new FixedStrategy(), |
| 57 | d377c4c | Dawsh | 2y ago | }; |