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));
            }
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
        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);
            }
        }