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); }
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); }
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)); } }
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); }
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)); } }
public ActionResult OutreachCallReport(OutreachCallReportModelFilter filter = null) { return(CreateExportQueue(filter, ExportableReportType.OutreachCallReport, _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId)); }