public ActionResult RescheduleAppointment(RescheduleApplointmentListModelFilter filter = null, int pageNumber = 1)
        {
            int totalRecords;

            var model = _eventCustomerReportingService.GetRescheduleAppointments(pageNumber, _pageSize, filter, out totalRecords);

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

            if (filter == null)
            {
                filter = new RescheduleApplointmentListModelFilter {
                    RescheduleFrom = DateTime.Now.AddDays(-30), RescheduleTo = DateTime.Now
                }
            }
            ;

            filter.RescheduleFrom = filter.RescheduleFrom.HasValue ? filter.RescheduleFrom.Value : DateTime.Now.Date.AddDays(-30);
            filter.RescheduleTo   = filter.RescheduleTo.HasValue ? filter.RescheduleTo.Value : DateTime.Now.Date;

            model.Filter = filter;

            var currentAction          = ControllerContext.RouteData.Values["action"].ToString();
            Func <int, string> urlFunc =
                pn => Url.Action(currentAction, new
            {
                pageNumber = pn,
                filter.EventFrom,
                filter.EventTo,
                filter.RescheduleFrom,
                filter.RescheduleTo,
                filter.CustomerId,
                filter.CustomerName,
                filter.CorporateAccountId,
                filter.HospitalPartnerId
            });

            model.PagingModel = new PagingModel(pageNumber, _pageSize, totalRecords, urlFunc);

            return(View(model));
        }
Exemple #2
0
        public IEnumerable <EventAppointmentChangeLog> GetRescheduledAppointment(int pageNumber, int pageSize, RescheduleApplointmentListModelFilter filter, out int totalRecords)
        {
            using (var adapter = PersistenceLayer.GetDataAccessAdapter())
            {
                var linqMetaData = new LinqMetaData(adapter);
                IEnumerable <EventAppointmentChangeLogEntity> entities;

                if (filter == null)
                {
                    filter = new RescheduleApplointmentListModelFilter {
                        RescheduleFrom = DateTime.Now.Date.AddDays(-30), RescheduleTo = DateTime.Now.Date
                    };
                }
                filter.RescheduleFrom = filter.RescheduleFrom.HasValue ? filter.RescheduleFrom.Value : DateTime.Now.Date.AddDays(-30);
                filter.RescheduleTo   = filter.RescheduleTo.HasValue ? filter.RescheduleTo.Value : DateTime.Now.Date;

                var query = (from eacl in linqMetaData.EventAppointmentChangeLog select eacl);

                if (filter.CustomerId > 0)
                {
                    query = (from q in query
                             join ec in linqMetaData.EventCustomers on q.EventCustomerId equals ec.EventCustomerId
                             where ec.CustomerId == filter.CustomerId
                             select q);
                }
                else
                {
                    query = (from q in query
                             where q.DateCreated >= filter.RescheduleFrom.Value &&
                             q.DateCreated <= filter.RescheduleTo.Value.AddHours(23).AddMinutes(59)
                             select q);


                    //if (filter.EventFrom.HasValue || filter.EventTo.HasValue || !string.IsNullOrEmpty(filter.CustomerName))
                    //{
                    //    var queryForFilter = (from q in query
                    //                          join ec in linqMetaData.EventCustomers on q.EventCustomerId equals ec.EventCustomerId
                    //                          join e in linqMetaData.Events on ec.EventId equals e.EventId
                    //                          select new { q, ec, e });

                    //    if (filter.EventFrom.HasValue || filter.EventTo.HasValue)
                    //    {
                    //        if (filter.EventFrom.HasValue)
                    //        {
                    //            queryForFilter = (from q in queryForFilter where q.e.EventDate >= filter.EventFrom.Value select q);
                    //        }

                    //        if (filter.EventTo.HasValue)
                    //        {
                    //            queryForFilter = (from q in queryForFilter where q.e.EventDate <= filter.EventTo.Value select q);
                    //        }
                    //    }

                    //    if (!string.IsNullOrEmpty(filter.CustomerName))
                    //    {
                    //        queryForFilter = (from q in queryForFilter
                    //                          join oru in linqMetaData.OrganizationRoleUser on q.ec.CustomerId equals oru.OrganizationRoleUserId
                    //                          join u in linqMetaData.User on oru.UserId equals u.UserId
                    //                          where (u.FirstName + (u.MiddleName.Trim().Length > 0 ? (" " + u.MiddleName + " ") : " ") + u.LastName).Contains(filter.CustomerName)
                    //                          select q);
                    //    }

                    //    query = (from q in queryForFilter select q.q);
                    //}

                    if (filter.HospitalPartnerId > 0)
                    {
                        var eventIds = (from ea in linqMetaData.EventHospitalPartner where ea.HospitalPartnerId == filter.HospitalPartnerId select ea.EventId);

                        query = (from q in query
                                 where (eventIds.Contains(q.OldEventId) || eventIds.Contains(q.NewEventId))
                                 select q);
                    }

                    if (filter.CorporateAccountId > 0)
                    {
                        var eventIds = (from ea in linqMetaData.EventAccount where ea.AccountId == filter.CorporateAccountId select ea.EventId);

                        query = (from q in query
                                 where (eventIds.Contains(q.OldEventId) || eventIds.Contains(q.NewEventId))
                                 select q);
                    }

                    if (!string.IsNullOrEmpty(filter.CustomerName))
                    {
                        query = (from q in query
                                 join ec in linqMetaData.EventCustomers on q.EventCustomerId equals ec.EventCustomerId
                                 join oru in linqMetaData.OrganizationRoleUser on ec.CustomerId equals oru.OrganizationRoleUserId
                                 join u in linqMetaData.User on oru.UserId equals u.UserId
                                 where (u.FirstName + (u.MiddleName.Trim().Length > 0 ? (" " + u.MiddleName + " ") : " ") + u.LastName).Contains(filter.CustomerName)
                                 select q);
                    }


                    query = (from q in query orderby q.DateCreated descending select q);
                }

                totalRecords = query.Count();
                entities     = query.TakePage(pageNumber, pageSize).ToList();

                return(Mapper.Map <IEnumerable <EventAppointmentChangeLogEntity>, IEnumerable <EventAppointmentChangeLog> >(entities));
            }
        }