import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule, Routes } from '@angular/router';
import { TabsComponent } from './tabs/tabs.component';
import { OverviewComponent } from './tabs-content/Overview/Overview.component';

import { TabViewModule } from 'primeng/tabview';
import { TreeModule } from 'primeng/tree';
import { NgSelectModule } from '@ng-select/ng-select';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { FileUploadModule } from 'primeng/fileupload';
import { ProductService } from 'src/app/core/services/product.service';
import { ConfirmationService, MessageService } from 'primeng/api';
import { TranslateModule, TranslateService } from '@ngx-translate/core';
import { InputNumberModule } from 'primeng/inputnumber';
import { InputTextModule } from 'primeng/inputtext';
import { CalendarModule } from 'primeng/calendar';
// import { ExpServicesManageComponent } from './activity-services-manage.component';
import { TableModule } from 'primeng/table';
import { ToolbarModule } from 'primeng/toolbar';
import { DialogModule } from 'primeng/dialog';
import { RadioButtonModule } from 'primeng/radiobutton';
import { ListboxModule } from 'primeng/listbox';
import { CheckboxModule } from 'primeng/checkbox';
import { DropdownModule } from 'primeng/dropdown';
import { CarouselModule } from 'primeng/carousel';
import { MenuModule } from 'primeng/menu';
import { MatButtonModule } from '@angular/material/button';
import {
  MatRadioModule,
  MAT_RADIO_DEFAULT_OPTIONS,
} from '@angular/material/radio';
import { MatMenuModule } from '@angular/material/menu';
import { FullCalendarModule } from '@fullcalendar/angular';
import { ToastModule } from 'primeng/toast';
import { MatCheckbox, MatCheckboxModule, MAT_CHECKBOX_DEFAULT_OPTIONS } from '@angular/material/checkbox';
import { ExpServicesManageComponent } from './exp-services-manage.component';
import { SlotsComponent } from './tabs-content/slots/slots.component';
import { AddOptionalAddOnComponent } from './tabs-content/optional-addOns/add-optional-add-on/add-optional-add-on.component';
import { OptionalAddOnsComponent } from './tabs-content/optional-addOns/optional-addOns.component';
import { AddRateConfigComponent } from './tabs-content/rate-config/add-rate-config/add-rate-config.component';
import { EditAllocationComponent } from './tabs-content/rate-config/edit-allocation/edit-allocation.component';
import { EditCancelletionPolicyComponent } from './tabs-content/rate-config/edit-cancelletion-policy/edit-cancelletion-policy.component';
import { EditModifyRateComponent } from './tabs-content/rate-config/edit-modify-rate/edit-modify-rate.component';
import { RateConfigComponent } from './tabs-content/rate-config/rate-config.component';
import { AddNewSeasonComponent } from './tabs-content/season-creation/add-new-season/add-new-season.component';
import { SeasonCreationComponent } from './tabs-content/season-creation/season-creation.component';
import { AddSlotsComponent } from './tabs-content/slots/add-slots/add-slots.component';
import { EditDetailsComponent } from './tabs-content/rate-config/edit-details/edit-details.component';
import { ModifyDetailsComponent } from './tabs-content/rate-config/modify-details/modify-details.component';
import { StaticDataService } from 'src/app/core/common/static-data.service';
import { TooltipModule } from 'primeng/tooltip';

const routes: Routes = [
  {
    path: '',
    component: ExpServicesManageComponent,
  },
  {
    path: 'Add',
    component: AddRateConfigComponent,
  },
  {
    path: 'EditCancelletionPolicy',
    component: EditCancelletionPolicyComponent,
  },
  {
    path: 'EditDetails',
    component: ModifyDetailsComponent,
  },
  {
    path: 'EditAllocation',
    component: EditAllocationComponent,
  },
  {
    path: 'EditModifyRate',
    component: EditModifyRateComponent,
  },
  {
    path: 'AddOptionalAddOn',
    component: AddOptionalAddOnComponent,
  },
  {
    path: 'AddNewSeason',
    component: AddNewSeasonComponent,
  },
  {
    path: 'AddSlots',
    component: AddSlotsComponent,
  },
  {
    path: '',
    pathMatch: 'full',
    redirectTo: 'Search',
  },
];

@NgModule({
  declarations: [
    TabsComponent,
    OverviewComponent,
    SeasonCreationComponent,
    RateConfigComponent,
    OptionalAddOnsComponent,
    ExpServicesManageComponent,
    AddRateConfigComponent,
    EditModifyRateComponent,
    EditAllocationComponent,
    EditCancelletionPolicyComponent,
    AddOptionalAddOnComponent,
    AddNewSeasonComponent,
    SlotsComponent,
    AddSlotsComponent,
    EditDetailsComponent,
    ModifyDetailsComponent,
  ],
  imports: [
    CommonModule,
    TabViewModule,
    TreeModule,
    NgSelectModule,
    FormsModule,
    ReactiveFormsModule,
    ToastModule,
    FileUploadModule,
    TranslateModule,
    InputNumberModule,
    InputTextModule,
    CalendarModule,
    CarouselModule,
    TableModule,
    ToolbarModule,
    DialogModule,
    TooltipModule,
    ListboxModule,
    CheckboxModule,
    MatCheckboxModule,
    DropdownModule,
    MenuModule,
    MatMenuModule,
    MatButtonModule,
    RadioButtonModule,
    MatRadioModule,
    FullCalendarModule,
    RouterModule.forChild(routes),
  ],
  providers: [
    ProductService,
    ConfirmationService,
    StaticDataService,
    MessageService,
    TranslateService,
    {
      provide: MAT_RADIO_DEFAULT_OPTIONS,
      useValue: { color: 'primary' },
    },
    {
      provide: MAT_CHECKBOX_DEFAULT_OPTIONS,
      useValue: { color: 'primary' },
    },
  ],
})
export class ExpServicesManageModule {}
