import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
import { NgxsModule } from '@ngxs/store';
import { NativeScriptCommonModule } from '@nativescript/angular';
import { NativeScriptUIDataFormModule } from 'nativescript-ui-dataform/angular';
import { NativeScriptUIListViewModule } from 'nativescript-ui-listview/angular';
import { SharedModule } from '~/shared/shared.module';
import { EduEventBaseDetailComponent } from './components/edu/edu-event-base-detail/edu-event-base-detail.component';
import { EduEventInfoDetailComponent } from './components/edu/edu-event-info-detail/edu-event-info-detail.component';
import { EduEventListViewComponent } from './components/edu/edu-event-list/edu-event-list-view.component';
import { EventRoutingModule } from './event-routing.module';
import { EduEventStateDetailComponent } from './components/edu/edu-event-state-detail/edu-event-state-detail.component';
import { EduEventActionState } from './state-mgmt/edu/edu-event-action.state';
import { GenEventSearchListState } from './state-mgmt/gen/gen-event-search-list.state';
import { GenEventListPageComponent } from './containers/gen/gen-event-list-page/gen-event-list-page.component';
import { GenEventListViewComponent } from './components/gen/gen-event-list/gen-event-list-view.component';
import { GenEventSearchModalComponent } from './components/gen/gen-event-search-modal/gen-event-search-modal.component';
import { SearchSortTagsComponent } from './components/common/search-sort-tags/search-sort-tags.component';
import { GenEventDetailPageComponent } from './containers/gen/gen-event-detail-page/gen-event-detail-page.component';
import { GenEventDetailState } from './state-mgmt/gen/gen-event-detail.state';
import { GenEventBaseDetailComponent } from './components/gen/gen-event-base-detail/gen-event-base-detail.component';
import { PersonListComponent } from './components/common/person-list/person-list.component';
import { DateTimePipe } from '~/shared/pipes/date-time.pipe';
import { PhonePipe } from '~/shared/pipes/phone.pipe';
import { GenEventNewPageComponent } from './containers/gen/gen-event-new-page/gen-event-new-page.component';
import { GenEventNewState } from './state-mgmt/gen/gen-event-new.state';
import { EduEventDetailPageComponent } from './containers/edu/edu-event-detail-page/edu-event-detail-page.component';
import { EduEventEnrollPageComponent } from './containers/edu/edu-event-enroll-page/edu-event-enroll-page.component';
import { EduEventListPageComponent } from './containers/edu/edu-event-list-page/edu-event-list-page.component';
import { EduEventCourseEnrollReminderPageComponent } from './containers/edu/edu-event-notification-page/edu-event-course-enroll-reminder-page.component';
import { EduEventSearchModalComponent } from './components/edu/edu-event-search-modal/edu-event-search-modal.component';
import { EduEventDetailState } from './state-mgmt/edu/edu-event-detail.state';
import { EduEventOtherDetailState } from './state-mgmt/edu/edu-event-other-detail.state';
import { EduEventPeopleDetailState } from './state-mgmt/edu/edu-event-people.state';
import { EduEventSearchListState } from './state-mgmt/edu/edu-event-search-list.state';
import { CampEventSearchListState } from './state-mgmt/camp/camp-event-search-list.state';
import { CampEventListComponent } from './components/camp/camp-event-list/camp-event-list.component';
import { CampEventListPageComponent } from './containers/camp/camp-event-list-page/camp-event-list-page.component';
import { CampEventSearchModalComponent } from './components/camp/camp-event-search-modal/camp-event-search-modal.component';
import { SortModalComponent } from './components/common/sort-modal/sort-modal.component';
import { GenEventParticipantViewComponent } from './components/gen/gen-event-participant-page/gen-event-participant-view.component';
import { CongEventListPageComponent } from './containers/cong/cong-event-list-page/cong-event-list-page.component';
import { CongEventSearchListState } from './state-mgmt/cong/cong-event-search-list.state';
import { CongEventListComponent } from './components/cong/cong-event-list/cong-event-list.component';
import { InfoLineComponent } from './components/common/info-line/info-line.component';
import { CampEventDetailPageComponent } from './containers/camp/camp-event-detail-page/camp-event-detail-page.component';
import { CampEventBaseDetailComponent } from './components/camp/camp-event-base-detail/camp-event-base-detail.component';
import { CampEventDetailState } from '~/pages/event/state-mgmt/camp/camp-event-detail.state';
import { CongEventDetailPageComponent } from './containers/cong/cong-event-detail-page/cong-event-detail-page.component';
import { CongEventDetailState } from './state-mgmt/cong/cong-event-detail.state';
import { CongEventBaseDetailComponent } from './components/cong/cong-event-base-detail/cong-event-base-detail.component';
import { CampEventParticipantViewComponent } from './components/camp/camp-event-participant-page/camp-event-participant-view.component';
import { CongEventSearchModalComponent } from './containers/cong/cong-event-search-modal/cong-event-search-modal.component';
import { GpsDmsPipe } from '~/shared/pipes/gps-coordinate.pipe';
import { CongEventCandidateListComponent } from './components/cong/cong-candidate-list/cong-event-candidate-list.component';
import { CongCandidateDetailState } from './state-mgmt/cong/cong-candidate-detail.state';
import { CongCandidateDetailComponent } from './components/cong/cong-candidate-detail/cong-candidate-detail.component';
import { CongCandidateDetailPageComponent } from './containers/cong/cong-candidate-detail-page/cong-candidate-detail-page.component';
import { CongEventVoteDetailComponent } from './components/cong/cong-event-vote/cong-event-vote-detail.component';
import { DisappearingScrollActionBarComponent } from './components/common/disappearing-scroll-action-bar/disappearing-scroll-action-bar.component';
import { WebViewExtModule } from '@nota/nativescript-webview-ext/angular';
import { MapPickerModal } from './components/common/map-picker-modal/map-picker-modal.component';
import { GenEventMapPickerState } from './state-mgmt/gen/gen-event-map-picker.state';
import { CampMapModal } from './components/camp/camp-map-modal/camp-map-modal.component';
import { CongEventDecisionListComponent } from './components/cong/cong-event-decision-list/cong-event-decision-list.component';
import { CongDecisionDetailModalComponent } from './components/cong/cong-decision-detail-modal/cong-decision-detail-modal.component';
import { EduEventOtherDetailPageComponent } from './containers/edu/edu-event-other-detail-page/edu-event-other-detail-page.component';
import { EduEventImageViewComponent } from './containers/edu/edu-event-image-view/edu-event-image-view.component';
import { PersonPhotoComponent } from './containers/common/person-photo/person-photo.component';
import { EduEventLogoComponent } from './containers/edu/edu-event-logo/edu-event-logo.component';
import { ImageService } from './services/image.service';
import { AddCampEventParticipantPageComponent } from './containers/camp/camp-event-add-participant-page/camp-event-add-participant-page.component';
import { CampEventParticipantState } from './state-mgmt/camp/camp-event-participant.state';
import { CampEventParticipantUpdateModalComponent } from './components/camp/camp-participant-update-modal/camp-event-participant-update-modal.component';
import { SelectPersonFormComponent } from './components/common/select-person-form/select-person-form.component';
import { AddGenEventParticipantPageComponent } from './containers/gen/gen-event-add-participant-page/gen-event-add-participant-page.component';
import { GenEventParticipantState } from './state-mgmt/gen/gen-event-participant.state';
import { GenEventParticipantUpdateModalComponent } from './components/gen/gen-participant-update-modal/gen-event-participant-update-modal.component';
import { ParticipantFormComponent } from './components/common/participant-form/participant-form.component';
import { SelectPersonExtendedFormComponent } from './components/common/select-person-extended-form/select-person-extended-form.component';
import { CampEventStateDetailComponent } from './components/camp/camp-event-state-detail/camp-event-state-detail.component';
import { GenEventStateDetailComponent } from './components/gen/gen-event-state-detail/gen-event-state-detail.component';
import { GenEventReportDetailComponent } from './components/gen/gen-event-report-detail/gen-event-report-detail.component';
import { GenEventUpdateReportModalComponent } from './components/gen/gen-event-update-report-modal/gen-event-update-report-modal.component';
import { EduEventMySearchListState } from './state-mgmt/edu/edu-event-my-search-list.state';
import { EduEventMyListPageComponent } from './containers/edu/edu-event-my-list-page/edu-event-my-list-page.component';
import { EduEventMyListViewComponent } from './components/edu/edu-event-my-list/edu-event-my-list.component';
import { EduEventMySearchModalComponent } from './components/edu/edu-event-my-search-modal/edu-event-my-search-modal.component';
import { GenEventParticipantPageComponent } from './containers/gen/gen-event-participant-page/gen-event-participant-page.component';
import { GenEventUpdateLeaderModal } from './containers/gen/gen-event-update-leader-modal/gen-event-update-leader-modal.component';
import { CampEventUpdateLeaderPage } from './containers/camp/camp-event-update-leader-page/camp-event-update-leader-page.component';
import { EduEventUpdateLeaderPageComponent } from './containers/edu/edu-event-update-leader-page/edu-event-update-leader-page.component';
import { EduEventUpdateInstructorPageComponent } from './containers/edu/edu-event-update-instructor-page/edu-event-update-instructor-page.component';
import { EduEventInstructorListPageComponent } from './containers/edu/edu-event-instructor-list-page/edu-event-instructor-list-page.component';
import { CampEventParticipantMutliAddPage } from './containers/camp/camp-event-participant-multiadd-page/camp-event-participant-multiadd-page.component';
import { CampEventNewPageComponent } from './containers/camp/camp-event-new-page/camp-event-new-page.component';
import { CampEventNewState } from './state-mgmt/camp/camp-event-new.state';
import { UnitService } from '../../shared/services/unit.service';
import { EventTabComponent } from './components/common/event-tab/event-tab.component';
import { ScrollTopBarListComponent } from './components/common/scroll-top-bar-list/scroll-top-bar-list.component';
import { CampPersonSearchContainerComponent } from './containers/common/camp-person-search-container/camp-person-search-container.component';
import { PersonSearchContainerComponent } from './containers/common/person-search-container/person-search-container.component';
import { LeaderTableComponent } from './components/common/leader-table/leader-table.component';
import { InfoLineClickableComponent } from './components/common/info-line-clickable/info-line-clickable.component';
import { GpsLineComponent } from './components/common/gps-line/gps-line.component';
import { TermLineComponent } from './components/common/term-line/term-line.component';
import { EventListItemHeaderComponent } from './components/common/event-list-item-header/event-list-item-header.component';
import { GpsFormComponent } from './components/common/gps-form/gps-form.component';

