diff --git a/UOC20212/UOCVaccine/src/api.c b/UOC20212/UOCVaccine/src/api.c index 822d573..5c9c420 100644 --- a/UOC20212/UOCVaccine/src/api.c +++ b/UOC20212/UOCVaccine/src/api.c @@ -306,7 +306,45 @@ tApiError api_getVaccines(tApiData data, tCSVData *vaccines) { ////////////////////////////////// // Ex PR1 3c ///////////////////////////////// - return E_NOT_IMPLEMENTED; + + tApiError ret = E_NOT_IMPLEMENTED; + tCSVEntry foundVaccine; + tVaccineNode* currentVaccine; + char buffer[FILE_READ_BUFFER_SIZE]; + char name[MAX_VACCINE_NAME_LEN]; + int required; + int days; + csv_init(vaccines); + + currentVaccine = data.vaccines.first; + + // Go through all nodes in vaccine list until current one is nothing + while (currentVaccine != NULL) { + csv_initEntry(&foundVaccine); + + // Reuse previous function to get a vaccine by name and have it stored in a CSVEntry + if (api_getVaccine(data,currentVaccine->vaccine.name,&foundVaccine) == E_SUCCESS) { + + // Read vaccine info from getVaccine() method + csv_getAsString(foundVaccine,0,name,MAX_VACCINE_NAME_LEN+1); + required = csv_getAsInteger(foundVaccine,1); + days = csv_getAsInteger(foundVaccine,2); + + // Fill new csv string with format required + sprintf(buffer,"%s;%d;%d",name,required,days); + csv_addStrEntry(vaccines,buffer,VACCINE_TYPE_NAME); + + ret = E_SUCCESS; + } + + // Clean up dynamic memory used + csv_freeEntry(&foundVaccine); + + // Point currentVaccine to next element to get forward in the loop + currentVaccine = currentVaccine->next; + } + + return ret; } // Get vaccine lots