Пример #1
0
        public ListModelBase <MemberResultMailedReportViewModel, MemberResultMailedReportFilter> GetMemberResultMailedReport(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords)
        {
            var memberFilter = filter as MemberResultMailedReportFilter;

            var pcpResultMailedFilter = new PcpResultMailedReportModelFilter
            {
                CustomTags = memberFilter.CustomTags,
                ExcludeCustomerWithCustomTag = memberFilter.ExcludeCustomerWithCustomTag,
                DateTo       = memberFilter.DateTo,
                DateFrom     = memberFilter.DateFrom,
                HealthPlanId = memberFilter.HealthPlanId,
                Tag          = memberFilter.Tag
            };
            var shippingDetails = _shippingDetailRepository.GetEventCustomerShippingDetailForFilter(pageNumber, pageSize, pcpResultMailedFilter, memberFilter.ShippingOptions, out totalRecords);

            if (shippingDetails.IsNullOrEmpty())
            {
                return(null);
            }

            var shippingDetailIdEventCustomerIdPairs = _shippingDetailRepository.GetShippingDetailIdEventCustomerIdPairs(shippingDetails.Select(sd => sd.Id).ToArray());
            var addresses      = _addressRepository.GetAddresses(shippingDetails.Select(sd => sd.ShippingAddress.Id).ToList());
            var eventCustomers = _eventCustomerRepository.GetByIds(shippingDetailIdEventCustomerIdPairs.Select(sdec => sdec.SecondValue).ToArray());

            var customers = _customerRepository.GetCustomers(eventCustomers.Select(ec => ec.CustomerId).ToArray());

            return(_memberResultMailedReportFactory.Create(shippingDetails, shippingDetailIdEventCustomerIdPairs, eventCustomers, customers, addresses));
        }
        private void PcpResultMailedReportForCustomerNoTags(CorporateAccount account, DateTime dateFrom, DateTime dateTo, string directoryPath)
        {
            var fileName = string.Format("PCPReport_{0}.csv", dateTo.ToString("yyyyMMdd"));

            var tagToExlude = new List <string>();

            if (!_bcbsMiGapPatinetTags.IsNullOrEmpty())
            {
                tagToExlude.AddRange(_bcbsMiGapPatinetTags);
            }

            if (!_bcbsMiRiskPatientTags.IsNullOrEmpty())
            {
                tagToExlude.AddRange(_bcbsMiRiskPatientTags);
            }

            var filter = new PcpResultMailedReportModelFilter
            {
                DateFrom     = dateFrom,
                DateTo       = dateTo,
                HealthPlanId = account.Id,
                CustomTags   = tagToExlude.ToArray(),
                ExcludeCustomerWithCustomTag = true,
                Tag = account.Tag
            };

            _logger.Info("Generating PCPReport_ for " + account.Tag);

            var dataGen = new ExportableDataGenerator <BcbsMiPcpResultMailedReportModel, PcpResultMailedReportModelFilter>(_bcbsMipcpResultMailedReportService.GetBcbsMiPcpResultMailedResultReport, _logger);

            var model = dataGen.GetData(filter);

            if (model != null && !model.Collection.IsNullOrEmpty())
            {
                var exporter = ExportableDataGeneratorProcessManager <ViewModelBase, ModelFilterBase> .GetCsvExporter <BcbsMiPcpResultMailedReportModel>();

                _logger.Info("Record count" + model.Collection.Count());

                if (File.Exists(directoryPath + fileName))
                {
                    File.Delete(directoryPath + fileName);
                }

                _baseExportableReportHelper.GenerateCsv(directoryPath + fileName, exporter, model.Collection);

                _logger.Info("Destination file " + directoryPath + fileName);
            }
            else
            {
                _logger.Info("No Record Found for Tag" + account.Tag);
            }
            _logger.Info("Completed PCPReport_ for " + account.Tag);
        }
Пример #3
0
        public IEnumerable <ShippingDetail> GetEventCustomerShippingDetailForFilter(int pageNumber, int pageSize, PcpResultMailedReportModelFilter filter, IEnumerable <long> shippingOptions, out int totalRecords)
        {
            using (var adapter = PersistenceLayer.GetDataAccessAdapter())
            {
                var linqMetaData = new LinqMetaData(adapter);


                var query = (from ec in linqMetaData.EventCustomers
                             join ecod in linqMetaData.EventCustomerOrderDetail on ec.EventCustomerId equals ecod.EventCustomerId
                             join sdod in linqMetaData.ShippingDetailOrderDetail on ecod.OrderDetailId equals sdod.OrderDetailId
                             join sd in linqMetaData.ShippingDetail on sdod.ShippingDetailId equals sd.ShippingDetailId
                             join ea in linqMetaData.EventAccount on ec.EventId equals ea.EventId
                             where ec.AppointmentId.HasValue && !ec.NoShow && ec.LeftWithoutScreeningReasonId == null &&
                             ea.AccountId == filter.HealthPlanId &&
                             ecod.IsActive && sdod.IsActive &&
                             sd.ShipmentDate.HasValue &&
                             (sd.Status == (long)ShipmentStatus.Delivered || sd.Status == (long)ShipmentStatus.Shipped) &&
                             (shippingOptions.Contains(sd.ShippingOptionId))

                             select new { ec, sd });

                if (filter.DateFrom.HasValue || filter.DateTo.HasValue)
                {
                    var fromDate = filter.DateFrom.HasValue ? filter.DateFrom.Value.Date : DateTime.Now.Date;
                    var toDate   = filter.DateTo.HasValue ? filter.DateTo.Value.Date.AddDays(1) : DateTime.Now.Date.AddDays(1);

                    query = from q in query
                            where q.sd.ShipmentDate >= fromDate && q.sd.ShipmentDate <= toDate
                            select q;
                }

                if (!string.IsNullOrWhiteSpace(filter.Tag))
                {
                    var customerIds = (from cp in linqMetaData.CustomerProfile where cp.Tag == filter.Tag select cp.CustomerId);

                    query = (from q in query where customerIds.Contains(q.ec.CustomerId) select q);
                }

                if (filter.CustomTags != null && filter.CustomTags.Any())
                {
                    var customTagCustomerIds = (from ct in linqMetaData.CustomerTag
                                                where ct.IsActive && filter.CustomTags.Contains(ct.Tag)
                                                select ct.CustomerId);

                    if (filter.ExcludeCustomerWithCustomTag)
                    {
                        query = (from q in query where !customTagCustomerIds.Contains(q.ec.CustomerId) select q);
                    }
                    else
                    {
                        query = (from q in query where customTagCustomerIds.Contains(q.ec.CustomerId) select q);
                    }
                }

                var queryForShipping = from q in query orderby q.sd.ShipmentDate ascending, q.ec.EventId ascending, q.ec.CustomerId ascending select q.sd;
                totalRecords = queryForShipping.Count();

                var entities = queryForShipping.TakePage(pageNumber, pageSize).ToArray();
                return(Mapper.MapMultiple(entities));
            }
        }