public ActionResult OutreachCallReport(OutreachCallReportModelFilter filter = null, int pageNumber = 1)
        {
            int totalRecords;

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

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

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

            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 = GetRouteValueDictionaryForOutreachCallReportModel(filter);

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

            model.PagingModel = new PagingModel(pageNumber, _pageSize, totalRecords, urlFunc);
            return(View(model));
        }
        private void HourlyOutreachCallReport(OutreachCallReportModelFilter filter, string destinationPath)
        {
            var       pageNumber = 1;
            const int pageSize   = 100;

            var list = new List <HourlyOutreachCallReportModel>();

            while (true)
            {
                int totalRecords;
                var model = _hourlyOutreachReportingService.GetOutreachCallReport(pageNumber, pageSize, filter, out totalRecords);

                if (model == null || model.Collection == null || !model.Collection.Any())
                {
                    break;
                }

                list.AddRange(model.Collection);
                _logger.Info(String.Format("\n\nPageNumber:{0} Totalrecords: {1}  Current Length: {2}", pageNumber, totalRecords, list.Count));

                pageNumber++;

                if (list.Count >= totalRecords)
                {
                    break;
                }
            }

            //if (list.Any())
            GenerateOutreachCallReportCsv(list, destinationPath);
        }
Exemple #3
0
        public void OutreachCallReportExport(OutreachCallReportModelFilter filter, string filePath, ILogger logger)
        {
            var dataGen = new ExportableDataGenerator <OutreachCallReportModel, OutreachCallReportModelFilter>(_callQueueService.GetOutreachCallReport, logger);

            var model = dataGen.GetData(filter);

            GenerateOutreachCallReportCsv(model.Collection, filePath, logger);
        }
