
//Angular
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http';
//Kendo
import { MenuModule, ContextMenuModule } from '@progress/kendo-angular-menu';
import { IconsModule } from '@progress/kendo-angular-icons';
import { DialogsModule } from '@progress/kendo-angular-dialog';
import {ButtonsModule, FloatingActionButtonModule} from '@progress/kendo-angular-buttons';
import { GridModule, PDFModule, ExcelModule } from '@progress/kendo-angular-grid';
import { InputsModule } from '@progress/kendo-angular-inputs';

//App
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
import { DashboardComponent } from './dashboard/dashboard.component';
import { AuthComponent } from './auth/auth.component';
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
import { MenuService } from './service/menu.service';
import { LoanEditComponent } from './loan-edit/loan-edit.component';
import { NavigationModule } from '@progress/kendo-angular-navigation';
import { LayoutModule } from '@progress/kendo-angular-layout';
import { IndicatorsModule } from '@progress/kendo-angular-indicators';
import { LabelModule } from '@progress/kendo-angular-label';
import { AuthService } from './service/auth.service';
import { AuthGuard } from './service/auth-guard.service';
import { NotificationModule } from '@progress/kendo-angular-notification';
import { ChartsModule } from '@progress/kendo-angular-charts';
import 'hammerjs';
import { BkpDividerComponent } from './bkp-divider/bkp-divider.component';
import { BkpDividerShadowBottomComponent } from './bkp-divider-shadow-bottom/bkp-divider-shadow-bottom.component';
import { BkpDividerTextComponent } from './bkp-divider-text/bkp-divider-text.component';
import { DateInputsModule } from '@progress/kendo-angular-dateinputs';
import { DropDownsModule } from '@progress/kendo-angular-dropdowns';
import { TransactionComponent } from './transaction/transaction.component';
import { TransactionListComponent } from './transaction-list/transaction-list.component';
import { ExcelExportModule } from '@progress/kendo-angular-excel-export';
import { RatingComponent } from './rating-input/rating.component';
import { TransDetailsComponent } from './trans-details/trans-details.component';
import { TransTailsComponent } from './trans-details/trans-tails/trans-tails.component';
import {AuthHttpInterceptor} from './auth/auth-http-interceptor.service';
import {WebSocketService} from './websocket';
import { ChartTypeOfLoansComponent } from './chart-type-of-loans/chart-type-of-loans.component';
import { ChartAmountOfLoansComponent } from './chart-amount-of-loans/chart-amount-of-loans.component';
import { ChartPastYearMonthlyPerformanceComponent } from './chart-past-year-monthly-performance/chart-past-year-monthly-performance.component';
import { ChartRecentTenLoansComponent } from './chart-recent-ten-loans/chart-recent-ten-loans.component';
import { ChartTopBrokersComponent } from './chart-top-brokers/chart-top-brokers.component';
import { ListAllLoansComponent } from './list-all-loans/list-all-loans.component';
import { TopBarComponent } from './top-bar/top-bar.component';
import {LoanSummaryService} from './service/loan_summary.service';
import { LoanAddNewComponent } from './loan-add-new/loan-add-new.component';
import { EditorModule } from '@progress/kendo-angular-editor';
import { BasicinfoComponent } from './loan-edit/basicinfo/basicinfo.component';
import { PeopleRewardComponent } from './loan-edit/people-reward/people-reward.component';
import { TrailIncomeComponent } from './loan-edit/trail-income/trail-income.component';
import { PeopleSelectComponent } from './people-select/people-select.component';
import { LoanDetailComponent } from './loan-detail/loan-detail.component';
import {LoanSingleService} from './service/loan.single.service';
import { RatingInputComponent } from './rating-input/rating-input.component';
import { LoanEditPeopleComponent } from './loan-edit-people/loan-edit-people.component';
import { PeopleCardComponent } from './people-card/people-card.component';
import { LenderUploadsComponent } from './lender-uploads/lender-uploads.component';
import { BrokerLoanListComponent } from './broker-loan-list/broker-loan-list.component';
import { BrokerRewardComponent } from './broker-reward/broker-reward.component';
import { BrokerProfileComponent } from './profile/broker-profile/broker-profile.component';
import { ClientLoanListComponent } from './client-loan-list/client-loan-list.component';
import { ClientProfileComponent } from './client-profile/client-profile.component';
import { E403Component } from './e403/e403.component';
import {FileSelectModule, UploadModule} from '@progress/kendo-angular-upload';
import { ListAllRewardsComponent } from './list-all-rewards/list-all-rewards.component';
import { AdminRewardByBrokerComponent } from './admin-reward-by-broker/admin-reward-by-broker.component';
import { RewardOverviewComponent } from './reward-overview/reward-overview.component';
import { RewardUnpaidComponent } from './reward-unpaid/reward-unpaid.component';
import { RewardPaidComponent } from './reward-paid/reward-paid.component';
import { PayInComponent } from './pay-in/pay-in.component';
import { PeopleAddComponent } from './people-add/people-add.component';
import { ListAllPeopleComponent } from './list-all-people/list-all-people.component';
import { SettingsComponent } from './settings/settings.component';
import { ProfileComponent } from './profile/profile.component';
import { PeopleProfileComponent } from './profile/people-profile/people-profile.component';
import { MessageBoxComponent } from './message-box/message-box.component';
import { UserProfileComponent } from './profile/user-profile/user-profile.component';
import { AdminProfileComponent } from './profile/admin-profile/admin-profile.component';
import { ChangePasswordComponent } from './profile/change-password/change-password.component';
import { ProgressBarModule } from '@progress/kendo-angular-progressbar';
import { PagerModule } from '@progress/kendo-angular-pager';
import { ListIncomeComponent } from './list-income/list-income.component';
import { UploadCardsComponent } from './upload-cards/upload-cards.component';
import {UploadInterceptor} from './lender-uploads/upload-status.interceptor';
import { UploadDetailComponent } from './upload-detail/upload-detail.component';
import {SafeUrlPipe} from './pipe/safe.url.pipe';
import { ImagePopupDialogComponent } from './image-popup-dialog/image-popup-dialog.component';







