Skip to content
Snippets Groups Projects
Commit 122c72ec authored by Florent Poittevin's avatar Florent Poittevin
Browse files

Fix submission policy on org unit

parent cfa2b7e1
No related branches found
No related tags found
No related merge requests found
import {ApiService} from "@app/core/http/api.service";
import {BaseResourceState} from "@app/core/models/stores/base-resource.state";
import {NotificationService} from "@app/core/services/notification.service";
import {Relation2TiersAction} from "@app/core/stores/relation-2-tiers/relation-2-tiers.action";
import {Relation2TiersNameSpace} from "@app/core/stores/relation-2-tiers/relation-2-tiers-namespace.model";
import {Relation2TiersActionHelper} from "@app/core/stores/relation-2-tiers/relation-2-tiers-action.helper";
import {Relation2TiersNameSpace} from "@app/core/stores/relation-2-tiers/relation-2-tiers-namespace.model";
import {Relation2TiersAction} from "@app/core/stores/relation-2-tiers/relation-2-tiers.action";
import {StoreUtil} from "@app/core/utils/stores/store.util";
import {BaseResourceState} from "@app/core/models/stores/base-resource.state";
import {RegisterDefaultAction} from "@app/shared/decorators/store.decorator";
import {ApiResourceNameEnum} from "@app/shared/enums/api-resource-name.enum";
import {ResourceApiEnum} from "@app/shared/enums/api.enum";
......
......@@ -12,6 +12,7 @@ import {ModelAttributeEnum} from "@app/shared/enums/model-attribute.enum";
import {StateEnum} from "@app/shared/enums/state.enum";
import {CollectionTypedModel} from "@app/shared/models/collection-typed.model";
import {QueryParametersModel} from "@app/shared/models/query-parameters.model";
import {StateModel} from "@app/shared/models/state.model";
import {Navigate} from "@ngxs/router-plugin";
import {StateContext, Store} from "@ngxs/store";
import {Observable} from "rxjs";
......@@ -35,12 +36,12 @@ export const defaultResourceStateInitValue: ResourceStateModel<any> = {
export abstract class ResourceState<T> {
protected readonly state: StateEnum;
protected readonly resourceNameSpace: ResourceNameSpace;
protected readonly urlResource: ResourceApiEnum;
private _urlResource: ResourceApiEnum;
protected constructor(protected apiService: ApiService,
protected store: Store,
protected notificationService: NotificationService) {
this.urlResource = this.defineUrlResource();
this.store.select((state: StateModel) => state[StateEnum.application].isApplicationInitialized).subscribe(() => this._urlResource = this.defineUrlResource());
this.state = this.defineState();
this.resourceNameSpace = this.defineResourceNameSpace();
StoreUtil.initState(ResourceState, this.constructor, this.resourceNameSpace);
......@@ -69,7 +70,7 @@ export abstract class ResourceState<T> {
const queryParameters = StoreUtil.getQueryParametersToApply(action.queryParameters, ctx);
return this.apiService.get<T>(this.urlResource, queryParameters)
return this.apiService.get<T>(this._urlResource, queryParameters)
.pipe(
tap((collection: CollectionTypedModel<T>) => {
ctx.dispatch(ResourceActionHelper.getAllSuccess<T>(this.resourceNameSpace, collection));
......@@ -107,7 +108,7 @@ export abstract class ResourceState<T> {
current: null,
});
return this.apiService.getById<T>(this.urlResource, action.id)
return this.apiService.getById<T>(this._urlResource, action.id)
.pipe(
tap((model: T) => {
ctx.dispatch(ResourceActionHelper.getByIdSuccess(this.resourceNameSpace, model));
......@@ -140,7 +141,7 @@ export abstract class ResourceState<T> {
isLoading: true,
});
return this.apiService.post<T>(this.urlResource, action.model)
return this.apiService.post<T>(this._urlResource, action.model)
.pipe(
tap(() => {
ctx.dispatch(ResourceActionHelper.createSuccess(this.resourceNameSpace));
......@@ -176,7 +177,7 @@ export abstract class ResourceState<T> {
isLoading: true,
});
return this.apiService.patchById<T>(this.urlResource, action.model[ModelAttributeEnum.resId], action.model)
return this.apiService.patchById<T>(this._urlResource, action.model[ModelAttributeEnum.resId], action.model)
.pipe(
tap(() => {
ctx.dispatch(ResourceActionHelper.updateSuccess(this.resourceNameSpace));
......@@ -212,7 +213,7 @@ export abstract class ResourceState<T> {
isLoading: true,
});
return this.apiService.deleteById<T>(this.urlResource, action.resId)
return this.apiService.deleteById<T>(this._urlResource, action.resId)
.pipe(
tap(() => {
ctx.dispatch(ResourceActionHelper.deleteSuccess(this.resourceNameSpace));
......
import {StateModel} from "@app/shared/models/state.model";
import {AppStateModel} from "@app/stores/app.state";
import {ApiService} from "@app/core/http/api.service";
import {NotificationService} from "@app/core/services/notification.service";
import {Relation2TiersActionHelper} from "@app/core/stores/relation-2-tiers/relation-2-tiers-action.helper";
import {defaultResourceStateInitValue, ResourceState, ResourceStateModel} from "@app/core/stores/resource/resource.state";
import {DepositStateModel} from "@app/deposit/stores/deposit.state";
import {OrganizationalUnitsModel} from "@app/generated-api";
import {ResourceNameSpace} from "../../../core/stores/resource/resource.namespace";
import {ResourceState, ResourceStateModel, defaultResourceStateInitValue} from "@app/core/stores/resource/resource.state";
import {OverrideDefaultAction} from "@app/shared/decorators/store.decorator";
import {AccessResourceApiEnum, AdminResourceApiEnum, ResourceApiEnum} from "@app/shared/enums/api.enum";
import {ModelAttributeEnum} from "@app/shared/enums/model-attribute.enum";
import {StateEnum} from "@app/shared/enums/state.enum";
import {QueryParametersModel} from "@app/shared/models/query-parameters.model";
import {StateModel} from "@app/shared/models/state.model";
import {OrgUnitAction, orgUnitActionNameSpace} from "@app/shared/stores/organizational-unit/organizational-unit.action";
import {orgUnitSubmissionPolicyActionNameSpace} from "@app/shared/stores/organizational-unit/submission-policy/organizational-unit-submission-policy.action";
import {
OrganizationalUnitSubmissionPolicyState,
OrganizationalUnitSubmissionPolicyStateModel,
} from "@app/shared/stores/organizational-unit/submission-policy/organizational-unit-submission-policy.state";
import {OrgUnitAction, orgUnitActionNameSpace} from "@app/shared/stores/organizational-unit/organizational-unit.action";
import {PreservationPolicyAction} from "@app/shared/stores/preservation-policy/preservation-policy.action";
import {SubmissionPolicyAction} from "@app/shared/stores/submission-policy/submission-policy.action";
import {Relation2TiersActionHelper} from "@app/core/stores/relation-2-tiers/relation-2-tiers-action.helper";
import {Action, State, StateContext, Store} from "@ngxs/store";
import _ from "lodash";
import {Observable} from "rxjs";
import {tap} from "rxjs/internal/operators/tap";
import {ResourceNameSpace} from "../../../core/stores/resource/resource.namespace";
export interface OrganizationalUnitStateModel extends ResourceStateModel<OrganizationalUnitsModel> {
[StateEnum.organizationalUnitSubResourceSubmissionPolicy]?: OrganizationalUnitSubmissionPolicyStateModel;
......
......@@ -4,6 +4,10 @@ export class InitApplication {
static readonly type: string = "[App] Init Application";
}
export class InitApplicationSuccess {
static readonly type: string = "[App] Init Application Success";
}
export class SetDefaultLanguage {
static readonly type: string = "[App] Set Default Language";
}
......
import {OAuth2Service} from "@app/core/auth/oauth2.service";
import {LanguagesEnum} from "@app/shared/enums/languages.enum";
import {RoutesEnum} from "@app/shared/enums/routes.enum";
import {SessionStorageEnum} from "@app/shared/enums/session-storage.enum";
import {StateEnum} from "@app/shared/enums/state.enum";
import {UserPreferencesUtil} from "@app/shared/utils/user-preferences.util";
import {
ChangeAppLanguage,
InitApplication,
InitApplicationSuccess,
Login,
LoginFail,
LoginSuccess,
Logout,
SetDefaultLanguage,
SetMomentLocal
SetMomentLocal,
} from "@app/stores/app.action";
import {LanguagesEnum} from "@app/shared/enums/languages.enum";
import {RoutesEnum} from "@app/shared/enums/routes.enum";
import {SessionStorageEnum} from "@app/shared/enums/session-storage.enum";
import {StateEnum} from "@app/shared/enums/state.enum";
import {UserPreferencesUtil} from "@app/shared/utils/user-preferences.util";
import {TranslateService} from "@ngx-translate/core";
import {Navigate} from "@ngxs/router-plugin";
import {Action, State, StateContext, Store} from "@ngxs/store";
import {Action, Actions, ofActionCompleted, State, StateContext, Store} from "@ngxs/store";
import * as moment from "moment";
import {Observable} from "rxjs";
import {merge} from "rxjs/internal/observable/merge";
import {zip} from "rxjs/internal/observable/zip";
import {tap} from "rxjs/operators";
import {OAuth2Service} from "@app/core/auth/oauth2.service";
import {BaseState} from "@app/core/models/stores/base.state";
import {environment} from "../../environments/environment";
export interface AppStateModel extends BaseState {
appLanguage: LanguagesEnum;
export interface AppStateModel {
isApplicationInitialized: boolean;
isLoggedIn: boolean;
appLanguage: LanguagesEnum;
}
@State<AppStateModel>({
name: StateEnum.application,
defaults: {
appLanguage: UserPreferencesUtil.getPreferredLanguage(),
isLoading: false,
isApplicationInitialized: false,
isLoggedIn: false,
appLanguage: UserPreferencesUtil.getPreferredLanguage(),
},
})
export class AppState {
constructor(private store: Store,
private translate: TranslateService,
private oauthService: OAuth2Service) {
private oauthService: OAuth2Service,
private actions$: Actions) {
this.oauthService.setupAutomaticRefreshToken();
}
@Action(InitApplication)
initApplication(ctx: StateContext<AppStateModel>): void {
ctx.dispatch([
new Login(),
new SetDefaultLanguage(),
new SetMomentLocal(),
]);
zip(
merge(this.actions$.pipe(ofActionCompleted(LoginSuccess)), this.actions$.pipe(ofActionCompleted(LoginFail))),
ctx.dispatch([
new Login(),
new SetDefaultLanguage(),
new SetMomentLocal(),
]),
).subscribe(() => ctx.dispatch(new InitApplicationSuccess()));
}
@Action(InitApplicationSuccess)
initApplicationSuccess(ctx: StateContext<AppStateModel>): void {
ctx.patchState({
isApplicationInitialized: true,
});
}
@Action(SetDefaultLanguage)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment