Ejemplo n.º 1
0
        public ActionResult PhysicianReview(PhysicianReviewListModelFilter filter = null, int pageNumber = 1)
        {
            var filterValidator = IoC.Resolve <PhysicianReviewListModelFilterValidator>();
            var result          = filterValidator.Validate(filter);

            if (result.IsValid)
            {
                int totalRecords = 0;

                var model = _physicianEvaluationService.GetPhysicianReviews(pageNumber, _pageSize, filter,
                                                                            out totalRecords);

                if (model == null)
                {
                    model = new PhysicianReviewListModel();
                }

                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.PhysicianId,
                    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 PhysicianReviewListModel {
                Filter = filter, FeedbackMessage = FeedbackMessageModel.CreateFailureMessage(htmlString)
            }));
        }
Ejemplo n.º 2
0
        public IEnumerable <PhysicianEvaluation> GetEvaluations(int pageNumber, int pageSize, PhysicianReviewListModelFilter filter, out int totalRecords)
        {
            using (var adapter = PersistenceLayer.GetDataAccessAdapter())
            {
                var linqMetaData = new LinqMetaData(adapter);
                IEnumerable <PhysicianEvaluationEntity> entities;
                if (filter == null)
                {
                    var query = (from pe in linqMetaData.PhysicianEvaluation
                                 where pe.EvaluationEndTime.HasValue
                                 orderby pe.EvaluationStartTime descending
                                 select pe);
                    totalRecords = query.Count();
                    entities     = query.TakePage(pageNumber, pageSize).ToList();
                }
                else
                {
                    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 pe.EvaluationEndTime.HasValue
                                 select new { pe, e });

                    if (filter.PhysicianId > 0)
                    {
                        query = query.Where(q => q.pe.PhysicianId == filter.PhysicianId);
                    }

                    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(q => q.e.EventDate >= filter.FromDate.Value);
                            }

                            if (filter.ToDate.HasValue)
                            {
                                query = query.Where(q => q.e.EventDate < filter.ToDate.Value.AddHours(23).AddMinutes(59));
                            }
                        }
                        else if (filter.DateType == (int)PhysicianReviewDateTypeFilter.EvaluationDate)
                        {
                            if (filter.FromDate.HasValue)
                            {
                                query = query.Where(q => q.pe.EvaluationStartTime >= filter.FromDate.Value);
                            }

                            if (filter.ToDate.HasValue)
                            {
                                query = query.Where(q => q.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);
                        }
                    }

                    var evaluationQuery = (from q in query
                                           orderby q.pe.EvaluationStartTime descending
                                           select q.pe);
                    totalRecords = evaluationQuery.Count();
                    entities     = evaluationQuery.TakePage(pageNumber, pageSize).ToList();
                }

                return(_mapper.MapMultiple(entities));
            }
        }