public IEnumerable <long> GetForResponseVendorReport(ResponseVendorReportFilter filter, int pageNumber, int pageSize, out int totalRecords) { using (var adapter = PersistenceLayer.GetDataAccessAdapter()) { var linqMetaData = new LinqMetaData(adapter); var account = filter.AccountId > 0 ? (from a in linqMetaData.Account where a.AccountId == filter.AccountId select a).SingleOrDefault() : null; var query = (from c in linqMetaData.Calls join cp in linqMetaData.CustomerProfile on c.CalledCustomerId equals cp.CustomerId where c.CalledCustomerId.HasValue && c.CalledCustomerId.Value > 0 && (account != null && cp.Tag == account.Tag) && (filter.StartDate == null || c.TimeCreated >= filter.StartDate) && (filter.EndDate == null || c.TimeCreated <= filter.EndDate) && (c.Status != (long)CallStatus.Initiated) orderby cp.CustomerId select cp.CustomerId).Distinct(); if (!filter.CustomTags.IsNullOrEmpty()) { var customTagCustomersIds = (from ct in linqMetaData.CustomerTag where ct.IsActive && filter.CustomTags.Contains(ct.Tag) select ct.CustomerId); query = (from q in query where customTagCustomersIds.Contains(q) select q); } totalRecords = query.Count(); var customerIds = query.Skip((pageNumber - 1) * pageSize).Take(pageSize).ToArray(); return(customerIds); } }
public ListModelBase <InterviewInboundViewModel, InterviewInboundFilter> GetInterviewInboundReportList(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { filter = filter ?? new InterviewInboundFilter(); var interviewInboundFilter = filter as InterviewInboundFilter ?? new InterviewInboundFilter(); var responseVendorReportFilter = new ResponseVendorReportFilter { StartDate = interviewInboundFilter.StartDate, EndDate = interviewInboundFilter.EndDate, AccountId = interviewInboundFilter.AccountId, CustomTags = interviewInboundFilter.CustomTags }; var customerIds = _customerRepository.GetCustomersByCustomTag(responseVendorReportFilter, pageNumber, pageSize, out totalRecords); //var customerIds = _callRepository.GetForInterviewReport(filter as InterviewInboundFilter, pageNumber, pageSize, out totalRecords); if (customerIds.IsNullOrEmpty()) { return(null); } var calls = _callRepository.GetCallsForInterviewReport(filter as InterviewInboundFilter, customerIds); var customers = customerIds.Any() ? _customerRepository.GetCustomers(customerIds.ToArray()) : new List <Customer>(); //var eventCustomers = _eventCustomerRepository.GetEventCustomersByEventIdsCustomerIds(eventIds, customerIds) ?? new List<EventCustomer>(); var eventCustomers = _eventCustomerRepository.GetByEventIdsOrCustomerIds(interviewInboundFilter.StartDate, customerIds) ?? new List <EventCustomer>(); var eventCustomerIds = eventCustomers.Select(x => x.Id); var eventIds = eventCustomers.Select(x => x.EventId).ToArray(); var events = _eventRepository.GetEvents(eventIds); var chaseOutbounds = _chaseOutboundRepository.GetByCustomerIds(customerIds); var customerChaseCampaigns = _chaseCampaignRepository.GetCustomerChaseCampaignsByCustomerIds(customerIds.ToArray()); var chaseCampaignIds = customerChaseCampaigns.Select(x => x.ChaseCampaignId).Distinct(); var chaseCampaigns = _chaseCampaignRepository.GetByIds(chaseCampaignIds); var appointmentIds = eventCustomers.Where(x => x.AppointmentId.HasValue).Select(x => x.AppointmentId.Value); var appointments = _appointmentRepository.GetByIds(appointmentIds); var eventAppointmentCancellatonLogs = _eventAppointmentCancellationLogRepository.GetByEventCustomerIds(eventCustomerIds); var noteIds = eventAppointmentCancellatonLogs.Where(x => x.NoteId.HasValue).Select(x => x.NoteId.Value); var customerCallNotes = _customerCallNotesRepository.GetByIds(noteIds); var eventIdStaffIdPairs = _eventRepository.GetEventStaffPairs(eventIds); var orgRoleUserIds = eventIdStaffIdPairs.Select(x => x.SecondValue).Distinct().ToArray(); var organizationRoleUsers = _organizationRoleUserRepository.GetOrganizationRoleUsers(orgRoleUserIds); var userIds = organizationRoleUsers.Select(x => x.UserId).Distinct().ToList(); var users = _userRepository.GetUsers(userIds); return(_interviewInboundReportFactory.Create(eventCustomers, customers, chaseOutbounds, customerChaseCampaigns, chaseCampaigns, calls, appointments, events, eventAppointmentCancellatonLogs, customerCallNotes, eventIdStaffIdPairs, organizationRoleUsers, users)); }
public IEnumerable <Call> GetCallsForResponseVendorReport(ResponseVendorReportFilter filter, IEnumerable <long> customerIds) { using (var adapter = PersistenceLayer.GetDataAccessAdapter()) { var linqMetaData = new LinqMetaData(adapter); var query = (from c in linqMetaData.Calls where (c.CalledCustomerId.HasValue && c.CalledCustomerId.Value > 0 && customerIds.Contains(c.CalledCustomerId.Value)) && (filter.StartDate == null || c.TimeCreated >= filter.StartDate) && (filter.EndDate == null || c.TimeCreated <= filter.EndDate) && (c.Status != (long)CallStatus.Initiated) select c); return(Mapper.Map <IEnumerable <CallsEntity>, IEnumerable <Call> >(query)); } }
private void GenerateResponseVendorReport(ResponseVendorReportFilter filter) { var dataGen = new ExportableDataGenerator <ResponseVendorReportViewModel, ResponseVendorReportFilter>(_responseVendorReportService.GetResponseVendorReportList, _logger); var model = dataGen.GetData(filter); var account = _corporateAccountRepository.GetById(filter.AccountId); if (model != null && !model.Collection.IsNullOrEmpty()) { var folder = string.Format(_settings.FloridaBlueInboundReportPath, account.Tag, DateTime.Now.ToString("yyyy-MM-dd")); if (!Directory.Exists(folder)) { DirectoryOperationsHelper.CreateDirectory(folder); } var fileName = _pipeDelimitedReportHelper.GetReportName(ReportType.ResponseVendorInbound); if (model.Collection != null && model.Collection.Any()) { _pipeDelimitedReportHelper.Write(model.Collection, folder, fileName + ".txt"); if (_sendReportToSftp) { try { _logger.Info("Sending file to SFTP."); var destinationPath = _destinationSftpPath + "\\" + account.FolderName + "\\Download\\Reports"; SendFilesToSftp(Path.Combine(folder, fileName), destinationPath, fileName); _logger.Info("File sent to SFTP."); } catch (Exception ex) { _logger.Info("Error sending file to SFTP."); _logger.Error("Message : " + ex.Message); _logger.Error("Stack Trace : " + ex.StackTrace); } } } } else { _logger.Info("No record found for " + account.Tag); } }
public void PollForResponseVendorReport() { try { if (DateTime.Today.DayOfWeek != _dayOfWeek) { _logger.Info(string.Format("Today is {0}. Job is set to run on {1}.", DateTime.Today.DayOfWeek, _dayOfWeek)); return; } var accountIds = _settings.FloridaBlueAccountId.Split(','); if (accountIds.IsNullOrEmpty()) { _logger.Info("No accounts found for Response Vendor Report."); return; } _logger.Info("Starting Response Vendor Report generation."); var customSettingFilePath = string.Format(_customSettingFile, ReportType.ResponseVendorInbound); var customSettings = _customSettingManager.Deserialize(customSettingFilePath); var exportToTime = DateTime.Now.AddHours(-1); //var exportFromTime = customSettings.LastTransactionDate.HasValue ? new DateTime(customSettings.LastTransactionDate.Value.Year, 1, 1) : _cutOffDate; //var exportFromTime = new DateTime(DateTime.Now.Year, 1, 1); var exportFromTime = _cutOffDate; foreach (var accountId in accountIds) { _logger.Info("Generating Response Vendor Report for Account ID : " + accountId); var filter = new ResponseVendorReportFilter { StartDate = exportFromTime, EndDate = exportToTime, AccountId = Convert.ToInt32(accountId), CustomTags = _settings.FloridaBlueMedicareCustomTags }; if (filter.AccountId == _settings.FloridaBlueCommercialId) { filter.CustomTags = _settings.FloridaBlueCommercialCustomTags; } else if (filter.AccountId == _settings.FloridaBlueMammoId) { filter.CustomTags = _settings.FloridaBlueMammoCustomTags; } else if (filter.AccountId == _settings.FloridaBlueGapsId) { filter.CustomTags = _settings.FloridaBlueGapsCustomTags; } GenerateResponseVendorReport(filter); customSettings.LastTransactionDate = exportToTime; _customSettingManager.SerializeandSave(customSettingFilePath, customSettings); } _logger.Info("Completed Response Vendor Report generation."); } catch (Exception ex) { _logger.Error("Some error occured while generating Response Vendor Report"); _logger.Error("Exception: " + ex.Message); _logger.Error("Stack Trace: " + ex.StackTrace); } }