void threadShow_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { object[] results = e.Result as object[]; List <PersonalModel> personalList_D1 = results[0] as List <PersonalModel>; List <SourceModel> sourceList = results[1] as List <SourceModel>; List <WorkerLeaveModel> workerLeaveList = results[2] as List <WorkerLeaveModel>; //List<LinePerformanceDetailModel> performanceDetailList = results[6] as List<LinePerformanceDetailModel>; List <HolidayModel> holidayList = results[4] as List <HolidayModel>; List <WorkerFilterModel> workerFilterList = WorkerFilterModel.Create(section.SectionId); DataTable dt = new LineIncentiveSummaryDataSet().Tables["LineIncentiveSummaryTable"]; int i = 1; foreach (PersonalModel personal in personalList_D1) { List <LinePerformanceDetailModel> performanceDetailList_D1 = performanceDetailList.Where(p => p.WorkerId == personal.WorkerId).ToList(); List <String> icentiveGradeList = performanceDetailList_D1.Select(p => p.IncentiveGrade).Distinct().OrderBy(g => g).ToList(); DataRow dr = dt.NewRow(); dr["NumberOf"] = i; dr["WorkerId"] = personal.WorkerId; dr["Name"] = personal.Name; string incentiveGrade = ""; for (int l = 0; l <= icentiveGradeList.Count - 1; l++) { incentiveGrade += String.Format("{0}; ", icentiveGradeList[l]); } //dr["Position"] = personal.Position; dr["Position"] = incentiveGrade; int numberOfDayAbsent = CalculateNumberOfDayAbsent(year, month, sourceList.Where(s => s.CardId == personal.CardId).ToList(), workerLeaveList.Where(w => w.WorkerId == personal.WorkerId).ToList(), holidayList); dr["NumberOfDayAbsent"] = numberOfDayAbsent; double minusLevel = 0; MinusIncentiveModel minusIncentiveLast = minusIncentiveList.OrderBy(m => m.NumberOfDayAbsent).Last(); if (numberOfDayAbsent >= minusIncentiveLast.NumberOfDayAbsent) { minusLevel = minusIncentiveLast.MinusLevel; } else { MinusIncentiveModel minusIncentive = minusIncentiveList.Where(m => m.NumberOfDayAbsent == numberOfDayAbsent).FirstOrDefault(); if (minusIncentive != null) { minusLevel = minusIncentive.MinusLevel; } } //double workerRatio = 0; //DateTime firstDate = new DateTime(year, month, 1); //WorkerFilterModel workerFilter = workerFilterList.Where(w => CalculateHelper.CalculateMonth(personal.HiredDate, firstDate) >= w.MinMonth && CalculateHelper.CalculateMonth(personal.HiredDate, firstDate) < w.MaxMonth).FirstOrDefault(); //if (workerFilter != null) //{ // workerRatio = workerFilter.Ratio; //} double incentive = performanceDetailList_D1.Select(p => (p.Incentive + p.SpecsIncentive + p.ExcessIncentive)).Sum(); dr["Incentive"] = incentive - (minusLevel * incentive); dt.Rows.Add(dr); i++; } dgMain.ItemsSource = null; dgMain.ItemsSource = dt.AsDataView(); List <String> incentiveGradeList = performanceDetailList.Select(p => p.IncentiveGrade).Distinct().OrderBy(g => g).ToList(); DataTable dtIncentiveGradeSummary = new IncentiveGradeSummaryDataSet().Tables["IncentiveGradeSummaryTable"]; foreach (string incentiveGrade in incentiveGradeList) { DataRow dr = dtIncentiveGradeSummary.NewRow(); dr["IncentiveGrade"] = incentiveGrade; dr["Count"] = performanceDetailList.Where(p => p.IncentiveGrade == incentiveGrade).Select(p => p.WorkerId).Distinct().Count(); dtIncentiveGradeSummary.Rows.Add(dr); } dgIncentiveGradeSummary.ItemsSource = null; dgIncentiveGradeSummary.ItemsSource = dtIncentiveGradeSummary.AsDataView(); btnShow.IsEnabled = true; btnPrint.IsEnabled = true; this.Cursor = null; }
public ActionResult Index(WorkerFilterModel filter) { var workerIndexViewModel = _workerIndexBuilder.CreateFrom(filter); return(View(workerIndexViewModel)); }