@NgModule({
    imports: [
        NativeScriptCommonModule,
        EventRoutingModule,
        NativeScriptUIDataFormModule,
        NativeScriptUIListViewModule,
        SharedModule,
        WebViewExtModule,
        NgxsModule.forFeature([
            EduEventSearchListState,
            EduEventDetailState,
            EduEventOtherDetailState,
            EduEventPeopleDetailState,
            EduEventActionState,
            GenEventSearchListState,
            GenEventDetailState,
            GenEventNewState,
            CampEventSearchListState,
            CampEventDetailState,
            CongEventSearchListState,
            CongEventDetailState,
            CongCandidateDetailState,
            GenEventMapPickerState,
            CampEventParticipantState,
            GenEventParticipantState,
            EduEventMySearchListState,
            CampEventNewState,
        ])
    ],
    declarations: [
        MapPickerModal,
        CampMapModal,
        EduEventSearchModalComponent,
        EduEventListPageComponent,
        EduEventListViewComponent,
        EduEventDetailPageComponent,
        EduEventBaseDetailComponent,
        EduEventInfoDetailComponent,
        EduEventStateDetailComponent,
        EduEventEnrollPageComponent,
        EduEventCourseEnrollReminderPageComponent,
        GenEventListPageComponent,
        GenEventListViewComponent,
        GenEventSearchModalComponent,
        SearchSortTagsComponent,
        GenEventDetailPageComponent,
        GenEventBaseDetailComponent,
        PersonListComponent,
        GenEventNewPageComponent,
        CongEventCandidateListComponent,
        CampEventListComponent,
        CampEventListPageComponent,
        CampEventDetailPageComponent,
        CampEventBaseDetailComponent,
        CampEventParticipantViewComponent,
        SortModalComponent,
        CampEventSearchModalComponent,
        GenEventParticipantViewComponent,
        CongEventListPageComponent,
        CongEventListComponent,
        CongEventDetailPageComponent,
        CongEventBaseDetailComponent,
        InfoLineComponent,
        CongEventSearchModalComponent,
        CongCandidateDetailComponent,
        CongCandidateDetailPageComponent,
        CongEventVoteDetailComponent,
        CongEventDecisionListComponent,
        CongDecisionDetailModalComponent,
        DisappearingScrollActionBarComponent,
        EduEventOtherDetailPageComponent,
        EduEventImageViewComponent,
        PersonPhotoComponent,
        EduEventLogoComponent,
        AddCampEventParticipantPageComponent,
        CampEventParticipantUpdateModalComponent,
        SelectPersonFormComponent,
        AddGenEventParticipantPageComponent,
        GenEventParticipantUpdateModalComponent,
        ParticipantFormComponent,
        SelectPersonExtendedFormComponent,
        CampEventStateDetailComponent,
        GenEventStateDetailComponent,
        GenEventReportDetailComponent,
        GenEventUpdateReportModalComponent,
        EduEventMyListPageComponent,
        EduEventMyListViewComponent,
        EduEventMySearchModalComponent,
        GenEventParticipantPageComponent,
        GenEventUpdateLeaderModal,
        CampEventUpdateLeaderPage,
        EduEventUpdateLeaderPageComponent,
        EduEventUpdateInstructorPageComponent,
        EduEventInstructorListPageComponent,
        CampEventParticipantMutliAddPage,
        CampEventNewPageComponent,
        EventTabComponent,
        ScrollTopBarListComponent,
        CampPersonSearchContainerComponent,
        PersonSearchContainerComponent,
        LeaderTableComponent,
        InfoLineClickableComponent,
        GpsLineComponent,
        TermLineComponent,
        EventListItemHeaderComponent,
        GpsFormComponent,
    ],
    exports: [
        DisappearingScrollActionBarComponent,
        InfoLineComponent,
        SortModalComponent,
        ScrollTopBarListComponent,
        EventListItemHeaderComponent,
    ],
    providers: [
        DateTimePipe,
        PhonePipe,
        GpsDmsPipe,
        ImageService,
        UnitService,
    ],
    schemas: [
        NO_ERRORS_SCHEMA
    ]
})
export class EventModule {
}
