import {PreservationPolicies} from "@app/generated-api";
import {AdminResourceApiEnum} from "@app/shared/enums/api.enum";
import {RoutesEnum} from "@app/shared/enums/routes.enum";
import {environment} from "../../../../environments/environment";
import {LocalStateEnum} from "../../enums/local-state.enum";
import {preservationPolicyActionNameSpace} from "@app/shared/stores/preservation-policy/preservation-policy.action";
import {Actions, State, Store} from "@ngxs/store";
import {
  ApiService,
  CollectionTyped,
  isNullOrUndefined,
  MapUtil,
  QueryParameters,
  QueryParametersUtil,
  ResourceStateModel,
  StoreUtil,
  StringUtil,
  ResourceState,
  ResourceNameSpace,
  ResourceApiEnum,
  defaultResourceStateInitValue,
  NotificationService,
} from "solidify-frontend";

export interface PreservationPolicyStateModel extends ResourceStateModel<PreservationPolicies> {
}

@State<PreservationPolicyStateModel>({
  name: LocalStateEnum.preservationPolicy,
  defaults: {
    ...defaultResourceStateInitValue,
  },
})
export class PreservationPolicyState extends ResourceState<PreservationPolicies> {
  constructor(protected apiService: ApiService,
              protected store: Store,
              protected notificationService: NotificationService,
              protected actions$: Actions) {
    super(apiService, store, notificationService, actions$, RoutesEnum.adminPreservationPolicy, environment);
  }

  defineState(): LocalStateEnum {
    return LocalStateEnum.preservationPolicy;
  }

  defineResourceNameSpace(): ResourceNameSpace {
    return preservationPolicyActionNameSpace;
  }

  defineUrlResource(): ResourceApiEnum {
    return AdminResourceApiEnum.preservationPolicies;
  }
}