public ActionResult PhysicianReviewSummary(PhysicianReviewSummaryListModelFilter filter = null, int pageNumber = 1) { var filterValidator = IoC.Resolve <PhysicianReviewSummaryListModelFilterValidator>(); var result = filterValidator.Validate(filter); if (result.IsValid) { int totalRecords = 0; var model = _physicianEvaluationService.GetPhysicianReviewSummary(pageNumber, _pageSize, filter, out totalRecords); if (model == null) { model = new PhysicianReviewSummaryListModel(); } model.Filter = filter; var currentAction = ControllerContext.RouteData.Values["action"].ToString(); Func <int, string> urlFunc = pn => Url.Action(currentAction, new { pageNumber = pn, filter.EventId, filter.FromDate, filter.ToDate, filter.DateType, filter.PodId, filter.IsRetailEvent, filter.IsCorporateEvent, filter.IsPublicEvent, filter.IsPrivateEvent }); model.PagingModel = new PagingModel(pageNumber, _pageSize, totalRecords, urlFunc); return(View(model)); } var propertyNames = result.Errors.Select(e => e.PropertyName).Distinct(); var htmlString = propertyNames.Aggregate("", (current, property) => current + (result.Errors.Where(e => e.PropertyName == property).FirstOrDefault().ErrorMessage + "<br />")); return(View(new PhysicianReviewSummaryListModel { Filter = filter, FeedbackMessage = FeedbackMessageModel.CreateFailureMessage(htmlString) })); }
public IEnumerable <OrderedPair <long, double> > GetPhysicianIdAverageReviewTimePair(IEnumerable <long> physicianIds, PhysicianReviewSummaryListModelFilter filter) { using (var adapter = PersistenceLayer.GetDataAccessAdapter()) { var linqMetaData = new LinqMetaData(adapter); var query = (from pe in linqMetaData.PhysicianEvaluation join ecr in linqMetaData.EventCustomerResult on pe.EventCustomerId equals ecr.EventCustomerResultId join e in linqMetaData.Events on ecr.EventId equals e.EventId where physicianIds.Contains(pe.PhysicianId) && pe.EvaluationEndTime.HasValue select new { pe.PhysicianId, pe.EvaluationStartTime, pe.EvaluationEndTime, e.EventDate, e.EventId, e.EventTypeId }); if (filter == null) { var resultquery = (from q in query select new { q.PhysicianId, q.EvaluationStartTime, q.EvaluationEndTime }).ToList(); return((from q in resultquery group q by q.PhysicianId into g select new OrderedPair <long, double>(g.Key, g.Average(q => q.EvaluationEndTime.Value.Subtract(q.EvaluationStartTime).TotalSeconds))).ToList()); } else { if (filter.EventId > 0) { query = query.Where(q => q.EventId == filter.EventId); } else { if (filter.DateType == (int)PhysicianReviewDateTypeFilter.EventDate) { if (filter.FromDate.HasValue) { query = query.Where(a => a.EventDate >= filter.FromDate.Value); } if (filter.ToDate.HasValue) { query = query.Where(a => a.EventDate < filter.ToDate.Value.AddHours(23).AddMinutes(59)); } } else { if (filter.FromDate.HasValue) { query = query.Where(a => a.EvaluationStartTime >= filter.FromDate.Value); } if (filter.ToDate.HasValue) { query = query.Where(a => a.EvaluationStartTime < filter.ToDate.Value.AddHours(23).AddMinutes(59)); } } if (filter.PodId > 0) { var eventIds = (from ep in linqMetaData.EventPod where ep.PodId == filter.PodId && ep.IsActive select ep.EventId); query = query.Where(q => eventIds.Contains(q.EventId)); } if (filter.IsRetailEvent && !filter.IsCorporateEvent) { var eventIds = (from ea in linqMetaData.EventAccount select ea.EventId); query = query.Where(q => !eventIds.Contains(q.EventId)); } else if (!filter.IsRetailEvent && filter.IsCorporateEvent) { var eventIds = (from ea in linqMetaData.EventAccount select ea.EventId); query = query.Where(q => eventIds.Contains(q.EventId)); } if (filter.IsPublicEvent && !filter.IsPrivateEvent) { query = query.Where(q => q.EventTypeId == (long)RegistrationMode.Public); } else if (!filter.IsPublicEvent && filter.IsPrivateEvent) { query = query.Where(q => q.EventTypeId == (long)RegistrationMode.Private); } } var resultquery = (from q in query select new { q.PhysicianId, q.EvaluationStartTime, q.EvaluationEndTime }).ToList(); return((from q in resultquery group q by q.PhysicianId into g select new OrderedPair <long, double>(g.Key, g.Average(q => q.EvaluationEndTime.Value.Subtract(q.EvaluationStartTime).TotalSeconds))).ToList()); } } }
public IEnumerable <long> GetPhysicianIds(int pageNumber, int pageSize, PhysicianReviewSummaryListModelFilter filter, out int totalRecords) { using (var adapter = PersistenceLayer.GetDataAccessAdapter()) { var linqMetaData = new LinqMetaData(adapter); if (filter == null) { filter = new PhysicianReviewSummaryListModelFilter(); } IQueryable <long> queryPhysicianIds; if (filter.IsBlank()) { queryPhysicianIds = from p in linqMetaData.PhysicianProfile select p.PhysicianId; } else { var query = (from pe in linqMetaData.PhysicianEvaluation join ec in linqMetaData.EventCustomers on pe.EventCustomerId equals ec.EventCustomerId join e in linqMetaData.Events on ec.EventId equals e.EventId where pe.EvaluationEndTime.HasValue select new { pe, e }); if (filter.EventId > 0) { query = query.Where(q => q.e.EventId == filter.EventId); } else { if (filter.DateType == (int)PhysicianReviewDateTypeFilter.EventDate) { if (filter.FromDate.HasValue) { query = query.Where(a => a.e.EventDate >= filter.FromDate.Value); } if (filter.ToDate.HasValue) { query = query.Where( a => a.e.EventDate < filter.ToDate.Value.AddHours(23).AddMinutes(59)); } } else if (filter.DateType == (int)PhysicianReviewDateTypeFilter.EvaluationDate) { if (filter.FromDate.HasValue) { query = query.Where(a => a.pe.EvaluationStartTime >= filter.FromDate.Value); } if (filter.ToDate.HasValue) { query = query.Where( a => a.pe.EvaluationStartTime < filter.ToDate.Value.AddHours(23).AddMinutes(59)); } } if (filter.PodId > 0) { var eventIds = (from ep in linqMetaData.EventPod where ep.PodId == filter.PodId && ep.IsActive select ep.EventId); query = query.Where(q => eventIds.Contains(q.e.EventId)); } if (filter.IsRetailEvent && !filter.IsCorporateEvent) { var eventIds = (from ea in linqMetaData.EventAccount select ea.EventId); query = query.Where(q => !eventIds.Contains(q.e.EventId)); } else if (!filter.IsRetailEvent && filter.IsCorporateEvent) { var eventIds = (from ea in linqMetaData.EventAccount select ea.EventId); query = query.Where(q => eventIds.Contains(q.e.EventId)); } if (filter.IsPublicEvent && !filter.IsPrivateEvent) { query = query.Where(q => q.e.EventTypeId == (long)RegistrationMode.Public); } else if (!filter.IsPublicEvent && filter.IsPrivateEvent) { query = query.Where(q => q.e.EventTypeId == (long)RegistrationMode.Private); } } queryPhysicianIds = (from q in query orderby q.pe.PhysicianId select q.pe.PhysicianId); } totalRecords = queryPhysicianIds.Distinct().Count(); return(queryPhysicianIds.Distinct().TakePage(pageNumber, pageSize).ToArray()); } }