Example #1
0
        public ActionResult CallCenterCallReport(CallCenterCallReportModelFilter filter = null, int pageNumber = 1)
        {
            int totalRecords;

            if (filter == null)
            {
                filter = new CallCenterCallReportModelFilter {
                    DateFrom = DateTime.Now.AddDays(-1).Date, DateTo = DateTime.Now.Date.AddDays(-1).Date
                }
            }
            ;

            var model = _callQueueService.GetCallCenterCallReport(pageNumber, _pageSize, filter, out totalRecords);

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

            if (string.IsNullOrEmpty(filter.Tag) && (filter.CustomTags == null) && !filter.DateFrom.HasValue && !filter.DateTo.HasValue && !filter.CustomerId.HasValue && filter.HealthPlanId <= 0 && filter.CallQueueId <= 0)
            {
                filter.DateFrom = filter.DateFrom.HasValue ? filter.DateFrom.Value : DateTime.Now.AddDays(-1).Date;
                filter.DateTo   = filter.DateTo.HasValue ? filter.DateTo.Value : DateTime.Now.AddDays(-1).Date;
            }

            model.Filter = filter;

            var currentAction        = ControllerContext.RouteData.Values["action"].ToString();
            var routeValueDictionary = GetRouteValueDictionaryForCallCenterCallReportModel(filter);

            Func <int, string> urlFunc = pn => Url.Action(currentAction, AddRouteValueDictionary(routeValueDictionary, pn));

            model.PagingModel = new PagingModel(pageNumber, _pageSize, totalRecords, urlFunc);
            return(View(model));
        }
Example #2
0
        public string CallCenterCallReportExport(CallCenterCallReportModelFilter filter, long userId)
        {
            var dataGen = new ExportableDataGenerator <CallCenterCallReportModel, CallCenterCallReportModelFilter>(_callQueueService.GetCallCenterCallReport, Logger);

            var model = dataGen.GetData(filter);

            return(WriteCsvCallCenterCallReport(GetExportableFileName("CallCenterCallReport"), model.Collection, userId));
        }
Example #3
0
        public void CallCenterCallReportAsync(string id = null, CallCenterCallReportModelFilter filter = null)
        {
            if (id == null)
            {
                return;
            }

            AsyncManager.OutstandingOperations.Increment();
            var dataGen = new ExportableDataGenerator <CallCenterCallReportModel, CallCenterCallReportModelFilter>(_callQueueService.GetCallCenterCallReport);

            var processmanager = new ExportableDataGeneratorProcessManager <CallCenterCallReportModel, CallCenterCallReportModelFilter>();

            processmanager.Add(id, dataGen);

            GetNewProcessStarted(filter, dataGen, id);
        }
        public IEnumerable <Call> GetCallCenterCallQueueCustomer(CallCenterCallReportModelFilter filter, int pageNumber, int pageSize, out int totalRecords)
        {
            using (var adapter = PersistenceLayer.GetDataAccessAdapter())
            {
                var linqMetaData = new LinqMetaData(adapter);

                filter = filter ?? new CallCenterCallReportModelFilter();

                var query = (from cccr in linqMetaData.VwCallCenterCallReport where cccr.CalledCustomerId > 0 select cccr);

                if (filter.CustomerId.HasValue)
                {
                    if (filter.CustomerId.Value > 0)
                    {
                        query = (from cqc in query where cqc.CalledCustomerId == filter.CustomerId select cqc);
                    }
                    else
                    {
                        totalRecords = 0;
                        return(null);
                    }
                }
                else
                {
                    if (string.IsNullOrEmpty(filter.Tag) && (filter.CustomTags == null) && !filter.DateFrom.HasValue && !filter.DateTo.HasValue && !filter.CustomerId.HasValue && filter.HealthPlanId <= 0 && filter.CallQueueId <= 0)
                    {
                        filter.DateFrom = filter.DateFrom.HasValue ? filter.DateFrom.Value : DateTime.Now.AddDays(-1).Date;
                        filter.DateTo   = filter.DateTo.HasValue ? filter.DateTo.Value : DateTime.Now.AddDays(-1).Date;
                    }

                    if (filter.HealthPlanId > 0)
                    {
                        query = (from cccr in linqMetaData.VwCallCenterCallReport where cccr.AccountId == filter.HealthPlanId select cccr);
                    }
                    else if (filter.Tag != null && !string.IsNullOrEmpty(filter.Tag.Trim()))
                    {
                        query = (from cccr in linqMetaData.VwCallCenterCallReport where cccr.Tag == filter.Tag.Trim() select cccr);
                    }

                    if (filter.CallQueueId > 0)
                    {
                        query = (from cqc in query where cqc.CallQueueId == filter.CallQueueId select cqc);
                    }

                    if (filter.DateFrom.HasValue && filter.DateTo.HasValue)
                    {
                        query = (from cqc in query where cqc.DateCreated >= filter.DateFrom && cqc.DateCreated <= filter.DateTo.Value.AddDays(1) select cqc);
                    }
                    else if (filter.DateFrom.HasValue && !filter.DateTo.HasValue)
                    {
                        query = (from cqc in query where cqc.DateCreated >= filter.DateFrom select cqc);
                    }
                    else if (!filter.DateFrom.HasValue && filter.DateTo.HasValue)
                    {
                        query = (from cqc in query where cqc.DateCreated <= filter.DateTo.Value.AddDays(1) select cqc);
                    }

                    if (filter.CustomTags != null)
                    {
                        var customTagCustomersIds = (from ct in linqMetaData.CustomerTag where ct.IsActive && filter.CustomTags.Contains(ct.Tag) select ct.CustomerId);
                        query = (from cqc in query where customTagCustomersIds.Contains(cqc.CalledCustomerId) select cqc);
                    }

                    if (filter.CallType == (int)CallCenterCallType.Inbound)
                    {
                        query = (from q in query where q.OutBound != null && q.OutBound == false select q);
                    }
                    else if (filter.CallType == (int)CallCenterCallType.Outbound)
                    {
                        query = (from q in query where q.OutBound != null && q.OutBound == true select q);
                    }
                }

                totalRecords = query.Count();

                //var entities = finalQuery.OrderByDescending(x => x.DateCreated).TakePage(pageNumber, pageSize).Select(x => x).ToArray();

                var entities = query.OrderByDescending(x => x.DateCreated).Skip((pageNumber - 1) * pageSize).Take(pageSize).ToArray();

                return(Mapper.Map <IEnumerable <VwCallCenterCallReportEntity>, IEnumerable <Call> >(entities));
            }
        }
Example #5
0
        private RouteValueDictionary GetRouteValueDictionaryForCallCenterCallReportModel(CallCenterCallReportModelFilter filter)
        {
            var routeValueDictionary = new RouteValueDictionary
            {
                { "DateFrom", filter.DateFrom },
                { "DateTo", filter.DateTo },
                { "Tag", filter.Tag },
                { "CustomerId", filter.CustomerId },
                { "HealthPlanId", filter.HealthPlanId },
                { "CallQueueId", filter.CallQueueId },
                { "CallType", filter.CallType }
            };

            if (filter.CustomTags != null)
            {
                var index = 0;
                foreach (var customtag in filter.CustomTags)
                {
                    routeValueDictionary.Add(string.Format("CustomTags[{0}]", index), customtag);
                    index++;
                }
            }

            return(routeValueDictionary);
        }
Example #6
0
 public ActionResult CallCenterCallReport(CallCenterCallReportModelFilter filter = null)
 {
     return(CreateExportQueue(filter, ExportableReportType.CallCenterCallReport, _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId));
 }