Exemple #4
0
        public string OutreachCallReportExport(OutreachCallReportModelFilter filter, long userId)
        {
            var dataGen = new ExportableDataGenerator <OutreachCallReportModel, OutreachCallReportModelFilter>(_callQueueService.GetOutreachCallReport, Logger);

            var model = dataGen.GetData(filter);

            return(WriteCsvOutreachCallReport(GetExportableFileName("OutreachCall"), model.Collection, userId));
        }
        public void PollForHourlyOutreachCallReport()
        {
            try
            {
                var timeOfDay = DateTime.Now;
                _logger.Info(string.Format("Time of Date {0}", timeOfDay));

                if (timeOfDay.TimeOfDay > new TimeSpan(_settings.HourlyOutreachCallReportStartTime, 0, 0))
                {
                    timeOfDay = timeOfDay.AddMinutes(10);
                    var filter = new OutreachCallReportModelFilter
                    {
                        DateFrom          = timeOfDay.Date,
                        DateTo            = DateTime.Now,
                        CallAttemptFilter = CallAttemptFilterStatus.All
                    };
                    if (DirectoryOperationsHelper.CreateDirectoryIfNotExist(_settings.HourlyOutreachCallReportDownloadPath))
                    {
                        try
                        {
                            var files = DirectoryOperationsHelper.GetFiles(_settings.HourlyOutreachCallReportDownloadPath, string.Format("HourlyOutreachCallReport_{0}*.csv", timeOfDay.ToString("yyyyMMdd")));
                            foreach (var file in files)
                            {
                                DirectoryOperationsHelper.DeleteFileIfExist(file);
                            }
                        }
                        catch (Exception ex)
                        {
                            _logger.Error("some error occurred while deleting Hourly Report");
                            _logger.Error(string.Format("Message: {0}", ex.Message));
                            _logger.Error(string.Format("Stack Trace: {0}", ex.StackTrace));
                        }

                        var hourlyReport = Path.Combine(_settings.HourlyOutreachCallReportDownloadPath, string.Format("HourlyOutreachCallReport_{0}.csv", timeOfDay.ToString("yyyyMMddHHmm")));
                        HourlyOutreachCallReport(filter, hourlyReport);

                        var notificationModel = _emailNotificationModelsFactory.GetHourlyOutreachNotificationViewModel("HourlyOutreachCallReport", hourlyReport);
                        _notifier.NotifySubscribersViaEmail(NotificationTypeAlias.HourlyNotificationOutreachCallReport, EmailTemplateAlias.HourlyNotificationOutreachCallReport, notificationModel, 0, 1, "Hourly Outreach Call Report");
                    }
                }
                else
                {
                    _logger.Info(string.Format("Hourly Outreach Call Report Service can not be Run as it is restricted Time {0}", timeOfDay));
                }
            }
            catch (Exception ex)
            {
                _logger.Error("some error occurred while generating Hourly Report");
                _logger.Error(string.Format("Message: {0}", ex.Message));
                _logger.Error(string.Format("Stack Trace: {0}", ex.StackTrace));
            }
        }
        public void PollForOutreachReport()
        {
            try
            {
                _logger.Info("Polling for Out reach report started");

                var healthPlans = _corporateAccountRepository.GetAllHealthPlan().Where(hp => _healthPlanIds.Contains(hp.Id));

                foreach (var healthPlan in healthPlans)
                {
                    _logger.Info(string.Format("Polling for Out reach report started for Account Id {0} ", healthPlan.Id));

                    try
                    {
                        var outreachSettings = string.Format(_outreachSettings, healthPlan.Tag);
                        var customSettings   = _customSettingManager.Deserialize(outreachSettings);

                        var fromDate = customSettings.LastTransactionDate == null ? _cutOfDate : customSettings.LastTransactionDate.Value.AddDays(1);
                        var toDate   = DateTime.Today.AddDays(-1);

                        _logger.Info(string.Format("Generating report for From Date : {0} To Date : {1}", fromDate, toDate));

                        var filter = new OutreachCallReportModelFilter
                        {
                            HealthPlanId      = healthPlan.Id,
                            DateFrom          = fromDate,
                            DateTo            = toDate,
                            CallAttemptFilter = CallAttemptFilterStatus.All,
                        };

                        var filePath = GetOutreachFilePath(healthPlan, fromDate.Year, toDate);

                        //_callCenterExportableReportHelper.HousecallOutreachCallReportExport(filter, filePath, _logger);
                        HousecallOutreachCallReport(filter, filePath);

                        customSettings.LastTransactionDate = toDate;
                        _customSettingManager.SerializeandSave(outreachSettings, customSettings);

                        _logger.Info(string.Format("Completed Out reach report for Account Id {0} ", healthPlan.Id));
                    }
                    catch (Exception exception)
                    {
                        _logger.Error(string.Format("Exception occured while polling for outreach report for Account Id {0}.  Exception Message : {1}, Stack  Trace {2}", healthPlan.Id, exception.Message, exception.StackTrace));
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Error(string.Format("Exception occured while polling for outreach report.  Exception Message : {0}, Stack  Trace {1}", ex.Message, ex.StackTrace));
            }
        }
Exemple #7
0
        public void OutreachCallReportAsync(string id = null, OutreachCallReportModelFilter filter = null)
        {
            if (id == null)
            {
                return;
            }

            AsyncManager.OutstandingOperations.Increment();
            var dataGen = new ExportableDataGenerator <OutreachCallReportModel, OutreachCallReportModelFilter>(_callQueueService.GetOutreachCallReport);

            var processmanager = new ExportableDataGeneratorProcessManager <OutreachCallReportModel, OutreachCallReportModelFilter>();

            processmanager.Add(id, dataGen);

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

                filter = filter ?? new OutreachCallReportModelFilter();

                var query = (from ocr in linqMetaData.VwOutreachCallReport select ocr);

                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 (filter.EventId.HasValue)
                {
                    query = (from cqc in query where cqc.EventId == filter.EventId.Value select cqc);
                }
                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 ocr in linqMetaData.VwOutreachCallReport where ocr.AccountId == filter.HealthPlanId select ocr);
                    }
                    else if (filter.Tag != null && !string.IsNullOrEmpty(filter.Tag.Trim()))
                    {
                        query = (from ocr in linqMetaData.VwOutreachCallReport where ocr.Tag == filter.Tag.Trim() select ocr);
                    }

                    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.ProductTypeId > 0)
                    {
                        query = from ec in query
                                where ec.ProductTypeId == filter.ProductTypeId
                                select ec;
                    }
                }

                if (filter.CallAttemptFilter == CallAttemptFilterStatus.ContactsOnly)
                {
                    query = query.Where(x => x.IsContacted);
                }
                else if (filter.CallAttemptFilter == CallAttemptFilterStatus.AttemptsOnly)
                {
                    query = query.Where(x => !x.IsContacted);
                }
                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 <VwOutreachCallReportEntity>, IEnumerable <Call> >(entities));
            }
        }
        private RouteValueDictionary GetRouteValueDictionaryForOutreachCallReportModel(OutreachCallReportModelFilter filter)
        {
            var routeValueDictionary = new RouteValueDictionary
            {
                { "DateFrom", filter.DateFrom },
                { "DateTo", filter.DateTo },
                { "Tag", filter.Tag },
                { "CustomerId", filter.CustomerId },
                { "HealthPlanId", filter.HealthPlanId },
                { "CallQueueId", filter.CallQueueId },
                { "EventId", filter.EventId },
                { "CallAttemptFilter", filter.CallAttemptFilter },
                { "ProductTypeId", filter.ProductTypeId }
            };

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

            return(routeValueDictionary);
        }
