namespace RecruitmentDAL.DTO.Reports { // HR/executive recruitment analytics rollup row (Phase 5 of the Recruitment build-out plan — // see /Users/venkatv/.claude/plans/can-you-check-the-precious-sunbeam.md). Org-wide, no // recruiter grouping — one row per (RequisitionType, RequisitionStatus) combination, with the // three org-wide aggregate figures (PlannedHeadcount/ActualHires/AvgCostPerHire) repeated // identically on every row so any single row (or the whole set, for the UI summary strip) can // render the headline numbers without a second call. public class HrRecruitmentAnalyticsDTO { // 1=Replacement 2=Additional 3=AdHoc public byte RequisitionType { get; set; } // 1=Draft 2=PendingApproval 3=Approved 4=Rejected 5=Published 6=OnHold 7=Closed public byte RequisitionStatus { get; set; } public int RequisitionCount { get; set; } // Org-wide sum of NoOfOpenings across Approved(3)+Published(5) requisitions — repeated on // every row. public int PlannedHeadcount { get; set; } // Org-wide count of Applications whose current stage is Terminal // (MSELECTIONPROCESSSTAGE.STAGECATEGORY=7, ISTERMINAL=1) with a Passed(2) stage-history // outcome — the same "genuinely Hired" signal CandidateConversionBLL uses (see that // class's doc comment for why Outcome=Passed, not just Terminal, is required) — filtered // to the report's date range (TAPPLICATIONSTAGEHISTORY.STAGEENTEREDON) when supplied. // Repeated on every row. public int ActualHires { get; set; } // Average MJOBOFFER.CTC across offers with OfferResponseStatus=1 (Accepted) joined to a // hired Application (same ActualHires set above). NOTE — this is a rough v1 proxy, not a // true fully-loaded cost-per-hire: it is raw offered CTC only, with no recruiter/agency // fees, sourcing/advertising spend, onboarding cost, or internal recruiter time folded in. // Treat it as directional ("did offered comp trend up/down"), not as a finance-grade // cost-per-hire figure. Null when no accepted-offer/hired-application pair exists in the // filtered set (AVG over zero rows). Repeated on every row. public decimal? AvgCostPerHire { get; set; } } }