diff options
-rwxr-xr-x | src/main.cpp | 27 | ||||
-rwxr-xr-x | src/time.cpp | 28 | ||||
-rwxr-xr-x | src/time.h | 2 |
3 files changed, 39 insertions, 18 deletions
diff --git a/src/main.cpp b/src/main.cpp index 02037b8..d1c9080 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -59,8 +59,6 @@ int main(int argc, char* argv[]) for(int day=0; day<number_of_days; day++) { - // TODO: Asking for everything repeatedly like this is dumb, - // and needs to be replaced with a menu system. // TODO: Inputing the dates should be done with a custom function and layout, // not std::cin, because it openly allows for invalid input std::cout << "\n - DAY " << day+1 << "-\nCalltime:\n"; @@ -72,8 +70,9 @@ int main(int argc, char* argv[]) moment lunch_start = calltime+(delta){0,4,0}; moment lunch_end = lunch_start+(delta){30,0,0}; - std::cout << "\n------------- DAY " << day+1 << " -------------\n"; while(1) { + std::cout << "\033[2J\033[1;1H"; + std::cout << "\n------------- DAY " << day+1 << " -------------\n"; std::cout << "[1] Calltime: " << timeprint(calltime) << "\n"; std::cout << "[2] Wraptime: " << timeprint(wraptime) << "\n"; std::cout << "[3] Planned wrap: " << timeprint(planned_wraptime) << "\n"; @@ -86,6 +85,7 @@ int main(int argc, char* argv[]) std::cin >> input_number; std::cin.ignore(); + std::cout << "\n"; switch (input_number) { case 0: goto done; @@ -114,15 +114,6 @@ int main(int argc, char* argv[]) } done: - //std::cout << "\nWraptime:\n"; - //moment wraptime = timeinput(calltime); - //std::cout << "\nPlanned wraptime:\n"; - //moment planned_wraptime = timeinput(calltime); - //std::cout << "\nLunch start:\n"; - //moment lunch_start = timeinput(calltime); - //std::cout << "\nLunch end:\n"; - //moment lunch_end = timeinput(calltime); - workdays.push_back({previous_wrap, calltime, wraptime, @@ -141,22 +132,28 @@ done: << ". Total hours: " << current_workday->blocks[i].hourcount() << "\t Valuefactor: " << current_workday->blocks[i].valuefactor << std::endl; } + + // This assumes that the user is entering things chronologically, which they may not be previous_wrap = wraptime; + std::cout << "\033[2J\033[1;1H"; } + std::cout << "\n\n\n -+-+-+-+-+-+-+- CALCULATION -+-+-+-+-+-+-+-\n\n"; + std::cout << "Dayrate: " << dayrate << "\n"; + std::cout << "Hourly rate: " << hourly_rate << "\n"; double total_sum = 0; for(int ii=0; ii < number_of_days; ii++) { workday& each_day = workdays[ii]; double day_price = 0; - std::cout << "\n ----- Day " << ii+1 << " ----- " << "\n"; + std::cout << "\n ----- Day " << ii+1 << ": " << timeprint(each_day.call, false) << " ----- " << "\n"; for(int jj=0; jj < each_day.total_timeblocks; jj++) { timeblock& each_block = each_day.blocks[jj]; double block_price = each_block.hourcount() * hourly_rate * each_block.valuefactor; - std::cout << "Price of block " << jj << ": " << block_price << "\n"; + std::cout << timeprint(each_block, true) << ", " << each_block.hourcount() << "h\t+" << (each_block.valuefactor-1)*100 << "%\t= " << block_price << "\n"; day_price += block_price; } - std::cout << "Price of day " << ii+1 << ": " << day_price << "\n"; + std::cout << "Price of day " << ii+1 << ": " << day_price << std::endl; total_sum += day_price; } diff --git a/src/time.cpp b/src/time.cpp index 8507f0f..85dc78a 100755 --- a/src/time.cpp +++ b/src/time.cpp @@ -177,10 +177,13 @@ workday::workday(const moment& previous_wrap, // THE VALUE-FACTOR CALCULATION PART - // TODO: Implement a good system for this fuckin' paragraph: - // A. 50 % tillegg for arbeid inntil 2 timer før, eller inntil 3 timer etter ordinær arbeidstid når arbeidstiden ikke er forskjøvet og overtiden er varslet. Dersom det varsles overtid både før og etter ordinær arbeidstid betales de to første timene med 50 % tillegg og de øvrige med 100 % tillegg. // TODO: Complete the valuefactor calculation ruleset // Including, Easter and other holidays + // TODO: Implement a good system for this fuckin' paragraph: + // A. 50 % tillegg for arbeid inntil 2 timer før, eller inntil 3 timer etter ordinær arbeidstid når arbeidstiden ikke er forskjøvet og overtiden er varslet. Dersom det varsles overtid både før og etter ordinær arbeidstid betales de to første timene med 50 % tillegg og de øvrige med 100 % tillegg. + // TODO: And this paragraph, which seems to say that planned being beyond actual wrap is a relevant case + // Varslet overtid som ikke benyttes honoreres med inntil to timer etter de vanlige overtidssatser, dog slik at én time av den ubenyttede overtiden ikke honoreres . + // TODO: Add reasons for the upped valuefactors. for(int ii=0; ii < total_timeblocks; ii++){ timeblock& each_block = blocks[ii]; @@ -287,7 +290,7 @@ timeblock timesplit(timeblock& input_block, const moment splitpoint) { // Splits a timeblock at splitpoint. // It changes the input_block to start at splitpoint, and returns a new timeblock // that lasts from where the input_block used to start, to splitpoint. - // FIXME: timesplit will reset valuefactor of the first half + // BASICALLY: input_block becomes first half, output is second half. if(splitpoint <= input_block.start || splitpoint >= input_block.end) { std::cerr << "ERROR: Splitpoint outside of timeblock!\n"; std::cerr << "Timeblock: " << timeprint(input_block) << std::endl; @@ -361,11 +364,30 @@ std::string timeprint(moment input_moment) { + padint(input_moment.day, 2); return output; } +std::string timeprint(moment input_moment, bool clockonly) { + using namespace std; + string output; + if(clockonly) { + output = + padint(input_moment.hours, 2) + ":" + + padint(input_moment.minutes, 2); + } else { + output = + to_string(input_moment.year) + "-" + + padint(input_moment.month, 2) + "-" + + padint(input_moment.day, 2); + } + return output; +} std::string timeprint(timeblock input_timeblock) { std::string output{timeprint(input_timeblock.start) + " --> " + timeprint(input_timeblock.end)}; return output; } +std::string timeprint(timeblock input_timeblock, bool clockonly) { + std::string output{timeprint(input_timeblock.start, clockonly) + " --> " + timeprint(input_timeblock.end, clockonly)}; + return output; +} int days_in(int month, int year) { @@ -95,7 +95,9 @@ void wind(moment& input_moment, const delta& time_delta); int days_in(const int month, const int year); std::string timeprint(const moment input_moment); +std::string timeprint(const moment input_moment, bool clockonly); std::string timeprint(const timeblock input_timeblock); +std::string timeprint(const timeblock input_timeblock, bool clockonly); long sortable_time(const timeblock input_timeblock); moment timeinput(moment input_moment); |