Exemple #10
0
        public void PollForOutreachReport()
        {
            try
            {
                var today = DateTime.Today;
                if (today.DayOfWeek != _dayOfWeek)
                {
                    _logger.Info(string.Format("todays day : {0}, export set to run on {1}", today.DayOfWeek, _dayOfWeek));
                    return;
                }
                _logger.Info("Polling for Out reach report started");

                var healthPlans = _corporateAccountRepository.GetAllHealthPlan().Where(hp => _healthPlanIds.Contains(hp.Id));

                foreach (var healthPlan in healthPlans)
                {
                    _logger.Info(string.Format("Polling for Out reach report started for Account Id {0} ", healthPlan.Id));
                    try
                    {
                        var fromDate = DateTime.Today.AddDays(-7);

                        if (fromDate.Year == today.Year)
                        {
                            fromDate = new DateTime(fromDate.Year, 1, 1);
                            var filter = new OutreachCallReportModelFilter
                            {
                                Tag               = healthPlan.Tag,
                                DateFrom          = _cutOfDate > fromDate ? _cutOfDate : fromDate,
                                DateTo            = today,
                                CallAttemptFilter = CallAttemptFilterStatus.All,
                            };

                            var filePath = GetOutreachFilePath(healthPlan, today.Year);

                            _callCenterExportableReportHelper.OutreachCallReportExport(filter, filePath, _logger);
                        }
                        else
                        {
                            //for Previous Year
                            fromDate = new DateTime(fromDate.Year, 1, 1);

                            var filter = new OutreachCallReportModelFilter
                            {
                                DateFrom          = _cutOfDate > fromDate ? _cutOfDate : fromDate,
                                DateTo            = new DateTime(fromDate.Year, 12, 31),
                                CallAttemptFilter = CallAttemptFilterStatus.All,
                            };

                            var filePath = GetOutreachFilePath(healthPlan, fromDate.Year);

                            _callCenterExportableReportHelper.OutreachCallReportExport(filter, filePath, _logger);

                            //for current Year
                            fromDate = new DateTime(today.Year, 1, 1);

                            filter = new OutreachCallReportModelFilter
                            {
                                DateFrom          = _cutOfDate > fromDate ? _cutOfDate : fromDate,
                                DateTo            = today,
                                CallAttemptFilter = CallAttemptFilterStatus.All,
                            };

                            filePath = GetOutreachFilePath(healthPlan, fromDate.Year);

                            _callCenterExportableReportHelper.OutreachCallReportExport(filter, filePath, _logger);
                        }
                    }
                    catch (Exception exception)
                    {
                        _logger.Error(string.Format("Exception occured while polling for outreach report for Account Id {0}.  Exception Message : {1}, Stack  Trace {2}", healthPlan.Id, exception.Message, exception.StackTrace));
                    }

                    _logger.Info(string.Format("Polling for Outreach report completed for Account Id {0} ", healthPlan.Id));
                }
            }
            catch (Exception ex)
            {
                _logger.Error(string.Format("Exception occured while polling for outreach report.  Exception Message : {0}, Stack  Trace {1}", ex.Message, ex.StackTrace));
            }
        }
Exemple #11
0
 public ActionResult OutreachCallReport(OutreachCallReportModelFilter filter = null)
 {
     return(CreateExportQueue(filter, ExportableReportType.OutreachCallReport, _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId));
 }