import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { OpenstackPlansRoutingModule } from './openstack-plans-routing.module';
import { OpenstackPlanListComponent } from './openstack-plan-list/openstack-plan-list.component';
import { OpenstackPlanDetailsComponent } from './openstack-plan-details/openstack-plan-details.component';
import { OpenstackPlanCreateComponent } from './openstack-plan-create/openstack-plan-create.component';
import { OpenstackPlanEditComponent } from './openstack-plan-edit/openstack-plan-edit.component';
import { ObjectsViewModule } from '@objects-view/objects-view.module';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { ErrorHandlingModule } from '@shared/error-handling/error-handling.module';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatSelectModule } from '@angular/material/select';
import { MatInputModule } from '@angular/material/input';
import { MatCheckboxModule } from '@angular/material/checkbox';
import { MatDialogModule } from '@angular/material/dialog';
import { MatButtonModule } from '@angular/material/button';
import { PricingPlanListUIService } from './openstack-plan-list-ui.service';
import { MatTableModule } from '@angular/material/table';
import { MatIconModule } from '@angular/material/icon';
import { OpenstackPlanCreateRuleComponent } from './openstack-plan-create-rule/openstack-plan-create-rule.component';
import { OpenstackPlanRuleEditComponent } from './openstack-plan-rule-edit/openstack-plan-rule-edit.component';
import {
  PricingPlanDetailsOverviewComponent
} from './tabs/pricing-plan-details-overview/pricing-plan-details-overview.component';
import { PricingPlanEditFormComponent } from './tabs/pricing-plan-edit-form/pricing-plan-edit-form.component';
import { PricingRuleEditFormComponent } from './tabs/pricing-rule-edit-form/pricing-rule-edit-form.component';
import { MatDatepickerModule } from '@angular/material/datepicker';
import { UiModule } from '@shared/ui/ui.module';
import { MatChipsModule } from '@angular/material/chips';
import { MatAutocompleteModule } from '@angular/material/autocomplete';
import { MatRadioModule } from '@angular/material/radio';

@NgModule({
  declarations: [
    OpenstackPlanListComponent,
    OpenstackPlanDetailsComponent,
    OpenstackPlanCreateComponent,
    OpenstackPlanEditComponent,
    OpenstackPlanCreateRuleComponent,
    OpenstackPlanRuleEditComponent,
    PricingPlanDetailsOverviewComponent,
    PricingPlanEditFormComponent,
    PricingRuleEditFormComponent,
  ],
  imports: [
    CommonModule,
    OpenstackPlansRoutingModule,
    ObjectsViewModule,
    ReactiveFormsModule,
    ErrorHandlingModule,
    MatFormFieldModule,
    MatSelectModule,
    MatInputModule,
    MatCheckboxModule,
    MatDialogModule,
    MatButtonModule,
    MatTableModule,
    MatIconModule,
    MatDatepickerModule,
    UiModule,
    MatChipsModule,
    MatAutocompleteModule,
    MatRadioModule,
    FormsModule,
  ],
  providers: [
    {
      provide: PricingPlanListUIService,
      useClass: PricingPlanListUIService,
      multi: false,
    },
  ]
})
export class OpenstackPlansModule {
}
