public static void CalculateSummary(DateTime dateStart, String criteria, int criteriaValue) { bool ProcssedDS = false; DateTime makeMe = new DateTime(dateStart.Year, dateStart.Month, dateStart.Day, 0, 0, 0); SummaryEntity summary = new SummaryEntity(); TAS2013Entities context = new TAS2013Entities(); ViewMultipleInOut vmio = new ViewMultipleInOut(); summary.SummaryDateCriteria = dateStart.ToString("yyMMdd") + summary.criterianame + criteriaValue; String day = DateTime.Today.DayOfWeek.ToString(); day = day.Substring(0, 3); day = day + "Min"; List<ViewMultipleInOut> attList = new List<ViewMultipleInOut>(); switch (criteria) { case "C": attList = context.ViewMultipleInOuts.Where(aa => aa.AttDate == dateStart).ToList(); //Change the below line for NHA please summary.criterianame = context.Options.FirstOrDefault().CompanyName; summary.SummaryDateCriteria = summary.SummaryDateCriteria + criteria + criteriaValue; break; case "R": attList = context.ViewMultipleInOuts.Where(aa => aa.AttDate == dateStart).ToList(); attList = attList.Where(aa => aa.RegionID == criteriaValue).ToList(); if (attList.Count > 0) summary.criterianame = attList[0].RegionName; break; case "D": attList = context.ViewMultipleInOuts.Where(aa => aa.AttDate == dateStart && aa.DeptID == criteriaValue).ToList(); if (attList.Count > 0) summary.criterianame = attList[0].DeptName; break; case "E": attList = context.ViewMultipleInOuts.Where(aa => aa.AttDate == dateStart && aa.SecID == criteriaValue).ToList(); if (attList.Count > 0) summary.criterianame = attList[0].SectionName; break; case "L": attList = context.ViewMultipleInOuts.Where(aa => aa.AttDate == dateStart && aa.LocID == criteriaValue).ToList(); if (attList.Count > 0) summary.criterianame = attList[0].LocName; break; case "S": attList = context.ViewMultipleInOuts.Where(aa => aa.AttDate == dateStart && aa.ShiftID == criteriaValue).ToList(); if (attList.Count > 0) summary.criterianame = attList[0].ShiftName; break; default: attList = context.ViewMultipleInOuts.Where(aa => aa.AttDate >= dateStart).ToList(); if (attList.Count > 0) summary.criterianame = context.Options.FirstOrDefault().CompanyName; break; } if (attList.Count > 0) { DailySummary dailysumm = new DailySummary(); if (context.DailySummaries.Where(aa => aa.SummaryDateCriteria == summary.SummaryDateCriteria).Count() > 0) { dailysumm = context.DailySummaries.First(aa => aa.SummaryDateCriteria == summary.SummaryDateCriteria); ProcssedDS = true; } dailysumm.SummaryDateCriteria = summary.SummaryDateCriteria; dailysumm.Criteria = criteria; dailysumm.CriteriaValue = (short)criteriaValue; dailysumm.CriteriaName = summary.criterianame; dailysumm.TotalEmps = (short)attList.Count; dailysumm.PresentEmps = (short)attList.Where(aa => aa.StatusP == true).Count<ViewMultipleInOut>(); dailysumm.AbsentEmps = (short)(dailysumm.TotalEmps - dailysumm.PresentEmps); dailysumm.Date = makeMe; dailysumm.EIEmps = (short)attList.Where(aa => aa.StatusEI == true).Count<ViewMultipleInOut>(); dailysumm.EOEmps = (short)attList.Where(aa => aa.StatusEO == true).Count<ViewMultipleInOut>(); dailysumm.LIEmps = (short)attList.Where(aa => aa.StatusLI == true).Count<ViewMultipleInOut>(); dailysumm.LOEmps = (short)attList.Where(aa => aa.StatusLO == true).Count<ViewMultipleInOut>(); dailysumm.LvEmps = 0; dailysumm.HalfLvEmps = 0; dailysumm.ShortLvEmps = 0; dailysumm.ExpectedWorkMins = 0; dailysumm.ActualWorkMins = 0; dailysumm.LossWorkMins = 0; dailysumm.OTMins = 0; dailysumm.LIMins = 0; dailysumm.LOMins = 0; dailysumm.EIMins = 0; dailysumm.EOMins = 0; dailysumm.AOTMins = 0; dailysumm.OTEmps = 0; dailysumm.OTMins = 0; long averageTimeIn = 0; long averageTimeOut = 0; //LV ,short half foreach (var emp in attList) { if (emp.TimeIn != null) averageTimeIn = averageTimeIn + emp.TimeIn.Value.Ticks; if (emp.TimeOut != null) averageTimeOut = averageTimeOut + emp.TimeOut.Value.Ticks; if (emp.LateIn != null) dailysumm.LIMins = dailysumm.LIMins + emp.LateIn; if (emp.LateOut != null) dailysumm.LOMins = dailysumm.LOMins + emp.LateOut; if (emp.EarlyIn != null) dailysumm.EIMins = dailysumm.EIMins + emp.EarlyIn; if (emp.EarlyOut != null) dailysumm.EOMins = dailysumm.EOMins + emp.EarlyOut; if (emp.WorkMin != null) dailysumm.ActualWorkMins = dailysumm.ActualWorkMins + emp.WorkMin; //code leave bundle if (emp.StatusLeave == true) dailysumm.LvEmps = dailysumm.LvEmps++; if (emp.StatusHL == true) dailysumm.HalfLvEmps = dailysumm.HalfLvEmps++; if (emp.StatusSL == true) dailysumm.ShortLvEmps = dailysumm.ShortLvEmps++; //code for over time emps if (emp.StatusOT == true) { dailysumm.OTEmps = (short)(dailysumm.OTEmps + 1); dailysumm.OTMins = dailysumm.OTMins + emp.OTMin; } //code for day off if (emp.StatusDO == true) dailysumm.DayOffEmps++; //code for expected work mins if (emp.ShifMin != null) dailysumm.ExpectedWorkMins = emp.ShifMin + dailysumm.ExpectedWorkMins; } // dailysumm.OnTimeEmps = (short)(dailysumm.TotalEmps - dailysumm.OTEmps); dailysumm.DayOffEmps = (short)(dailysumm.ShortLvEmps + dailysumm.LvEmps); dailysumm.LossWorkMins = dailysumm.ExpectedWorkMins - dailysumm.ActualWorkMins; try { if (dailysumm.PresentEmps != 0) dailysumm.AvgTimeIn = new DateTime((long)(averageTimeIn / dailysumm.PresentEmps)).TimeOfDay; if (dailysumm.PresentEmps != 0) dailysumm.AvgTimeOut = new DateTime((long)(averageTimeOut / dailysumm.PresentEmps)).TimeOfDay; if (dailysumm.TotalEmps != 0) dailysumm.AActualMins = (short)(dailysumm.ActualWorkMins / dailysumm.TotalEmps); if (dailysumm.TotalEmps != 0) dailysumm.ALossMins = (short)(dailysumm.LossWorkMins / dailysumm.TotalEmps); if (dailysumm.TotalEmps != 0) dailysumm.AExpectedMins = (short)(dailysumm.ExpectedWorkMins / dailysumm.TotalEmps); if (dailysumm.LIEmps != 0) dailysumm.ALIMins = (short)(dailysumm.LIMins / dailysumm.LIEmps); if (dailysumm.LOEmps != 0) dailysumm.ALOMins = (short)(dailysumm.LOMins / dailysumm.LOEmps); if (dailysumm.EIEmps != 0) dailysumm.AEIMins = (short)(dailysumm.EIMins / dailysumm.EIEmps); if (dailysumm.EOEmps != 0) dailysumm.AEOMins = (short)(dailysumm.EOMins / dailysumm.EOEmps); if (dailysumm.OTEmps != 0) dailysumm.AOTMins = (short)(dailysumm.OTMins / dailysumm.OTEmps); } catch (Exception e) { } if (ProcssedDS == false) context.DailySummaries.AddObject(dailysumm); context.SaveChanges(); } }
public static void CalculateSummary(DateTime dateStart, String criteria, int criteriaValue, string Name) { bool ProcssedDS = false; DateTime makeMe = new DateTime(dateStart.Year, dateStart.Month, dateStart.Day, 0, 0, 0); SummaryEntity summary = new SummaryEntity(); TAS2013Entities context = new TAS2013Entities(); ViewAttData vmio = new ViewAttData(); summary.SummaryDateCriteria = dateStart.ToString("yyMMdd") + criteria + criteriaValue; String day = DateTime.Today.DayOfWeek.ToString(); day = day.Substring(0, 3); day = day + "Min"; List <ViewAttData> attList = new List <ViewAttData>(); switch (criteria) { case "C": attList = context.ViewAttDatas.Where(aa => aa.AttDate == dateStart && aa.CompanyID == criteriaValue).ToList(); //Change the below line for NHA please summary.criterianame = Name; summary.SummaryDateCriteria = dateStart.ToString("yyMMdd") + criteria + criteriaValue; break; case "L": attList = context.ViewAttDatas.Where(aa => aa.AttDate == dateStart && aa.LocID == criteriaValue).ToList(); if (attList.Count > 0) { summary.criterianame = Name; } summary.SummaryDateCriteria = dateStart.ToString("yyMMdd") + criteria + criteriaValue; break; case "D": attList = context.ViewAttDatas.Where(aa => aa.AttDate == dateStart && aa.DeptID == criteriaValue).ToList(); if (attList.Count > 0) { summary.criterianame = Name; } summary.SummaryDateCriteria = dateStart.ToString("yyMMdd") + criteria + criteriaValue; break; case "E": attList = context.ViewAttDatas.Where(aa => aa.AttDate == dateStart && aa.SecID == criteriaValue).ToList(); if (attList.Count > 0) { summary.criterianame = Name; } summary.SummaryDateCriteria = dateStart.ToString("yyMMdd") + criteria + criteriaValue; break; case "S": attList = context.ViewAttDatas.Where(aa => aa.AttDate == dateStart && aa.ShiftID == criteriaValue).ToList(); if (attList.Count > 0) { summary.criterianame = Name; } summary.SummaryDateCriteria = dateStart.ToString("yyMMdd") + criteria + criteriaValue; break; case "T": attList = context.ViewAttDatas.Where(aa => aa.AttDate == dateStart && aa.TypeID == criteriaValue).ToList(); if (attList.Count > 0) { summary.criterianame = Name; } summary.SummaryDateCriteria = dateStart.ToString("yyMMdd") + criteria + criteriaValue; break; case "A": attList = context.ViewAttDatas.Where(aa => aa.AttDate == dateStart && aa.CatID == criteriaValue).ToList(); if (attList.Count > 0) { summary.criterianame = Name; } summary.SummaryDateCriteria = dateStart.ToString("yyMMdd") + criteria + criteriaValue; break; } if (attList.Count > 0) { DailySummary dailysumm = new DailySummary(); if (context.DailySummaries.Where(aa => aa.SummaryDateCriteria == summary.SummaryDateCriteria).Count() > 0) { dailysumm = context.DailySummaries.First(aa => aa.SummaryDateCriteria == summary.SummaryDateCriteria); ProcssedDS = true; } dailysumm.SummaryDateCriteria = summary.SummaryDateCriteria; dailysumm.Criteria = criteria; dailysumm.CriteriaValue = (short)criteriaValue; dailysumm.CriteriaName = summary.criterianame; dailysumm.TotalEmps = (short)attList.Count; dailysumm.PresentEmps = (short)attList.Where(aa => aa.StatusP == true).Count <ViewAttData>(); dailysumm.AbsentEmps = (short)attList.Where(aa => aa.StatusAB == true).Count <ViewAttData>(); dailysumm.Date = makeMe; dailysumm.EIEmps = (short)attList.Where(aa => aa.StatusEI == true).Count <ViewAttData>(); dailysumm.EOEmps = (short)attList.Where(aa => aa.StatusEO == true).Count <ViewAttData>(); dailysumm.LIEmps = (short)attList.Where(aa => aa.StatusLI == true).Count <ViewAttData>(); dailysumm.LOEmps = (short)attList.Where(aa => aa.StatusLO == true).Count <ViewAttData>(); dailysumm.LvEmps = (short)attList.Where(aa => aa.StatusLeave == true).Count <ViewAttData>(); dailysumm.DayOffEmps = (short)attList.Where(aa => aa.StatusDO == true).Count <ViewAttData>(); dailysumm.HalfLvEmps = 0; dailysumm.ShortLvEmps = 0; dailysumm.ExpectedWorkMins = 0; dailysumm.ActualWorkMins = 0; dailysumm.LossWorkMins = 0; dailysumm.OTMins = 0; dailysumm.LIMins = 0; dailysumm.LOMins = 0; dailysumm.EIMins = 0; dailysumm.EOMins = 0; dailysumm.AOTMins = 0; dailysumm.OTEmps = 0; dailysumm.OTMins = 0; Int64 averageTimeIn = 0; Int64 averageTimeOut = 0; //LV ,short half foreach (var emp in attList) { if (emp.TimeIn != null) { averageTimeIn = averageTimeIn + emp.TimeIn.Value.Ticks; } if (emp.TimeOut != null) { averageTimeOut = averageTimeOut + emp.TimeOut.Value.Ticks; } if (emp.LateIn != null) { if (emp.LateIn > 0) { dailysumm.LIMins = dailysumm.LIMins + emp.LateIn; } } if (emp.LateOut != null) { if (emp.LateOut > 0) { dailysumm.LOMins = dailysumm.LOMins + emp.LateOut; } } if (emp.EarlyIn != null) { if (emp.EarlyIn > 0) { dailysumm.EIMins = dailysumm.EIMins + emp.EarlyIn; } } if (emp.EarlyOut != null) { if (emp.EarlyOut > 0) { dailysumm.EOMins = dailysumm.EOMins + emp.EarlyOut; } } if (emp.WorkMin != null) { if (emp.WorkMin > 0) { dailysumm.ActualWorkMins = dailysumm.ActualWorkMins + emp.WorkMin; } } //code leave bundle if (emp.StatusLeave == true) { dailysumm.LvEmps = dailysumm.LvEmps++; } if (emp.StatusHL == true) { dailysumm.HalfLvEmps = dailysumm.HalfLvEmps++; } if (emp.StatusSL == true) { dailysumm.ShortLvEmps = dailysumm.ShortLvEmps++; } //code for over time emps if (emp.StatusOT == true) { dailysumm.OTEmps = (short)(dailysumm.OTEmps + 1); if (emp.OTMin != null) { dailysumm.OTMins = dailysumm.OTMins + emp.OTMin; } } //code for day off if (emp.StatusDO == true) { dailysumm.DayOffEmps++; } //code for expected work mins if (emp.ShifMin != null) { dailysumm.ExpectedWorkMins = emp.ShifMin + dailysumm.ExpectedWorkMins; } } // dailysumm.OnTimeEmps = (short)(dailysumm.TotalEmps - dailysumm.OTEmps); dailysumm.LossWorkMins = dailysumm.ExpectedWorkMins - dailysumm.ActualWorkMins; try { //if (dailysumm.PresentEmps != 0) // dailysumm.AverageTimeIn = new DateTime((Int64)(averageTimeIn / dailysumm.PresentEmps)).TimeOfDay; //if (dailysumm.PresentEmps != 0) // dailysumm.AverageTimeOut = new DateTime((Int64)(averageTimeOut / dailysumm.PresentEmps)).TimeOfDay; if (dailysumm.TotalEmps != 0) { dailysumm.AActualMins = (short)(dailysumm.ActualWorkMins / dailysumm.TotalEmps); } if (dailysumm.TotalEmps != 0) { dailysumm.ALossMins = (short)(dailysumm.LossWorkMins / dailysumm.TotalEmps); } if (dailysumm.TotalEmps != 0) { dailysumm.AExpectedMins = (short)(dailysumm.ExpectedWorkMins / dailysumm.TotalEmps); } if (dailysumm.LIEmps != 0) { dailysumm.ALIMins = (short)(dailysumm.LIMins / dailysumm.LIEmps); } if (dailysumm.LOEmps != 0) { dailysumm.ALOMins = (short)(dailysumm.LOMins / dailysumm.LOEmps); } if (dailysumm.EIEmps != 0) { dailysumm.AEIMins = (short)(dailysumm.EIMins / dailysumm.EIEmps); } if (dailysumm.EOEmps != 0) { dailysumm.AEOMins = (short)(dailysumm.EOMins / dailysumm.EOEmps); } if (dailysumm.OTEmps != 0) { dailysumm.AOTMins = (short)(dailysumm.OTMins / dailysumm.OTEmps); } } catch (Exception e) { } if (ProcssedDS == false) { context.DailySummaries.AddObject(dailysumm); } context.SaveChanges(); } }