#include "plib.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void print_usage() {
    printf("Usage: ./panchanga -d <dd/mm/yyyy> -t <hh:mm> -z <timezone>\n");
}

int main(int argc, char *argv[]) {
    char date[20] = {0}, time[20] = {0}, zone[20] = {0};
    double dd, hr, zhr;
    int mm, yy, mn, zmn;
    struct panchanga pdata;
    char duration_buffer[64];

    if (argc != 7) {
        print_usage();
        return 1;
    }

    for (int i = 1; i < argc; i += 2) {
        if (strcmp(argv[i], "-d") == 0) {
            strcpy(date, argv[i + 1]);
        } else if (strcmp(argv[i], "-t") == 0) {
            strcpy(time, argv[i + 1]);
        } else if (strcmp(argv[i], "-z") == 0) {
            strcpy(zone, argv[i + 1]);
        } else {
            print_usage();
            return 1;
        }
    }

    if (sscanf(date, "%lf/%d/%d", &dd, &mm, &yy) != 3) {
        print_usage();
        return 1;
    }

    if (sscanf(time, "%lf:%d", &hr, &mn) != 2) {
        print_usage();
        return 1;
    }
    hr += mn / 60.0;

    if (sscanf(zone, "%lf:%d", &zhr, &zmn) != 2) {
        print_usage();
        return 1;
    }
    zhr += (zhr < 0.0) ? -(zmn / 60.0) : (zmn / 60.0);

    calculate_panchanga(dd, mm, yy, hr, zhr, &pdata);

    printf("Tithi     : %s, %s Paksha (", pdata.dtithi, pdata.dpaksha);
    format_duration(pdata.remaining_tithi_duration, duration_buffer);
    printf("%s remaining)\n", duration_buffer);

    printf("Nakshatra : %s (", pdata.dnakshatra);
    format_duration(pdata.remaining_nakshatra_duration, duration_buffer);
    printf("%s remaining)\n", duration_buffer);

    printf("Yoga      : %s (", pdata.dyoga);
    format_duration(pdata.remaining_yoga_duration, duration_buffer);
    printf("%s remaining)\n", duration_buffer);

    printf("Karana    : %s (", pdata.dkarana);
    format_duration(pdata.remaining_karana_duration, duration_buffer);
    printf("%s remaining)\n", duration_buffer);

    printf("Rashi     : %s (", pdata.drashi);
    format_duration(pdata.remaining_rashi_duration, duration_buffer);
    printf("%s remaining)\n", duration_buffer);

    return 0;
}