@NgModule({
  declarations: [
    AppComponent,
    DashboardComponent,
    AuthComponent,
    LoanEditComponent,
    BkpDividerComponent,
    BkpDividerShadowBottomComponent,
    BkpDividerTextComponent,
    TransactionComponent,
    TransactionListComponent,
    RatingComponent,
    TransDetailsComponent,
    TransTailsComponent,
    ChartTypeOfLoansComponent,
    ChartAmountOfLoansComponent,
    ChartPastYearMonthlyPerformanceComponent,
    ChartRecentTenLoansComponent,
    ChartTopBrokersComponent,
    ListAllLoansComponent,
    TopBarComponent,
    LoanAddNewComponent,
    BasicinfoComponent,
    PeopleRewardComponent,
    TrailIncomeComponent,
    PeopleSelectComponent,
    LoanDetailComponent,
    RatingInputComponent,
    LoanEditPeopleComponent,
    PeopleCardComponent,
    LenderUploadsComponent,
    BrokerLoanListComponent,
    BrokerRewardComponent,
    BrokerProfileComponent,
    ClientLoanListComponent,
    ClientProfileComponent,
    E403Component,
    ListAllRewardsComponent,
    AdminRewardByBrokerComponent,
    RewardOverviewComponent,
    RewardUnpaidComponent,
    RewardPaidComponent,
    PayInComponent,
    PeopleAddComponent,
    ListAllPeopleComponent,
    SettingsComponent,
    ProfileComponent,
    PeopleProfileComponent,
    MessageBoxComponent,
    UserProfileComponent,
    AdminProfileComponent,
    ChangePasswordComponent,
    ListIncomeComponent,
    UploadCardsComponent,
    UploadDetailComponent,
    SafeUrlPipe,
    ImagePopupDialogComponent
  ],
  imports: [
    BrowserModule,
    BrowserAnimationsModule,
    FormsModule,
    CommonModule,
    HttpClientModule,
    ReactiveFormsModule,
    AppRoutingModule,
    MenuModule,
    ContextMenuModule,
    BrowserAnimationsModule,
    DialogsModule,
    ButtonsModule,
    FloatingActionButtonModule,
    GridModule,
    PDFModule,
    ExcelModule,
    InputsModule,
    IconsModule,
    FontAwesomeModule,
    NavigationModule,
    LayoutModule,
    IndicatorsModule,
    LabelModule,
    NotificationModule,
    ChartsModule,
    DateInputsModule,
    DropDownsModule,
    ExcelExportModule,
    EditorModule,
    UploadModule,
    FileSelectModule,
    ProgressBarModule,
    PagerModule
  ],
  providers: [
    MenuService,
    AuthGuard,
    AuthService,
    WebSocketService,
    LoanSummaryService,
    LoanSingleService,
    {
      provide: HTTP_INTERCEPTORS,
      useClass: AuthHttpInterceptor,
      multi: true
    },
    {
      provide: HTTP_INTERCEPTORS,
      useClass: UploadInterceptor,
      multi: true
    }
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }
