/// <summary> /// [Son.Vo] - 20140724 - Lấy dữ liệu BC Tổng Hợp Suất Ăn Của Nhân Viên /// </summary> /// <param name="CarteringIDs"></param> /// <param name="CanteenIDS"></param> /// <param name="LineIDS"></param> /// <param name="DateFrom"></param> /// <param name="DateTo"></param> /// <returns></returns> public List <Can_ReportMealTimeSummaryEntity> ReportMealTimeSummary(List <int?> CarteringIDs, List <int?> CanteenIDS, List <int?> LineIDS, DateTime DateFrom, DateTime DateTo) { #region GetData var lstMealRecord = new List <Can_MealRecord>().ToList(); using (var context = new VnrHrmDataContext()) { var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); var repo = new Can_MealRecordRepository(unitOfWork); lstMealRecord = repo.FindBy(m => (m.TimeLog >= DateFrom || m.TimeLog <= DateTo) && m.CardCode != null).ToList(); } var lstCanteens = new List <Can_Canteen>().ToList(); using (var context = new VnrHrmDataContext()) { var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); var repo = new Can_CanteenRepository(unitOfWork); if (CanteenIDS != null) { lstCanteens = repo.FindBy(s => CanteenIDS.Contains(s.Id)).ToList(); } else { lstCanteens = repo.GetAll().ToList(); } } var lstCaterings = new List <Can_Catering>().ToList(); using (var context = new VnrHrmDataContext()) { var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); var repo = new Can_CateringRepository(unitOfWork); if (CarteringIDs != null) { lstCaterings = repo.FindBy(s => CarteringIDs.Contains(s.Id)).ToList(); } else { lstCaterings = repo.GetAll().ToList(); } } var lstLines = new List <Can_Line>().ToList(); using (var context = new VnrHrmDataContext()) { var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); var repo = new Can_LineRepository(unitOfWork); if (LineIDS != null) { lstLines = repo.FindBy(s => LineIDS.Contains(s.Id)).ToList(); } else { lstLines = repo.GetAll().ToList(); } } #endregion List <Can_ReportMealTimeSummaryEntity> lstReportMealTimeSummary = new List <Can_ReportMealTimeSummaryEntity>(); foreach (var cate in lstCaterings) { Can_ReportMealTimeSummaryEntity ReportAdjustmentMealAllowancePayment = new Can_ReportMealTimeSummaryEntity(); ReportAdjustmentMealAllowancePayment.Catering = cate.CateringName; foreach (var item in lstCanteens) { ReportAdjustmentMealAllowancePayment.Canteen = item.CanteenName; foreach (var line in lstLines) { ReportAdjustmentMealAllowancePayment.Line = line.LineName; ReportAdjustmentMealAllowancePayment.Price = line.Amount.Value; var sum = lstMealRecord.Where(s => s.CateringID == cate.Id && s.CanteenID == cate.Id && s.LineID == line.Id).Sum(s => s.Amount); var rate = lstMealRecord.Where(s => s.CateringID == cate.Id && s.LineID == line.Id).Sum(s => s.Amount) / sum; ReportAdjustmentMealAllowancePayment.TotalAmount = sum != null ? sum.Value : 0; ReportAdjustmentMealAllowancePayment.Rate = rate != null ? rate.Value : 0; } } lstReportMealTimeSummary.Add(ReportAdjustmentMealAllowancePayment); } return(lstReportMealTimeSummary); }
public DataTable ReportMultiSlideCard(List<int?> CarteringIDs, List<int?> CanteenIDS, List<int?> LineIDS, DateTime dateStart, DateTime dateEnd, List<int> lstProfileIds) { List<Can_ReportMultiSlideCardEntity> lstReportMultiSlideCard = new List<Can_ReportMultiSlideCardEntity>(); DataTable datatable = CreateReportMultiSlideCardSchema(dateStart, dateEnd); using (var context = new VnrHrmDataContext()) { var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); var mealRecords = new List<Can_MealRecord>().Select(s => new { s.CardCode, s.TimeLog, s.CanteenID, s.CateringID, s.LineID }).ToList(); var repo = new Can_MealRecordRepository(unitOfWork); mealRecords = repo.FindBy(s => s.CardCode != null && dateStart <= s.TimeLog && s.TimeLog <= dateEnd && s.NoWorkDay == true) .Select(s => new { s.CardCode, s.TimeLog, s.CanteenID, s.CateringID, s.LineID }).ToList(); var lstcateringids = mealRecords.Select(m =>m.CateringID).ToList(); var lstcanteenids = mealRecords.Select(m =>m.CanteenID).ToList(); var lstlineids = mealRecords.Select(m => m.LineID).ToList(); var workDays = new List<Att_WorkDay>().Select(s => new { s.ProfileID, s.WorkDate }).ToList(); var repoWorkDay = new Att_WorkDayRepository(unitOfWork); workDays = repoWorkDay.FindBy(s => s.ProfileID != null && dateStart <= s.WorkDate && s.WorkDate <= dateEnd) .Select(s => new { s.ProfileID, s.WorkDate }).ToList(); var Cardcode = mealRecords.Select(s => s.CardCode).Distinct().ToList(); var repoProfile = new Hre_ProfileRepository(unitOfWork); var profiles = repoProfile.FindBy(m => Cardcode.Contains(m.CodeAttendance) && lstProfileIds.Contains(m.Id)).Select(s => new { s.Id, s.DateQuit, s.OrgStructureID, s.ProfileName, s.CodeEmp, s.CodeAttendance }).ToList(); var repoOrg = new Cat_OrgStructureRepository(unitOfWork); var orgs = repoOrg.FindBy(m => m.Code != null).ToList(); var catering = new List<Can_Catering>().ToList(); var repocatering = new Can_CateringRepository(unitOfWork); if(CarteringIDs != null && CarteringIDs.Count >0) { catering = repocatering.FindBy(m => CarteringIDs.Contains(m.Id)).ToList(); } else catering = repocatering.GetAll().ToList(); var canteen = new List<Can_Canteen>().ToList(); var repocanteen = new Can_CanteenRepository(unitOfWork); if (CanteenIDS != null && CanteenIDS.Count > 0) { canteen = repocanteen.FindBy(m => CanteenIDS.Contains(m.Id)).ToList(); } else canteen = repocanteen.GetAll().ToList(); var line = new List<Can_Line>().ToList(); var repoline = new Can_LineRepository(unitOfWork); if (LineIDS != null && LineIDS.Count > 0) { line = repoline.FindBy(m => LineIDS.Contains(m.Id)).ToList(); } else line = repoline.GetAll().ToList(); Can_ReportMultiSlideCardEntity ReportMultiSlideCardEntity = new Can_ReportMultiSlideCardEntity(); foreach (var profile in profiles) { DataRow row = datatable.NewRow(); var orgbyprofile = orgs.Where(m => m.Id == profile.OrgStructureID).FirstOrDefault(); var cateringbyprofile = catering.Where(m => lstcateringids.Contains(m.Id)).FirstOrDefault(); var lineprofile = line.Where(m => lstlineids.Contains(m.Id)).FirstOrDefault(); var canteenbyprofile = canteen.Where(m => lstcanteenids.Contains(m.Id)).FirstOrDefault(); row[Can_ReportMultiSlideCardEntity.FieldNames.CodeEmp] = profile.CodeEmp; row[Can_ReportMultiSlideCardEntity.FieldNames.ProfileName] = profile.ProfileName; row[Can_ReportMultiSlideCardEntity.FieldNames.OrgStructureName] = orgbyprofile.OrgStructureName; row[Can_ReportMultiSlideCardEntity.FieldNames.Cartering] = cateringbyprofile.CateringName; row[Can_ReportMultiSlideCardEntity.FieldNames.Canteen] = canteenbyprofile.CanteenName; row[Can_ReportMultiSlideCardEntity.FieldNames.Line] = lineprofile.LineName; var mealRecordProfiles = mealRecords.Where(s => s.CardCode == profile.CodeAttendance).ToList(); var workDayProfiles = workDays.Where(s => s.ProfileID == profile.Id).ToList(); for (DateTime date = dateStart; date <= dateEnd; date = date.AddDays(1)) { var meal = mealRecords.FirstOrDefault(s => s.CardCode == profile.CodeAttendance && s.TimeLog == date); if (meal != null) { row["Date" + date.Day] = (object)meal.TimeLog ?? DBNull.Value; //row["SumCardMore" + date.Day] = mealRecordProfiles.Count(s => s.TimeLog == date) - workDayProfiles.Count(s => s.WorkDate == date); } } datatable.Rows.Add(row); } } return datatable; }
public DataTable ReportMultiSlideCard(List <int?> CarteringIDs, List <int?> CanteenIDS, List <int?> LineIDS, DateTime dateStart, DateTime dateEnd, List <int> lstProfileIds) { List <Can_ReportMultiSlideCardEntity> lstReportMultiSlideCard = new List <Can_ReportMultiSlideCardEntity>(); DataTable datatable = CreateReportMultiSlideCardSchema(dateStart, dateEnd); using (var context = new VnrHrmDataContext()) { var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); var mealRecords = new List <Can_MealRecord>().Select(s => new { s.CardCode, s.TimeLog, s.CanteenID, s.CateringID, s.LineID }).ToList(); var repo = new Can_MealRecordRepository(unitOfWork); mealRecords = repo.FindBy(s => s.CardCode != null && dateStart <= s.TimeLog && s.TimeLog <= dateEnd && s.NoWorkDay == true) .Select(s => new { s.CardCode, s.TimeLog, s.CanteenID, s.CateringID, s.LineID }).ToList(); var lstcateringids = mealRecords.Select(m => m.CateringID).ToList(); var lstcanteenids = mealRecords.Select(m => m.CanteenID).ToList(); var lstlineids = mealRecords.Select(m => m.LineID).ToList(); var workDays = new List <Att_WorkDay>().Select(s => new { s.ProfileID, s.WorkDate }).ToList(); var repoWorkDay = new Att_WorkDayRepository(unitOfWork); workDays = repoWorkDay.FindBy(s => s.ProfileID != null && dateStart <= s.WorkDate && s.WorkDate <= dateEnd) .Select(s => new { s.ProfileID, s.WorkDate }).ToList(); var Cardcode = mealRecords.Select(s => s.CardCode).Distinct().ToList(); var repoProfile = new Hre_ProfileRepository(unitOfWork); var profiles = repoProfile.FindBy(m => Cardcode.Contains(m.CodeAttendance) && lstProfileIds.Contains(m.Id)).Select(s => new { s.Id, s.DateQuit, s.OrgStructureID, s.ProfileName, s.CodeEmp, s.CodeAttendance }).ToList(); var repoOrg = new Cat_OrgStructureRepository(unitOfWork); var orgs = repoOrg.FindBy(m => m.Code != null).ToList(); var catering = new List <Can_Catering>().ToList(); var repocatering = new Can_CateringRepository(unitOfWork); if (CarteringIDs != null && CarteringIDs.Count > 0) { catering = repocatering.FindBy(m => CarteringIDs.Contains(m.Id)).ToList(); } else { catering = repocatering.GetAll().ToList(); } var canteen = new List <Can_Canteen>().ToList(); var repocanteen = new Can_CanteenRepository(unitOfWork); if (CanteenIDS != null && CanteenIDS.Count > 0) { canteen = repocanteen.FindBy(m => CanteenIDS.Contains(m.Id)).ToList(); } else { canteen = repocanteen.GetAll().ToList(); } var line = new List <Can_Line>().ToList(); var repoline = new Can_LineRepository(unitOfWork); if (LineIDS != null && LineIDS.Count > 0) { line = repoline.FindBy(m => LineIDS.Contains(m.Id)).ToList(); } else { line = repoline.GetAll().ToList(); } Can_ReportMultiSlideCardEntity ReportMultiSlideCardEntity = new Can_ReportMultiSlideCardEntity(); foreach (var profile in profiles) { DataRow row = datatable.NewRow(); var orgbyprofile = orgs.Where(m => m.Id == profile.OrgStructureID).FirstOrDefault(); var cateringbyprofile = catering.Where(m => lstcateringids.Contains(m.Id)).FirstOrDefault(); var lineprofile = line.Where(m => lstlineids.Contains(m.Id)).FirstOrDefault(); var canteenbyprofile = canteen.Where(m => lstcanteenids.Contains(m.Id)).FirstOrDefault(); row[Can_ReportMultiSlideCardEntity.FieldNames.CodeEmp] = profile.CodeEmp; row[Can_ReportMultiSlideCardEntity.FieldNames.ProfileName] = profile.ProfileName; row[Can_ReportMultiSlideCardEntity.FieldNames.OrgStructureName] = orgbyprofile.OrgStructureName; row[Can_ReportMultiSlideCardEntity.FieldNames.Cartering] = cateringbyprofile.CateringName; row[Can_ReportMultiSlideCardEntity.FieldNames.Canteen] = canteenbyprofile.CanteenName; row[Can_ReportMultiSlideCardEntity.FieldNames.Line] = lineprofile.LineName; var mealRecordProfiles = mealRecords.Where(s => s.CardCode == profile.CodeAttendance).ToList(); var workDayProfiles = workDays.Where(s => s.ProfileID == profile.Id).ToList(); for (DateTime date = dateStart; date <= dateEnd; date = date.AddDays(1)) { var meal = mealRecords.FirstOrDefault(s => s.CardCode == profile.CodeAttendance && s.TimeLog == date); if (meal != null) { row["Date" + date.Day] = (object)meal.TimeLog ?? DBNull.Value; //row["SumCardMore" + date.Day] = mealRecordProfiles.Count(s => s.TimeLog == date) - workDayProfiles.Count(s => s.WorkDate == date); } } datatable.Rows.Add(row); } } return(datatable); }
/// <summary> /// [Son.Vo] - 20140724 - Lấy dữ liệu BC Tổng Hợp Suất Ăn Của Nhân Viên /// </summary> /// <param name="CarteringIDs"></param> /// <param name="CanteenIDS"></param> /// <param name="LineIDS"></param> /// <param name="DateFrom"></param> /// <param name="DateTo"></param> /// <returns></returns> public List<Can_ReportMealTimeSummaryEntity> ReportMealTimeSummary(List<int?> CarteringIDs, List<int?> CanteenIDS, List<int?> LineIDS, DateTime DateFrom, DateTime DateTo) { #region GetData var lstMealRecord = new List<Can_MealRecord>().ToList(); using (var context = new VnrHrmDataContext()) { var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); var repo = new Can_MealRecordRepository(unitOfWork); lstMealRecord = repo.FindBy(m => (m.TimeLog >= DateFrom || m.TimeLog <= DateTo) && m.CardCode != null).ToList(); } var lstCanteens = new List<Can_Canteen>().ToList(); using (var context = new VnrHrmDataContext()) { var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); var repo = new Can_CanteenRepository(unitOfWork); if (CanteenIDS != null) { lstCanteens = repo.FindBy(s => CanteenIDS.Contains(s.Id)).ToList(); } else lstCanteens = repo.GetAll().ToList(); } var lstCaterings = new List<Can_Catering>().ToList(); using (var context = new VnrHrmDataContext()) { var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); var repo = new Can_CateringRepository(unitOfWork); if (CarteringIDs != null) { lstCaterings = repo.FindBy(s => CarteringIDs.Contains(s.Id)).ToList(); } else lstCaterings = repo.GetAll().ToList(); } var lstLines = new List<Can_Line>().ToList(); using (var context = new VnrHrmDataContext()) { var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); var repo = new Can_LineRepository(unitOfWork); if (LineIDS != null) { lstLines = repo.FindBy(s => LineIDS.Contains(s.Id)).ToList(); } else lstLines = repo.GetAll().ToList(); } #endregion List<Can_ReportMealTimeSummaryEntity> lstReportMealTimeSummary = new List<Can_ReportMealTimeSummaryEntity>(); foreach (var cate in lstCaterings) { Can_ReportMealTimeSummaryEntity ReportAdjustmentMealAllowancePayment = new Can_ReportMealTimeSummaryEntity(); ReportAdjustmentMealAllowancePayment.Catering = cate.CateringName; foreach (var item in lstCanteens) { ReportAdjustmentMealAllowancePayment.Canteen = item.CanteenName; foreach (var line in lstLines) { ReportAdjustmentMealAllowancePayment.Line = line.LineName; ReportAdjustmentMealAllowancePayment.Price = line.Amount.Value; var sum = lstMealRecord.Where(s => s.CateringID == cate.Id && s.CanteenID == cate.Id && s.LineID == line.Id).Sum(s => s.Amount); var rate = lstMealRecord.Where(s => s.CateringID == cate.Id && s.LineID == line.Id).Sum(s => s.Amount) / sum; ReportAdjustmentMealAllowancePayment.TotalAmount = sum != null ? sum.Value : 0; ReportAdjustmentMealAllowancePayment.Rate = rate != null ? rate.Value : 0; lstReportMealTimeSummary.Add(ReportAdjustmentMealAllowancePayment); } } } return lstReportMealTimeSummary; }