blob: 88a182284316e4550139bcba11c64f7438ad8221 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import {NgModule} from '@angular/core';
import {FimsSharedModule} from '../../common/common.module';
import {ProductRoutes} from './product.routes';
import {RouterModule} from '@angular/router';
import {ProductListComponent} from './product.list.component';
import {ProductCreateComponent} from './form/create.component';
import {ProductDetailComponent} from './product.detail.component';
import {ProductEditComponent} from './form/edit.component';
import {ProductFormComponent} from './form/form.component';
import {ProductFeeFormComponent} from './form/fees/fee.component';
import {ProductInterestFormComponent} from './form/interests/interests.component';
import {ProductTermFormComponent} from './components/term/term.component';
import {ProductChargeListComponent} from './charges/charge.list.component';
import {ProductChargeDetailComponent} from './charges/charge.detail.component';
import {ProductChargeFormComponent} from './charges/form/form.component';
import {ProductChargeCreateFormComponent} from './charges/form/create.component';
import {ProductStatusComponent} from './status/status.component';
import {ProductStatusCreateFormComponent} from './status/form/create.component';
import {ProductTaskFormComponent} from './status/form/form.component';
import {ProductStatusEditFormComponent} from './status/form/edit.component';
import {ProductStatusDetailComponent} from './status/status.detail.component';
import {ProductMoratoriumFormComponent} from './form/moratorium/moratorium.component';
import {ProductChargeEditFormComponent} from './charges/form/edit.component';
import {Store} from '@ngrx/store';
import {PortfolioStore, portfolioStoreFactory} from './store/index';
import {ProductExistsGuard} from './product-exists.guard';
import {ProductTaskExistsGuard} from './status/task-exists.guard';
import {ProductChargeExistsGuard} from './charges/charge-exists.guard';
import {ProductSettingsFormComponent} from './form/settings/settings.component';
import {ProductChargesNotificationEffects} from './store/charges/effects/notification.effects';
import {ProductChargesRouteEffects} from './store/charges/effects/route.effects';
import {EffectsModule} from '@ngrx/effects';
import {ProductChargesApiEffects} from './store/charges/effects/service.effects';
import {ProductTasksNotificationEffects} from './store/tasks/effects/notification.effects';
import {ProductTasksRouteEffects} from './store/tasks/effects/route.effects';
import {ProductTasksApiEffects} from './store/tasks/effects/service.effects';
import {ProductNotificationEffects} from './store/effects/notification.effects';
import {ProductRouteEffects} from './store/effects/route.effects';
import {ProductApiEffects} from './store/effects/service.effects';
import {TranslateModule} from '@ngx-translate/core';
import {CommonModule} from '@angular/common';
import {ReactiveFormsModule} from '@angular/forms';
import {
MatButtonModule,
MatCheckboxModule,
MatIconModule,
MatInputModule,
MatListModule,
MatOptionModule,
MatRadioModule,
MatSelectModule,
MatSlideToggleModule,
MatToolbarModule
} from '@angular/material';
import {CovalentDataTableModule, CovalentMessageModule, CovalentStepsModule} from '@covalent/core';
import {ProductIndexComponent} from './product.index.component';
import {ProductDetailFormComponent} from './form/detail/detail.component';
import {ProductChargeRangeListComponent} from './charges/ranges/range.list.component';
import {ProductChargeRangeDetailComponent} from './charges/ranges/range.detail.component';
import {ProductChargeRangeFormComponent} from './charges/ranges/form/form.component';
import {EditProductChargeRangeFormComponent} from './charges/ranges/form/edit.component';
import {CreateProductChargeRangeFormComponent} from './charges/ranges/form/create.component';
import {ProductChargeRangesRouteEffects} from './store/ranges/effects/route.effects';
import {ProductChargeRangesApiEffects} from './store/ranges/effects/service.effects';
import {ProductChargeRangeExistsGuard} from './charges/ranges/range-exists.guard';
import {ProductChargeRangeIndexComponent} from './charges/ranges/range.index.component';
import {ProductChargeRangesNotificationEffects} from './store/ranges/effects/notification.effects';
import {ProductLossProvisionApiEffects} from './store/lossProvision/effects/service.effects';
import {ProductLossProvisionRouteEffects} from './store/lossProvision/effects/route.effects';
import {ProductLossProvisionNotificationEffects} from './store/lossProvision/effects/notification.effects';
import {LoanLossProvisionExistsGuard} from './lossProvision/loss-provision-exists.guard';
import {CreateProductLossProvisionFormComponent} from './lossProvision/form/create.component';
import {ProductLossProvisionFormComponent} from './lossProvision/form/form.component';
import {LossProvisionDetailComponent} from './lossProvision/loss-provision.detail.component';
@NgModule({
imports: [
RouterModule.forChild(ProductRoutes),
FimsSharedModule,
TranslateModule,
CommonModule,
ReactiveFormsModule,
MatIconModule,
MatListModule,
MatToolbarModule,
MatInputModule,
MatButtonModule,
MatSlideToggleModule,
MatRadioModule,
MatOptionModule,
MatSelectModule,
MatCheckboxModule,
CovalentDataTableModule,
CovalentStepsModule,
CovalentMessageModule,
EffectsModule.run(ProductApiEffects),
EffectsModule.run(ProductRouteEffects),
EffectsModule.run(ProductNotificationEffects),
EffectsModule.run(ProductTasksApiEffects),
EffectsModule.run(ProductTasksRouteEffects),
EffectsModule.run(ProductTasksNotificationEffects),
EffectsModule.run(ProductChargesApiEffects),
EffectsModule.run(ProductChargesRouteEffects),
EffectsModule.run(ProductChargesNotificationEffects),
EffectsModule.run(ProductChargeRangesApiEffects),
EffectsModule.run(ProductChargeRangesRouteEffects),
EffectsModule.run(ProductChargeRangesNotificationEffects),
EffectsModule.run(ProductLossProvisionApiEffects),
EffectsModule.run(ProductLossProvisionRouteEffects),
EffectsModule.run(ProductLossProvisionNotificationEffects),
],
declarations: [
// product
ProductListComponent,
ProductIndexComponent,
ProductDetailComponent,
ProductFormComponent,
ProductCreateComponent,
ProductEditComponent,
ProductDetailFormComponent,
ProductFeeFormComponent,
ProductInterestFormComponent,
ProductTermFormComponent,
ProductMoratoriumFormComponent,
ProductSettingsFormComponent,
// charge
ProductChargeListComponent,
ProductChargeDetailComponent,
ProductChargeFormComponent,
ProductChargeCreateFormComponent,
ProductChargeEditFormComponent,
// ranges
ProductChargeRangeListComponent,
ProductChargeRangeIndexComponent,
ProductChargeRangeDetailComponent,
ProductChargeRangeFormComponent,
CreateProductChargeRangeFormComponent,
EditProductChargeRangeFormComponent,
// status
ProductStatusComponent,
ProductTaskFormComponent,
ProductStatusCreateFormComponent,
ProductStatusEditFormComponent,
ProductStatusDetailComponent,
// Loss provision
LossProvisionDetailComponent,
ProductLossProvisionFormComponent,
CreateProductLossProvisionFormComponent,
ProductChargeDetailComponent
],
providers: [
ProductExistsGuard,
ProductTaskExistsGuard,
ProductChargeExistsGuard,
ProductChargeRangeExistsGuard,
LoanLossProvisionExistsGuard,
{ provide: PortfolioStore, useFactory: portfolioStoreFactory, deps: [Store]}
]
})
export class ProductModule {}