/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnExport_Click(object sender, EventArgs e) { string filename = string.Empty; FileDialog saver = new SaveFileDialog(); saver.Filter = "(*.xls)|*.xls"; if (saver.ShowDialog() == DialogResult.OK) { filename = saver.FileName; Utility.getResource(filename, "Template.xls"); } else { return; } List <HiringTracking> export = GetTarget(); dynamic excelObj = Interaction.CreateObject("Excel.Application"); excelObj.Visible = true; dynamic workbook; workbook = excelObj.Workbooks.Open(filename); HiringTracking.ExportData(workbook, export); workbook.Close(); excelObj.Quit(); excelObj = null; MessageBox.Show("Export Complete!"); }
/// <summary> /// 根据职位获得Hiring /// </summary> /// <param name="Position"></param> /// <returns></returns> public static List<HiringTracking> GetHiringTrackByFinalStatus(HiringTracking.FinalStatusEnum status) { var pos = from p in HiringTrackingDataSet where p.FinalStatus == status && !p.IsDel select p; return pos.ToList(); }
/// <summary> /// Get Statistic Info /// </summary> /// <param name="candideate"></param> /// <param name="t"></param> private static void Statistic(List <HiringTracking> candideate, PositionStatistic t) { t.Pipeline = candideate.Count(); var firstInterview = from p in candideate where p.FirstInterviewDate != DateTime.MinValue && !p.IsDel select p; var secondInterview = from p in candideate where p.SecondInterviewDate != DateTime.MinValue && !p.IsDel select p; var thirdInterview = from p in candideate where p.ThirdInterviewDate != DateTime.MinValue && !p.IsDel select p; var firstInterviewPass = from p in candideate where HiringTracking.InterviewPassCheck(p.FirstInterviewResult) && !p.IsDel select p; var secondInterviewPass = from p in candideate where HiringTracking.InterviewPassCheck(p.SecondInterviewResult) && !p.IsDel select p; var thirdInterviewPass = from p in candideate where HiringTracking.InterviewPassCheck(p.ThirdInterviewResult) && !p.IsDel select p; if (t.Pipeline != 0) { t.CVpass = t.Pipeline / firstInterview.Count(); } t.FirstInterviewCount = firstInterview.Count(); t.SecondInterviewCount = secondInterview.Count(); t.ThirdInterviewCount = thirdInterview.Count(); t.FirstPass = firstInterviewPass.Count(); t.SecondPass = secondInterviewPass.Count(); t.ThirdPass = thirdInterviewPass.Count(); var Onboard = from p in candideate where p.FinalStatus == HiringTracking.FinalStatusEnum.Onboard && !p.IsDel select p; t.Onboard = Onboard.Count(); var RejectOffer = from p in candideate where p.FinalStatus == HiringTracking.FinalStatusEnum.RejectOffer && !p.IsDel select p; t.RejectOffer = RejectOffer.Count(); var OpenOffer = from p in candideate where p.FinalStatus == HiringTracking.FinalStatusEnum.OpenOffer && !p.IsDel select p; t.OpenOffer = OpenOffer.Count(); var ANOB = from p in candideate where p.FinalStatus == HiringTracking.FinalStatusEnum.ANOB && !p.IsDel select p; t.ANOB = ANOB.Count(); }
/// <summary> /// Import Data From GOM /// </summary> /// <param name="workbook"></param> private void ImportData(dynamic workbook) { List<HiringTracking> rawData = new List<HiringTracking>(); dynamic ActiveSheet = workbook.Sheets(1); int rowCount = 4; while (!string.IsNullOrEmpty(ActiveSheet.Cells(rowCount, ColPos.No).Text)) { HiringTracking Rec = new HiringTracking(); Rec.No = ActiveSheet.Cells(rowCount, ColPos.No).Text; Rec.Name = ActiveSheet.Cells(rowCount, ColPos.Name).Text; Rec.Position = ActiveSheet.Cells(rowCount, ColPos.Position).Text; Rec.Position = Rec.Position.Trim(); Rec.Channel = Utility.GetEnum<HiringTracking.ChannelEnum>(ActiveSheet.Cells(rowCount, ColPos.Channel).Text, HiringTracking.ChannelEnum.Agency); Rec.Contact = ActiveSheet.Cells(rowCount, ColPos.PhoneNumber).Text; Rec.University = ActiveSheet.Cells(rowCount, ColPos.University).Text; if (!String.IsNullOrEmpty(ActiveSheet.Cells(rowCount, ColPos.Language_EN).Text)) Rec.Language = Rec.Language | HiringTracking.LanguageEnum.EN; if (!String.IsNullOrEmpty(ActiveSheet.Cells(rowCount, ColPos.Language_CN).Text)) Rec.Language = Rec.Language | HiringTracking.LanguageEnum.CN; if (!String.IsNullOrEmpty(ActiveSheet.Cells(rowCount, ColPos.Language_JP).Text)) Rec.Language = Rec.Language | HiringTracking.LanguageEnum.JP; if (!String.IsNullOrEmpty(ActiveSheet.Cells(rowCount, ColPos.Language_KR).Text)) Rec.Language = Rec.Language | HiringTracking.LanguageEnum.KR; if (!String.IsNullOrEmpty(ActiveSheet.Cells(rowCount, ColPos.Language_Other).Text)) Rec.Language = Rec.Language | HiringTracking.LanguageEnum.Other; Rec.ITBackground = !String.IsNullOrEmpty(ActiveSheet.Cells(rowCount, ColPos.ITBakcground).Text); Rec.MarketBackground = !String.IsNullOrEmpty(ActiveSheet.Cells(rowCount, ColPos.MarketBackground).Text); Rec.ScreenDate = Utility.GetDate(ActiveSheet.Cells(rowCount, ColPos.ScreenData)); Rec.FirstInterviewDate = Utility.GetDate(ActiveSheet.Cells(rowCount, ColPos.firstInterviewDate)); Rec.FirstInterviewer = ActiveSheet.Cells(rowCount, ColPos.firstInterviewer).Text; Rec.FirstInterviewResult = Utility.GetEnum<HiringTracking.InterviewResultEnum>(ActiveSheet.Cells(rowCount, ColPos.firstInterviewresult).Text, HiringTracking.InterviewResultEnum.NotAvaliable); Rec.SecondInterviewDate = Utility.GetDate(ActiveSheet.Cells(rowCount, ColPos.secondInterviewDate)); Rec.SecondInterviewer = ActiveSheet.Cells(rowCount, ColPos.secondInterviewer).Text; Rec.SecondInterviewResult = Utility.GetEnum<HiringTracking.InterviewResultEnum>(ActiveSheet.Cells(rowCount,ColPos.secondnterviewresult).Text, HiringTracking.InterviewResultEnum.NotAvaliable); Rec.ThirdInterviewDate = Utility.GetDate(ActiveSheet.Cells(rowCount, ColPos.thirdInterviewDate)); Rec.ThirdInterviewer = ActiveSheet.Cells(rowCount, ColPos.thirdInterviewer).Text; Rec.ThirdInterviewResult = Utility.GetEnum<HiringTracking.InterviewResultEnum>(ActiveSheet.Cells(rowCount, ColPos.thirdnterviewresult).Text, HiringTracking.InterviewResultEnum.NotAvaliable); Rec.OfferOfferDate = Utility.GetDate(ActiveSheet.Cells(rowCount,ColPos.offerofferdate)); Rec.OnboardDate = Utility.GetDate(ActiveSheet.Cells(rowCount, ColPos.onboarddate)); Rec.RejectOfferReason = ActiveSheet.Cells(rowCount, ColPos.rejectofferreason).Text; Rec.FinalStatus = Utility.GetEnum<HiringTracking.FinalStatusEnum>(ActiveSheet.Cells(rowCount, ColPos.finalstatus).Text, HiringTracking.FinalStatusEnum.UnderScreen); rawData.Add(Rec); rowCount++; } XmlSerializer xml = new XmlSerializer(typeof(List<HiringTracking>)); xml.Serialize(new StreamWriter(SystemManager.HiringTrackingXmlFilename), rawData); DataCenter.HiringTrackingDataSet = rawData; DataCenter.ReCompute(); }
/// <summary> /// Import Data From GOM /// </summary> /// <param name="workbook"></param> private void ImportData(dynamic workbook) { List<HiringTracking> rawData = new List<HiringTracking>(); dynamic ActiveSheet = workbook.Sheets(1); int rowCount = 4; while (!string.IsNullOrEmpty(ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.No).Text)) { HiringTracking Rec = new HiringTracking(); Rec.No = ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.No).Text; Rec.Name = ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.Name).Text; Rec.Position = ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.Position).Text; Rec.Position = Rec.Position.Trim(); Rec.Channel = Utility.GetEnum<HiringTracking.ChannelEnum>(ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.Channel).Text, HiringTracking.ChannelEnum.Agency); Rec.Contact = ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.PhoneNumber).Text; Rec.University = ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.University).Text; if (!string.IsNullOrEmpty(ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.Language_EN).Text)) Rec.Language = Rec.Language | HiringTracking.LanguageEnum.EN; if (!string.IsNullOrEmpty(ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.Language_CN).Text)) Rec.Language = Rec.Language | HiringTracking.LanguageEnum.CN; if (!string.IsNullOrEmpty(ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.Language_JP).Text)) Rec.Language = Rec.Language | HiringTracking.LanguageEnum.JP; if (!string.IsNullOrEmpty(ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.Language_KR).Text)) Rec.Language = Rec.Language | HiringTracking.LanguageEnum.KR; if (!string.IsNullOrEmpty(ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.Language_Other).Text)) Rec.Language = Rec.Language | HiringTracking.LanguageEnum.Other; Rec.ITBackground = !string.IsNullOrEmpty(ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.ITBakcground).Text); Rec.MarketBackground = !string.IsNullOrEmpty(ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.MarketBackground).Text); Rec.ScreenDate = Utility.GetDate(ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.ScreenData)); Rec.FirstInterviewDate = Utility.GetDate(ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.firstInterviewDate)); Rec.FirstInterviewer = ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.firstInterviewer).Text; Rec.FirstInterviewResult = Utility.GetEnum<HiringTracking.InterviewResultEnum>(ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.firstInterviewresult).Text, HiringTracking.InterviewResultEnum.NotAvaliable); Rec.SecondInterviewDate = Utility.GetDate(ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.secondInterviewDate)); Rec.SecondInterviewer = ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.secondInterviewer).Text; Rec.SecondInterviewResult = Utility.GetEnum<HiringTracking.InterviewResultEnum>(ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.secondInterviewresult).Text, HiringTracking.InterviewResultEnum.NotAvaliable); Rec.ThirdInterviewDate = Utility.GetDate(ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.thirdInterviewDate)); Rec.ThirdInterviewer = ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.thirdInterviewer).Text; Rec.ThirdInterviewResult = Utility.GetEnum<HiringTracking.InterviewResultEnum>(ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.thirdInterviewresult).Text, HiringTracking.InterviewResultEnum.NotAvaliable); Rec.OfferOfferDate = Utility.GetDate(ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.offerofferdate)); Rec.OnboardDate = Utility.GetDate(ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.onboarddate)); Rec.RejectOfferReason = ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.rejectofferreason).Text; Rec.FinalStatus = Utility.GetEnum<HiringTracking.FinalStatusEnum>(ActiveSheet.Cells(rowCount, ViewStyleSheet.ColPos.finalstatus).Text, HiringTracking.FinalStatusEnum.UnderScreen); rawData.Add(Rec); rowCount++; } XmlSerializer xml = new XmlSerializer(typeof(List<HiringTracking>)); xml.Serialize(new StreamWriter(SystemManager.HiringTrackingXmlFilename), rawData); DataCenter.HiringTrackingDataSet = rawData; DataCenter.ReCalulatePositionStatisti((x)=> { return true; }); }
public frmCandidateEditor(string No) { InitializeComponent(); if (!string.IsNullOrEmpty(No)) { IsCreate = false; hiring = DataCenter.HiringTrackingDataSet.Find((x) => { return(x.No == No); }); } else { IsCreate = true; } }
public frmCandidateEditor(string No) { InitializeComponent(); if (!string.IsNullOrEmpty(No)) { IsCreate = false; hiring = DataCenter.HiringTrackingDataSet.Find((x) => { return x.No == No; }); } else { IsCreate = true; } }
/// <summary> /// 根据职位获得Hiring /// </summary> /// <param name="Position"></param> /// <returns></returns> public static List<HiringTracking> GetHiringTrackByPosition(string Position, HiringTracking.FinalStatusEnum FinalStatus) { var pos = from p in HiringTrackingDataSet where p.Position == Position && p.FinalStatus == FinalStatus && !p.IsDel select p; return pos.ToList(); }
/// <summary> /// 数据绑定 /// </summary> /// <param name="item"></param> /// <param name="record"></param> private static void BindHiringTrackingListViewItem(ListViewItem item, HiringTracking record) { if (CurrentHiringTrackingFields.ToList().Contains("No")) { item.Text = record.No; } if (CurrentHiringTrackingFields.ToList().Contains("Position")) { item.SubItems.Add(record.Position); } if (CurrentHiringTrackingFields.ToList().Contains("Name")) { item.SubItems.Add(record.Name); } if (CurrentHiringTrackingFields.ToList().Contains("Contact")) { item.SubItems.Add(record.Contact); } if (CurrentHiringTrackingFields.ToList().Contains("Language")) { item.SubItems.Add(record.Language.ToString()); } if (CurrentHiringTrackingFields.ToList().Contains("University")) { item.SubItems.Add(record.University.ToString()); } if (CurrentHiringTrackingFields.ToList().Contains("Major")) { item.SubItems.Add(record.Major.ToString()); } if (CurrentHiringTrackingFields.ToList().Contains("Market Background")) { item.SubItems.Add(record.MarketBackground.ToString()); } if (CurrentHiringTrackingFields.ToList().Contains("IT Background")) { item.SubItems.Add(record.ITBackground.ToString()); } if (CurrentHiringTrackingFields.ToList().Contains("Comments")) { item.SubItems.Add(record.Comments.ToString()); } if (CurrentHiringTrackingFields.ToList().Contains("Screen Date")) { item.SubItems.Add(record.ScreenDate.ToString(SystemManager.DataTimeFormat)); } if (CurrentHiringTrackingFields.ToList().Contains("1st Interview Date")) { item.SubItems.Add(record.FirstInterviewDate.ToString(SystemManager.DataTimeFormat)); } if (CurrentHiringTrackingFields.ToList().Contains("1st Interviewer")) { item.SubItems.Add(record.FirstInterviewer); } if (CurrentHiringTrackingFields.ToList().Contains("1st interview Result")) { item.SubItems.Add(record.FirstInterviewResult.ToString()); } if (CurrentHiringTrackingFields.ToList().Contains("2nd Interview Date")) { item.SubItems.Add(record.SecondInterviewDate.ToString(SystemManager.DataTimeFormat)); } if (CurrentHiringTrackingFields.ToList().Contains("2nd Interviewer")) { item.SubItems.Add(record.SecondInterviewer.ToString()); } if (CurrentHiringTrackingFields.ToList().Contains("2nd interview result")) { item.SubItems.Add(record.SecondInterviewResult.ToString()); } if (CurrentHiringTrackingFields.ToList().Contains("3rd Interview Date")) { item.SubItems.Add(record.ThirdInterviewDate.ToString(SystemManager.DataTimeFormat)); } if (CurrentHiringTrackingFields.ToList().Contains("3rd Interviewer")) { item.SubItems.Add(record.ThirdInterviewer.ToString()); } if (CurrentHiringTrackingFields.ToList().Contains("3rd Interview result")) { item.SubItems.Add(record.ThirdInterviewResult.ToString()); } if (CurrentHiringTrackingFields.ToList().Contains("Final Status")) { item.SubItems.Add(record.FinalStatus.ToString()); } if (CurrentHiringTrackingFields.ToList().Contains("Channel")) { item.SubItems.Add(record.Channel.ToString()); } if (CurrentHiringTrackingFields.ToList().Contains("Resume")) { item.SubItems.Add(record.Resume.ToString()); } if (CurrentHiringTrackingFields.ToList().Contains("Offer offer date")) { item.SubItems.Add(record.OfferOfferDate.ToString(SystemManager.DataTimeFormat)); } if (CurrentHiringTrackingFields.ToList().Contains("Onboard date")) { item.SubItems.Add(record.OnboardDate.ToString(SystemManager.DataTimeFormat)); } if (CurrentHiringTrackingFields.ToList().Contains("Reject offer reason")) { item.SubItems.Add(record.RejectOfferReason.ToString()); } }
/// <summary> /// Phase图 /// </summary> private void InitPhaseChart() { if (DataCenter.HiringTrackingDataSet.Count == 0) { return; } var QuerySeries = new Series("Pileline") { ChartType = SeriesChartType.Line, XValueType = ChartValueType.String, YValueType = ChartValueType.Int32 }; PhaseChart.Series.Clear(); PhaseChart.Series.Add(QuerySeries); List <HiringTracking> Target; if (Position == SystemManager.strTotal) { Target = DataCenter.GetHiringTrackingDataSet(); } else { Target = DataCenter.GetHiringTrackByPosition(Position); } var queryPoint = new DataPoint(); queryPoint.SetValueXY("Pipeline", Target.Count()); PhaseChart.Series[0].Points.Add(queryPoint); queryPoint = new DataPoint(); queryPoint.SetValueXY("ScreenPass", Target.Count((x) => { return(!string.IsNullOrEmpty(x.FirstInterviewer)); })); PhaseChart.Series[0].Points.Add(queryPoint); queryPoint = new DataPoint(); queryPoint.SetValueXY("1stPass", Target.Count((x) => { return(HiringTracking.InterviewPassCheck(x.FirstInterviewResult)); })); PhaseChart.Series[0].Points.Add(queryPoint); queryPoint = new DataPoint(); queryPoint.SetValueXY("2ndPass", Target.Count((x) => { return(HiringTracking.InterviewPassCheck(x.SecondInterviewResult)); })); PhaseChart.Series[0].Points.Add(queryPoint); queryPoint = new DataPoint(); queryPoint.SetValueXY("3rdPass", Target.Count((x) => { return(HiringTracking.InterviewPassCheck(x.ThirdInterviewResult)); })); PhaseChart.Series[0].Points.Add(queryPoint); queryPoint = new DataPoint(); queryPoint.SetValueXY("OB", Target.Count((x) => { return(x.FinalStatus == HiringTracking.FinalStatusEnum.Onboard); })); PhaseChart.Series[0].Points.Add(queryPoint); }
/// <summary> /// 数据绑定 /// </summary> /// <param name="item"></param> /// <param name="record"></param> private static void BindHiringTrackingListViewItem(ListViewItem item, HiringTracking record) { if (CurrentHiringTrackingFields.ToList().Contains("No")) item.Text = record.No; if (CurrentHiringTrackingFields.ToList().Contains("Position")) item.SubItems.Add(record.Position); if (CurrentHiringTrackingFields.ToList().Contains("Name")) item.SubItems.Add(record.Name); if (CurrentHiringTrackingFields.ToList().Contains("Contact")) item.SubItems.Add(record.Contact); if (CurrentHiringTrackingFields.ToList().Contains("Language")) item.SubItems.Add(record.Language.ToString()); if (CurrentHiringTrackingFields.ToList().Contains("University")) item.SubItems.Add(record.University.ToString()); if (CurrentHiringTrackingFields.ToList().Contains("Major")) item.SubItems.Add(record.Major.ToString()); if (CurrentHiringTrackingFields.ToList().Contains("Market Background")) item.SubItems.Add(record.MarketBackground.ToString()); if (CurrentHiringTrackingFields.ToList().Contains("IT Background")) item.SubItems.Add(record.ITBackground.ToString()); if (CurrentHiringTrackingFields.ToList().Contains("Comments")) item.SubItems.Add(record.Comments.ToString()); if (CurrentHiringTrackingFields.ToList().Contains("Screen Date")) item.SubItems.Add(record.ScreenDate.ToString(SystemManager.DataTimeFormat)); if (CurrentHiringTrackingFields.ToList().Contains("1st Interview Date")) item.SubItems.Add(record.FirstInterviewDate.ToString(SystemManager.DataTimeFormat)); if (CurrentHiringTrackingFields.ToList().Contains("1st Interviewer")) item.SubItems.Add(record.FirstInterviewer); if (CurrentHiringTrackingFields.ToList().Contains("1st interview Result")) item.SubItems.Add(record.FirstInterviewResult.ToString()); if (CurrentHiringTrackingFields.ToList().Contains("2nd Interview Date")) item.SubItems.Add(record.SecondInterviewDate.ToString(SystemManager.DataTimeFormat)); if (CurrentHiringTrackingFields.ToList().Contains("2nd Interviewer")) item.SubItems.Add(record.SecondInterviewer.ToString()); if (CurrentHiringTrackingFields.ToList().Contains("2nd interview result")) item.SubItems.Add(record.SecondInterviewResult.ToString()); if (CurrentHiringTrackingFields.ToList().Contains("3rd Interview Date")) item.SubItems.Add(record.ThirdInterviewDate.ToString(SystemManager.DataTimeFormat)); if (CurrentHiringTrackingFields.ToList().Contains("3rd Interviewer")) item.SubItems.Add(record.ThirdInterviewer.ToString()); if (CurrentHiringTrackingFields.ToList().Contains("3rd Interview result")) item.SubItems.Add(record.ThirdInterviewResult.ToString()); if (CurrentHiringTrackingFields.ToList().Contains("Final Status")) item.SubItems.Add(record.FinalStatus.ToString()); if (CurrentHiringTrackingFields.ToList().Contains("Channel")) item.SubItems.Add(record.Channel.ToString()); if (CurrentHiringTrackingFields.ToList().Contains("Resume")) item.SubItems.Add(record.Resume.ToString()); if (CurrentHiringTrackingFields.ToList().Contains("Offer offer date")) item.SubItems.Add(record.OfferOfferDate.ToString(SystemManager.DataTimeFormat)); if (CurrentHiringTrackingFields.ToList().Contains("Onboard date")) item.SubItems.Add(record.OnboardDate.ToString(SystemManager.DataTimeFormat)); if (CurrentHiringTrackingFields.ToList().Contains("Reject offer reason")) item.SubItems.Add(record.RejectOfferReason.ToString()); }