import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
import {PartialsModule} from '../../partials/partials.module';
import {CoreModule} from '../../../core/core.module';
import {RouterModule} from '@angular/router';
import {
	MAT_DIALOG_DEFAULT_OPTIONS,
	MatAutocompleteModule,
	MatButtonModule,
	MatCardModule,
	MatCheckboxModule,
	MatDatepickerModule,
	MatDialogModule,
	MatExpansionModule,
	MatFormFieldModule,
	MatIconModule,
	MatInputModule,
	MatMenuModule,
	MatNativeDateModule,
	MatPaginatorModule,
	MatProgressBarModule,
	MatProgressSpinnerModule,
	MatRadioModule,
	MatSelectModule,
	MatSnackBarModule,
	MatSortModule,
	MatTableModule,
	MatTabsModule,
	MatTooltipModule
} from '@angular/material';
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
import {NgxPermissionsModule} from 'ngx-permissions';
import {HttpUtilsService, InterceptService, LayoutUtilsService, TypesUtilsService} from '../../../core/_base/crud';
import {HTTP_INTERCEPTORS} from '@angular/common/http';
import {ActionNotificationComponent, DeleteEntityDialogComponent} from '../../partials/content/crud';
import { ServiciosComponent } from './servicios/servicios.component';
import { ProductividadComponent } from './productividad/productividad.component';
import { ServiciosAsesorComponent } from './servicios-asesor/servicios-asesor.component';
import { ServiciosClienteComponent } from './servicios-cliente/servicios-cliente.component';
import { CapacidadAprovechadaComponent } from './capacidad-aprovechada/capacidad-aprovechada.component';
import { SemanalComponent } from './semanal/semanal.component';
import { MensualComponent } from './mensual/mensual.component';
import { ModalFiltrosServiciosComponent } from './servicios/modal-filtros-servicios/modal-filtros-servicios.component';
import { ModalFiltrosProductividadComponent } from './productividad/modal-filtros-productividad/modal-filtros-productividad.component';
import { ModalFiltrosServiciosAsesorComponent } from './servicios-asesor/modal-filtros-servicios-asesor/modal-filtros-servicios-asesor.component';
import { ModalFiltrosServiciosClienteComponent } from './servicios-cliente/modal-filtros-servicios-cliente/modal-filtros-servicios-cliente.component';
import { ModalFiltrosCapacidadAprovechadaComponent } from './capacidad-aprovechada/modal-filtros-capacidad-aprovechada/modal-filtros-capacidad-aprovechada.component';

@NgModule({
  declarations: [
	ServiciosComponent,
	ProductividadComponent,
	ServiciosAsesorComponent,
	ServiciosClienteComponent,
	CapacidadAprovechadaComponent,
	SemanalComponent,
	MensualComponent,
	ModalFiltrosServiciosComponent,
	ModalFiltrosProductividadComponent,
	ModalFiltrosServiciosAsesorComponent,
	ModalFiltrosServiciosClienteComponent,
	ModalFiltrosCapacidadAprovechadaComponent
  ],
  imports: [
		CommonModule,
		PartialsModule,
		CoreModule,
		RouterModule.forChild([
			{
				path: 'servicios',
				component: ServiciosComponent
			},
			{
				path: 'productividad',
				component: ProductividadComponent
			},
			{
				path: 'servicios-asesor',
				component: ServiciosAsesorComponent
			},
			{
				path: 'servicios-cliente',
				component: ServiciosClienteComponent
			},
			{
				path: 'capacidad-aprovechada',
				component: CapacidadAprovechadaComponent
			},
			{
				path: 'semanal',
				component: SemanalComponent
			},
			{
				path: 'mensual',
				component: MensualComponent
			},
		]),
		MatButtonModule,
		MatTooltipModule,
		MatFormFieldModule,
		MatInputModule,
		MatSelectModule,
		MatIconModule,
		MatTableModule,
		MatMenuModule,
		MatCheckboxModule,
		MatSortModule,
		MatProgressSpinnerModule,
		MatPaginatorModule,
		FormsModule,
		ReactiveFormsModule,
		MatAutocompleteModule,
		MatRadioModule,
		MatNativeDateModule,
		MatProgressBarModule,
		MatDatepickerModule,
		MatCardModule,
		MatSnackBarModule,
		MatExpansionModule,
		MatTabsModule,
		MatDialogModule,
		NgxPermissionsModule
	],
	providers: [
		InterceptService,
		{
			provide: HTTP_INTERCEPTORS,
			useClass: InterceptService,
			multi: true
		},
		{
			provide: MAT_DIALOG_DEFAULT_OPTIONS,
			useValue: {
				hasBackdrop: true,
				panelClass: 'kt-mat-dialog-container__wrapper',
				height: 'auto',
				width: '900px'
			}
		},
		HttpUtilsService,
		TypesUtilsService,
		LayoutUtilsService,
	],
	entryComponents: [
		DeleteEntityDialogComponent,
		ActionNotificationComponent,
		ModalFiltrosServiciosComponent,
		ModalFiltrosProductividadComponent,
		ModalFiltrosServiciosAsesorComponent,
		ModalFiltrosServiciosClienteComponent,
		ModalFiltrosCapacidadAprovechadaComponent
	]
})

export class ReportesModule { }
