Ejemplo n.º 1
0
 private CustomerInfo GetCustomerInfo(CrosswalkInboundViewModel crosswalkViewModel)
 {
     return(new CustomerInfo
     {
         CustomerId = crosswalkViewModel.CustomerId,
         EventId = crosswalkViewModel.EventId,
         DateSent = DateTime.Now,
         EventDate = crosswalkViewModel.ServiceStartDate,
         FileName = crosswalkViewModel.FileName,
         FileType = (long)ResultFormatType.PDF,
         MemberId = string.IsNullOrEmpty(crosswalkViewModel.ClientId) ? string.Empty : crosswalkViewModel.ClientId
     });
 }
        public List <CrosswalkInboundViewModel> Create(IEnumerable <Customer> customers, IEnumerable <ChaseOutbound> chaseOutbounds, IEnumerable <CustomerChaseCampaign> customerChaseCampaigns, IEnumerable <ChaseCampaign> chaseCampaigns,
                                                       IEnumerable <Relationship> relationships, IEnumerable <EventCustomer> eventCustomers, IEnumerable <EventCustomerResult> eventCustomerResults, IEnumerable <Event> events, CorporateAccount corporateAccount,
                                                       IEnumerable <CustomerEventScreeningTests> customerEventScreeningTests, IEnumerable <OrderedPair <long, long> > customerEventScreeningTestIdFileIdPairs)
        {
            var collection = new List <CrosswalkInboundViewModel>();

            ResultPdfPostedXml resultPosted = null;

            if (!customers.IsNullOrEmpty())
            {
                var resultPostedToPlanFileName = Path.Combine(_settings.ResultPostedToPlanPath, string.Format("ResultPostedto_{0}.xml", corporateAccount.Tag));
                resultPosted = _resultPdfPostedSerializer.Deserialize(resultPostedToPlanFileName);
                resultPosted = resultPosted == null || resultPosted.Customer.IsNullOrEmpty() ? new ResultPdfPostedXml {
                    Customer = new List <CustomerInfo>()
                } : resultPosted;
            }

            foreach (var eventCustomerResult in eventCustomerResults)
            {
                var customer = customers.FirstOrDefault(x => x.CustomerId == eventCustomerResult.CustomerId);
                if (customer == null)
                {
                    continue;
                }

                var theEvent = events.FirstOrDefault(x => x.Id == eventCustomerResult.EventId);
                if (theEvent == null)
                {
                    continue;
                }

                var chaseOutbound = chaseOutbounds.FirstOrDefault(x => x.CustomerId == customer.CustomerId);
                if (chaseOutbound == null)
                {
                    continue;
                }
                var customerChaseCampaign = !customerChaseCampaigns.IsNullOrEmpty() ? customerChaseCampaigns.FirstOrDefault(x => x.CustomerId == customer.CustomerId) : null;
                var campaign = !chaseCampaigns.IsNullOrEmpty() && customerChaseCampaign != null?chaseCampaigns.FirstOrDefault(x => x.Id == customerChaseCampaign.ChaseCampaignId) : null;

                var relationship  = !relationships.IsNullOrEmpty() && chaseOutbound.RelationshipId.HasValue ? relationships.FirstOrDefault(x => x.Id == chaseOutbound.RelationshipId.Value) : null;
                var eventCustomer = eventCustomers.First(x => x.CustomerId == customer.CustomerId);

                var postedPdf = resultPosted.Customer.FirstOrDefault(x => x.CustomerId == eventCustomerResult.CustomerId && x.EventId == eventCustomerResult.EventId);

                /*if (postedPdf != null)
                 * {
                 *  var eventScreeningTests = customerEventScreeningTests.Where(x => x.EventCustomerResultId == eventCustomerResult.Id);
                 *  if (eventScreeningTests.Any())
                 *  {
                 *      if (customerEventScreeningTestIdFileIdPairs.Any(x => eventScreeningTests.Select(est => est.Id).Contains(x.FirstValue)))
                 *          continue;
                 *  }
                 * }*/

                var crosswalkInboundViewModel = new CrosswalkInboundViewModel
                {
                    TenantId             = chaseOutbound.TenantId,
                    ClientId             = chaseOutbound.ClientId,
                    CampaignId           = campaign != null ? campaign.CampaignId : "",
                    IndividualIDNumber   = chaseOutbound.IndividualId,
                    ContractNumber       = chaseOutbound.ContractNumber,
                    ContractPersonNumber = chaseOutbound.ContractPersonNumber,
                    ConsumerId           = chaseOutbound.ConsumerId,
                    ExtractDate          = DateTime.Now,
                    RelationshipCode     = relationship != null ? "\"" + relationship.Code + "\"" : "",
                    LastName             = customer.Name.LastName,
                    FirstName            = customer.Name.FirstName,
                    BirthDate            = customer.DateOfBirth,
                    FileName             = GetResultPdfFileName(chaseOutbound, customer, eventCustomerResult, corporateAccount),
                    ServiceStartDate     = theEvent.EventDate,
                    ServiceEndDate       = theEvent.EventDate,
                    EventId          = eventCustomer.EventId,
                    CustomerId       = eventCustomer.CustomerId,
                    ClientProviderID = "NURSE",
                    ProjectTypeName  = "Wkly Mbr",
                    Npi        = "Dr. Pham",
                    DocumentID = customer.CustomerId.ToString()
                };

                collection.Add(crosswalkInboundViewModel);
            }

            return(collection);
        }