import { formatDate } from '@angular/common';
import { Component, OnInit } from '@angular/core';
import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
import { ModalInterface } from 'src/app/interfaces/modal-interface';
import { DataTransmitterService } from 'src/app/services/dataTransmitter/data-transmitter.service';

@Component({
  standalone: false,
    selector: 'app-date-range-select-pop-up',
    templateUrl: './date-range-select-pop-up.component.html',
    styleUrls: ['./date-range-select-pop-up.component.scss']
})
export class DateRangeSelectPopUpComponent implements OnInit, ModalInterface {

    modalComponent!: NgbModalRef;
    popUpConfig = {
        showHeader: 'true',
        showClose: 'true',
        title: 'SELECT DATE RANGE'
    }
    day: string = '';
    dayKey: string = '';
    minDate: Date = new Date();
    fromDate!: Date;
    toDate!: Date;
    invalidDate: boolean = false;

    constructor(public modalService: NgbModal, private dataTransmitter: DataTransmitterService) { }

    ngOnInit(): void {
    }

    openModal(): void {
        this.modalComponent = this.modalService?.open(DateRangeSelectPopUpComponent, { size: 'sm' });
    }

    closeModal(): void {
        this.modalService.dismissAll();
    }

    setData(data: any): void {
        this.modalComponent.componentInstance.day = data.day;
        this.modalComponent.componentInstance.dayKey = data.dayKey;
    }

    saveChanges(): void {
        this.invalidDate = false;
        if (!(this.fromDate instanceof Date) || !(this.toDate instanceof Date) || this.fromDate > this.toDate) {
            this.invalidDate = true;
            return ;
        }
        this.dataTransmitter.cutOffClosedDateRange.next({
            day: this.dayKey,
            fromDate: formatDate(this.fromDate, 'yyyy-MM-dd', 'en'),
            toDate: formatDate(this.toDate, 'yyyy-MM-dd', 'en')
        });
        this.closeModal();
    }
}
