Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- export const calculateUserTimekeeping = (timekeeping_data: any, project: Project, user: ProjectUser) => {
- const time_traveled = timekeeping_data.inbound_travel_time + timekeeping_data.outbound_travel_time;
- const fatigue_total = (parseInt(project.fatigue_hours, 0) * 60) + parseInt(project.fatigue_minutes, 0);
- let time_on_site;
- if (timekeeping_data.time_out === null) {
- const now = moment(new Date());
- const duration = moment.duration(now.diff(timekeeping_data.time_in));
- time_on_site = duration.asMinutes();
- } else {
- const now = moment(timekeeping_data.time_out);
- const duration = moment.duration(now.diff(timekeeping_data.time_in));
- time_on_site = duration.asMinutes();
- }
- let exceedance_hours;
- if (project.fatigue_type.toLocaleLowerCase() === 'door to door') {
- exceedance_hours = (time_on_site + time_traveled) - fatigue_total;
- } else {
- exceedance_hours = (time_on_site) - fatigue_total;
- }
- const door_to_door = time_on_site + time_traveled;
- let color;
- const color_calc = project.fatigue_type.toLocaleLowerCase() === 'door to door' ?
- (time_traveled + time_on_site) / fatigue_total * 100 :
- time_on_site / fatigue_total * 100;
- if (color_calc >= 100) {
- color = 'red';
- } else if (color_calc >= 76) {
- color = 'orange';
- } else {
- color = 'green';
- }
- const time_travelled = parseInt(timekeeping_data.inbound_travel_time, 0) + parseInt(timekeeping_data.outbound_travel_time, 0);
- let time_remaining;
- let time_worked;
- if (project.fatigue_type.toLocaleLowerCase() !== 'door to door') {
- time_remaining = fatigue_total - time_on_site;
- time_worked = time_on_site;
- } else {
- time_remaining = fatigue_total -
- (parseInt(minutesToHoursAndMinutes(timekeeping_data.time_in, 'mm'), 0) - time_traveled) -
- (parseInt(minutesToHoursAndMinutes(timekeeping_data.time_out, 'mm'), 0));
- time_worked = time_on_site + time_traveled;
- }
- const pct_time_left = (fatigue_total - time_on_site - time_traveled / fatigue_total) * 100;
- const pct_time_worked = (time_worked / fatigue_total) * 100;
- const user_timekeeping: Timekeeping = {
- user_id: user.id,
- time_in: timekeeping_data.time_in,
- time_out: timekeeping_data.time_out,
- inbound_travel_time: timekeeping_data.inbound_travel_time,
- outbound_travel_time: timekeeping_data.outbound_travel_time,
- time_on_site: time_on_site,
- time_travelled: time_travelled.toString(),
- fatigue_total: fatigue_total.toString(),
- fatigue_type: project.fatigue_type,
- time_remaining: time_remaining,
- time_worked: time_worked,
- pct_time_left: pct_time_left,
- pct_time_worked: pct_time_worked,
- color: color
- };
- return user_timekeeping;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement