#pragma once
#include<time.h>

typedef struct{
    char *name;
    char *supplier;
    int quantity;
    struct tm expiration_date;
} Material;

/*
    Constructor for Material
    Input: name - char*
           supplier - char*
           quantity - int
           day - int
           month - int
           year - int
    Output: Material* - pointer to the newly created Material
*/
Material* _Material_Constructor(char *name, char *supplier, int quantity, int day, int month, int year);

/*
    Destructor for Material
    Input: material - Material*
    Output: -
*/
void _Material_Destructor(Material *material);

/*
    Getter for name
    Input: material - Material*
    Output: char* - name
*/
char* _Material_GetName(Material *material);

/*
    Getter for supplier
    Input: material - Material*
    Output: char* - supplier
*/
char* _Material_GetSupplier(Material *material);

/*
    Getter for quantity
    Input: material - Material*
    Output: int - quantity
*/
int _Material_GetQuantity(Material *material);

/*
    Getter for expiration date
    Input: material - Material*
    Output: struct tm - expiration date
*/
struct tm _Material_GetDate(Material *material);

/*
    Setter for name
    Input: material - Material*
           name - char*
    Output: -
*/
void _Material_SetQuantity(Material *material, int quantity);

/*
    Setter for supplier
    Input: material - Material*
           supplier - char*
    Output: -
*/
char* _Material_stringify(Material *material);

