public List <ReportEvaluateModel> GetReport(int userId, DateTime from, DateTime to) { using (var db = new QMSSystemEntities()) { List <ReportEvaluateModel> report = new List <ReportEvaluateModel>(); ReportEvaluateModel obj; var ycDanhGia = db.Q_EvaluateDetail. Where(x => !x.IsDeleted && !x.Q_Evaluate.IsDeleted). OrderBy(x => x.Index). Select(x => new ModelSelectItem() { Code = x.EvaluateId + "_" + x.Id, Name = x.Name, Id = 0, Data = 0 }). ToList(); if (userId != 0) { obj = new ReportEvaluateModel(); obj.Name = db.Q_User.FirstOrDefault(x => x.Id == userId).Name; var danhgia = db.Q_UserEvaluate.Where(x => (x.Q_DailyRequire_Detail.EndProcessTime.Value.Day >= from.Day && x.Q_DailyRequire_Detail.EndProcessTime.Value.Month == from.Month && x.Q_DailyRequire_Detail.EndProcessTime.Value.Year == from.Year) && (x.Q_DailyRequire_Detail.EndProcessTime.Value.Day <= to.Day && x.Q_DailyRequire_Detail.EndProcessTime.Value.Month == to.Month && x.Q_DailyRequire_Detail.EndProcessTime.Value.Year == to.Year) && x.UserId == userId).ToList(); if (danhgia.Count > 0) { obj.Details.AddRange(ycDanhGia); foreach (var yc in obj.Details) { yc.Id = danhgia.Where(x => x.Score == yc.Code).Count(); } } report.Add(obj); } else { var danhgia = db.Q_UserEvaluate.Where(x => (x.Q_DailyRequire_Detail.EndProcessTime.Value.Day >= from.Day && x.Q_DailyRequire_Detail.EndProcessTime.Value.Month == from.Month && x.Q_DailyRequire_Detail.EndProcessTime.Value.Year == from.Year) && (x.Q_DailyRequire_Detail.EndProcessTime.Value.Day <= to.Day && x.Q_DailyRequire_Detail.EndProcessTime.Value.Month == to.Month && x.Q_DailyRequire_Detail.EndProcessTime.Value.Year == to.Year)).ToList(); report.AddRange(db.Q_User.Select(x => new ReportEvaluateModel() { UserId = x.Id, Name = x.Name })); if (danhgia.Count > 0) { foreach (var item in report) { var objs = danhgia.Where(x => x.UserId == item.UserId).ToList(); if (objs.Count > 0) { foreach (var yc in item.Details) { var a = new ModelSelectItem(); Parse.CopyObject(yc, ref a); a.Id = danhgia.Where(x => x.Score == yc.Code).Count(); item.Details.Add(a); } } } } } return(report); } }
public List <ReportEvaluateModel> GetReport_NotUseQMS(int userId, DateTime from, DateTime to) { using (var db = new QMSSystemEntities()) { List <ReportEvaluateModel> report = new List <ReportEvaluateModel>(); var ycDanhGia = db.Q_EvaluateDetail. Where(x => !x.IsDeleted && !x.Q_Evaluate.IsDeleted). OrderBy(x => x.Index). Select(x => new ModelSelectItem() { Code = x.EvaluateId + "_" + x.Id, Name = x.Name, Id = 0, Data = 0 }). ToList(); ReportEvaluateModel obj; if (userId != 0) { obj = new ReportEvaluateModel(); obj.Name = db.Q_User.FirstOrDefault(x => x.Id == userId).Name; obj.Details.AddRange(ycDanhGia); var danhgia_HN = db.Q_UserEvaluate.Where(x => x.CreatedDate >= from && x.CreatedDate <= to && x.UserId == userId).ToList(); // var danhgia_LS = db.Q_HisUserEvaluate.Where(x => (x.Q_HisDailyRequire_De.ProcessTime.Value.Day >= from.Day && x.Q_HisDailyRequire_De.ProcessTime.Value.Month == from.Month && x.Q_HisDailyRequire_De.ProcessTime.Value.Year == from.Year) && (x.Q_HisDailyRequire_De.ProcessTime.Value.Day <= to.Day && x.Q_HisDailyRequire_De.ProcessTime.Value.Month == to.Month && x.Q_HisDailyRequire_De.ProcessTime.Value.Year == to.Year) && x.UserId == userId).ToList(); var danhgia_LS = db.Q_HisUserEvaluate.Where(x => x.Q_HisDailyRequire_De.ProcessTime.HasValue && x.Q_HisDailyRequire_De.ProcessTime.Value >= from && x.Q_HisDailyRequire_De.ProcessTime.Value <= to && x.UserId == userId) .ToList(); foreach (var yc in ycDanhGia) { var child = new ModelSelectItem(); Parse.CopyObject(yc, ref child); child.Id += danhgia_HN.Where(x => x.Score == yc.Code).Count(); child.Id += danhgia_LS.Where(x => x.Score == yc.Code).Count(); obj.Details.Add(child); } report.Add(obj); } else { var danhgiaHomnay = db.Q_UserEvaluate.Where(x => x.CreatedDate >= from && x.CreatedDate <= to).ToList(); var danhgia_LS = db.Q_HisUserEvaluate.Where(x => x.Q_HisDailyRequire_De.ProcessTime.HasValue && x.Q_HisDailyRequire_De.ProcessTime.Value >= from && x.Q_HisDailyRequire_De.ProcessTime <= to).ToList(); report.AddRange(db.Q_User.Select(x => new ReportEvaluateModel() { UserId = x.Id, Name = x.Name })); foreach (var item in report) { // item.Details.AddRange(ycDanhGia); var objs_HN = danhgiaHomnay.Where(x => x.UserId == item.UserId).ToList(); var objs_LS = danhgia_LS.Where(x => x.UserId == item.UserId).ToList(); foreach (var yc in ycDanhGia) { var child = new ModelSelectItem(); Parse.CopyObject(yc, ref child); child.Id += objs_HN.Where(x => x.Score == yc.Code).Count(); child.Id += objs_LS.Where(x => x.Score == yc.Code).Count(); item.Details.Add(child); } } } return(report); } }