MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: //home/cafsindia/lead_cafsinfotech.com/core/app/core/src/lib/fields/datetime/datetime.model.ts
import {NgbDateStruct, NgbTimeStruct} from "@ng-bootstrap/ng-bootstrap";
import {DatetimeFormatter} from "../../services/formatters/datetime/datetime-formatter.service";
import {FormatOptions} from "../../services/formatters/formatter.model";

export class DateTimeModel {
    hourStep = 1;
    minuteStep = 15;
    secondStep = 30;
    displaySeconds: boolean = false;
    date: NgbDateStruct;
    time: NgbTimeStruct;

    public constructor(init?: Partial<DateTimeModel>) {
        Object.assign(this, init);
    }

    public static toDateTimeStruct(formatter, dateString: string): DateTimeModel | null {
        if (!dateString) {
            return null;
        }
        const dateTimeStruct = formatter.userDateTimeFormatToStruct(dateString);

        if (!dateTimeStruct) {
            return null;
        }
        const {date, time} = dateTimeStruct;
        return new DateTimeModel({
            date: date,
            time: time
        });

    }

    public static internalToDateTimeStruct(formatter, dateString: string): DateTimeModel | null {
        if (!dateString) {
            return null;
        }
        const dateTimeStruct = formatter.internalDateTimeFormatToStruct(dateString);

        if (!dateTimeStruct) {
            return null;
        }
        const {date, time} = dateTimeStruct;
        return new DateTimeModel({
            date: date,
            time: time
        });

    }

    public toUserFormat(formatter: DatetimeFormatter, options?: FormatOptions): string {

        //prepare datetime string in yyyy-M-d H:m:s format (datetimepicker default)
        const dateString = [this.date.year, this.date.month, this.date.day].join('-');
        const timeString = [this.time.hour, this.time.minute, this.time.second].join(':');
        const datetimeString = [dateString, timeString].join(' ');

        const internalDateTimeString = formatter.toInternalFormat(datetimeString, {fromFormat: 'yyyy-M-d H:m:s'});

        //convert from yyyy-M-d H:m:s format to user format
        return formatter.toUserFormat(internalDateTimeString, {...options, fromFormat: 'yyyy-M-d H:m:s'});

    }
}