import { NgModule } from '@angular/core';
import { DirtyGuard, XdfGalleryModule } from '@xdf/gallery';
import { TranslateModule } from '@ngx-translate/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { CommonModule } from '@angular/common';
import { MatButtonModule, MatCheckboxModule, MatFormFieldModule, MatIconModule, MatInputModule, MatMenuModule, MatPaginatorModule, MatProgressSpinnerModule, MatSelectModule, MatSortModule, MatTableModule, MatTabsModule, MatTooltipModule } from '@angular/material';
import { XdfSettingsModule } from '@xdf/settings';
import { NgScrollbarModule } from 'ngx-scrollbar';
import { XdfLayoutsModule } from '@xdf/layouts';

import { MatDatepickerModule } from '@angular/material/datepicker';
import { SchedulerTaskComponent } from "./components/scheduler-task/scheduler-task.component";
import { ConfigurationConceptRoutingModule } from './configuration-concept-routing.module';
import { SchedulerTaskInitialDataResolver } from './components/scheduler-task/resolvers/scheduler-task-initial-data-resolver';
import { AdditionalParamDialogComponent } from './components/scheduler-task/additional-param-dialog/additional-param-dialog.component';
import { CronExpressionDialogComponent } from './components/scheduler-task/cron-expression-dialog/cron-expression-dialog.component';
import { AdditionalParamDialogDialogService } from './components/scheduler-task/additional-param-dialog/service/additional-param-dialog.service';
import { CronExpressionDialogService } from './components/scheduler-task/cron-expression-dialog/services/cron-expression-dialog.service';
import { CalendarFormComponent } from './components/calendar/calendar-form/calendar-form.component';
import { CalendarExceptionDialogComponent } from './components/calendar/components/calendar-exception-grid/views/calendar-exception-dialog/calendar-exception-dialog.component';
import { CalendarExceptionGridComponent } from './components/calendar/components/calendar-exception-grid/calendar-exception-grid.component';
import { CalendarExceptionTableComponent } from './components/calendar/components/calendar-exception-grid/views/calendar-exception-table/calendar-exception-table.component';
import { CalendarConfigLayoutComponent } from './components/calendar/components/calendar-config-layout/calendar-config-layout.component';
import { CalendarExceptionResolver } from './components/calendar/resolvers/calendar-exception.resolver';
import { CalendarExceptionTemplateResolver } from './components/calendar/resolvers/calendar-exception-template.resolver';
import { CalendarExceptionDialogService } from './components/calendar/calendar-form/services/calendar-exception-dialog.service';
import { GoalFormComponent } from './components/goal/views/goal-form.component';
import { GoalActionGridComponent } from './components/goal/views/components/goal-action-grid/goal-action-grid.component';
import { GoalActionTemplateResolver } from './components/goal/resolvers/goal-template.resolver';
import { GoalActionResolver } from './components/goal/resolvers/goal-action.resolver';
import { GoalConfigLayoutComponent } from './components/goal/views/components/goal-config-layout/goal-config-layout.component';
import { DatePickerAnualComponent, ExampleHeader } from './components/calendar/components/calendar-exception-grid/views/date-picker-anual/date-picker-anual.component';
import { WeekSchedulerFormComponent } from './components/calendar/components/week-scheduler-form/week-scheduler-form.component';

@NgModule({
  declarations: [
    SchedulerTaskComponent,
    AdditionalParamDialogComponent,
    CronExpressionDialogComponent,
    CalendarFormComponent,
    CalendarExceptionDialogComponent,
    CalendarExceptionGridComponent,
    CalendarExceptionTableComponent,
    CalendarConfigLayoutComponent,
    WeekSchedulerFormComponent,
    DatePickerAnualComponent,
    GoalFormComponent,
    GoalActionGridComponent,
    GoalConfigLayoutComponent,
    ExampleHeader
  ],
  imports: [
    ConfigurationConceptRoutingModule,
    CommonModule,
    FormsModule,
    ReactiveFormsModule,
    MatDatepickerModule,
    TranslateModule,
    XdfGalleryModule,
    XdfSettingsModule,
    MatTableModule,
    MatPaginatorModule,
    MatProgressSpinnerModule,
    MatSortModule,
    NgScrollbarModule,
    MatCheckboxModule,
    MatFormFieldModule,
    MatIconModule,
    MatTabsModule,
    MatTooltipModule,
    MatButtonModule,
    MatMenuModule,
    MatSelectModule,
    MatInputModule,
    MatIconModule,
    XdfLayoutsModule
  ],
  entryComponents: [
    AdditionalParamDialogComponent,
    CronExpressionDialogComponent,
    CalendarExceptionDialogComponent,
    DatePickerAnualComponent,
    ExampleHeader
  ],
  providers: [
    { provide: DirtyGuard, useClass: DirtyGuard },
    SchedulerTaskInitialDataResolver,
    AdditionalParamDialogDialogService,
    CronExpressionDialogService,
    CalendarExceptionResolver,
    CalendarExceptionTemplateResolver,
    CalendarExceptionDialogService,
    GoalActionTemplateResolver,
    GoalActionResolver

  ]
})

export class ConfigurationConceptModule { }