#include <stdlib.h>

#include <logger.h>
#include <constants.h>
#include <models/period.h>

period_t*
period_create(uint16_t start, uint16_t end)
{
    period_t *new_period = malloc(sizeof(period_t));
    new_period->start = start;
    new_period->end = end;

    return new_period;
}

int
period_includes_time(period_t *period, struct tm *time_struct)
{
    uint16_t start = period->start;
    uint16_t end = period->end;

    time_t timestamp = time_struct->tm_hour * 60;
    timestamp += time_struct->tm_min;

    // "normal" timespan
    if(start < end)
    {
        if(start <= timestamp && end > timestamp)
        {
            return 1;
        }
        return 0;
    }

    // timespan goes through 00:00
    if(end < start)
    {
        if(start >= timestamp && end < timestamp)
        {
            return 1;
        }
        return 0;
    }

    return 0;
}