mirror of
https://github.com/JuanCanham/HackMyResume.git
synced 2025-04-19 06:10:28 +01:00
46 lines
1.6 KiB
JavaScript
46 lines
1.6 KiB
JavaScript
FluentDate = require '../core/fluent-date'
|
|
_ = require 'underscore'
|
|
lo = require 'lodash'
|
|
|
|
module.exports =
|
|
|
|
###*
|
|
Compute the total duration of the work history.
|
|
@returns The total duration of the sheet's work history, that is, the number
|
|
of years between the start date of the earliest job on the resume and the
|
|
*latest end date of all jobs in the work history*. This last condition is for
|
|
sheets that have overlapping jobs.
|
|
###
|
|
run: (rez, collKey, startKey, endKey, unit) ->
|
|
unit = unit || 'years'
|
|
hist = lo.get rez, collKey
|
|
return 0 if !hist or !hist.length
|
|
|
|
# BEGIN CODE DUPLICATION --> src/inspectors/gap-inspector.coffee (TODO)
|
|
|
|
# Convert the candidate's employment history to an array of dates,
|
|
# where each element in the array is a start date or an end date of a
|
|
# job -- it doesn't matter which.
|
|
new_e = hist.map ( job ) ->
|
|
obj = _.pick( job, [startKey, endKey] )
|
|
# Synthesize an end date if this is a "current" gig
|
|
obj[endKey] = 'current' if !_.has obj, endKey
|
|
if obj && (obj[startKey] || obj[endKey])
|
|
obj = _.pairs obj
|
|
obj[0][1] = FluentDate.fmt( obj[0][1] )
|
|
if obj.length > 1
|
|
obj[1][1] = FluentDate.fmt( obj[1][1] )
|
|
obj
|
|
|
|
# Flatten the array, remove empties, and sort
|
|
new_e = _.filter _.flatten( new_e, true ), (v) ->
|
|
return v && v.length && v[0] && v[0].length
|
|
return 0 if !new_e or !new_e.length
|
|
new_e = _.sortBy new_e, ( elem ) -> return elem[1].unix()
|
|
|
|
# END CODE DUPLICATION
|
|
|
|
firstDate = _.first( new_e )[1];
|
|
lastDate = _.last( new_e )[1];
|
|
lastDate.diff firstDate, unit
|