Exemplo n.º 1
0
        private ProspectCustomer GetProspectCustomer(long eventCustomerId)
        {
            var eventCustomer = _eventCustomerRepository.GetById(eventCustomerId);

            if (eventCustomer == null)
            {
                return(null);
            }
            var prospectCustomer = _prospectCustomerRepository.GetProspectCustomerByCustomerId(eventCustomer.CustomerId);

            if (prospectCustomer == null)
            {
                var customer = _customerRepository.GetCustomer(eventCustomer.CustomerId);
                prospectCustomer = new ProspectCustomer
                {
                    FirstName           = customer.Name.FirstName,
                    LastName            = customer.Name.LastName,
                    Gender              = customer.Gender,
                    Address             = customer.Address,
                    CallBackPhoneNumber = customer.HomePhoneNumber,
                    Email           = customer.Email,
                    BirthDate       = customer.DateOfBirth,
                    MarketingSource = customer.MarketingSource,
                    CustomerId      = customer.CustomerId,
                    Source          = ProspectCustomerSource.CallCenter
                };
            }
            return(prospectCustomer);
        }
Exemplo n.º 2
0
        public void GetProspectCustomerReturnsNullForNonexistentProspectId()
        {
            const long       nonexistentProspectId = 0;
            ProspectCustomer prospectCustomer      = _prospectCustomerRepository.GetProspectCustomer(nonexistentProspectId);

            Assert.IsNull(prospectCustomer);
        }
Exemplo n.º 3
0
    public ProspectCustomer SaveProspectCustomer(ProspectCustomer prospectCustomer)
    {
        long prospectCustomerId = prospectCustomer.Id;

        if (prospectCustomer.Id > 0 && prospectCustomer.CreatedOn == DateTime.MinValue)
        {
            prospectCustomer.CreatedOn = DateTime.Now;
        }
        prospectCustomer = _uniqueItemRepository.Save(prospectCustomer);

        // If this is a new prospect customer, track this conversion.)
        if (prospectCustomerId == 0)
        {
            long clickId = 0;

            HttpCookie clickIdCookie = Context.Request.Cookies["advertiserClick"];
            if (clickIdCookie != null)
            {
                long.TryParse(clickIdCookie.Value, out clickId);
            }

            // if there's a click ID, save which click caused the conversion to a prospective customer, and their prospect ID
            if (clickId > 0)
            {
                IClickConversionRepository clickConversionRepository = new ClickConversionRepository();
                clickConversionRepository.SaveProspectConversion(clickId, prospectCustomer.Id);
            }
        }
        return(prospectCustomer);
    }
Exemplo n.º 4
0
        private void CreateProspectCustomer()
        {
            var prospectCustomerRepository = IoC.Resolve <IUniqueItemRepository <ProspectCustomer> >();
            var prospectCustomer           = ((IProspectCustomerRepository)prospectCustomerRepository).GetProspectCustomerByCustomerId(CustomerId);

            var customer = CurrentCustomer;

            if (prospectCustomer == null)
            {
                prospectCustomer = new ProspectCustomer
                {
                    FirstName           = customer.Name.FirstName,
                    LastName            = customer.Name.LastName,
                    Gender              = customer.Gender,
                    Address             = customer.Address,
                    CallBackPhoneNumber = customer.HomePhoneNumber,
                    Email           = customer.Email,
                    BirthDate       = customer.DateOfBirth,
                    MarketingSource = customer.MarketingSource,
                    CustomerId      = CustomerId,
                    Source          = ProspectCustomerSource.CallCenter,
                    Tag             = ProspectCustomerTag.Unspecified,
                    CreatedOn       = DateTime.Now,
                    IsConverted     = false,
                    Status          = (long)ProspectCustomerConversionStatus.NotConverted,
                    TagUpdateDate   = DateTime.Now
                };
                prospectCustomerRepository.Save(prospectCustomer);
            }
        }
Exemplo n.º 5
0
        public void GetProspectCustomerReturnsProspectCustomerForExistingProspectId()
        {
            const long testProspectCustomerId = 12732;

            ProspectCustomer prospectCustomer = _prospectCustomerRepository.GetProspectCustomer(testProspectCustomerId);

            Assert.IsNotNull(prospectCustomer);
            Assert.AreEqual("Test", prospectCustomer.FirstName);
            Assert.AreEqual("238382", prospectCustomer.Address.StreetAddressLine1);
        }
Exemplo n.º 6
0
 private ProspectCustomer UpdateProspectCustomer(ProspectCustomer prospectCustomer, DateTime?callDateTime)
 {
     if (callDateTime.HasValue)
     {
         prospectCustomer.CallBackRequestedDate = callDateTime.Value;
         prospectCustomer.CallBackRequestedOn   = DateTime.Now;
         prospectCustomer.IsQueuedForCallBack   = true;
     }
     prospectCustomer = ((IUniqueItemRepository <ProspectCustomer>)_prospectCustomerRepository).Save(prospectCustomer);
     return(prospectCustomer);
 }
Exemplo n.º 7
0
        public bool UpdateCustomerDetails(MedicareCustomerViewModel customerViewModel)
        {
            var customer = _customerRepository.GetCustomer(customerViewModel.Id);

            if (customer == null)
            {
                return(false);
            }
            _medicareFactory.UpdateCustomer(customerViewModel, customer);
            PrepareAddress(customer, customerViewModel);
            //_addressService.SaveAfterSanitizing(customer.Address);
            //_userRepository.SaveUser(customer);

            ProspectCustomer prospectCustomer = _prospectCustomerRepository.GetProspectCustomerByCustomerId(customerViewModel.Id);

            if (prospectCustomer == null)
            {
                return(_customerService.SaveCustomerOnly(customer, customerViewModel.UpdatedBy));
            }
            prospectCustomer.FirstName = customerViewModel.FirstName;
            prospectCustomer.LastName  = customerViewModel.LastName;

            if (customer.Gender > 0)
            {
                prospectCustomer.Gender = customer.Gender;
            }
            prospectCustomer.BirthDate           = customer.DateOfBirth;
            prospectCustomer.Email               = customer.Email;
            prospectCustomer.CallBackPhoneNumber = customer.HomePhoneNumber;

            if (customer.Address != null)
            {
                prospectCustomer.Address.StreetAddressLine1 = customer.Address.StreetAddressLine1;
                prospectCustomer.Address.StreetAddressLine2 = customer.Address.StreetAddressLine2;
                if (customer.Address.StateId > 0)
                {
                    var state = _stateRepository.GetState(customer.Address.StateId);
                    prospectCustomer.Address.State = state.Name;
                }

                if (!string.IsNullOrEmpty(customer.Address.City))
                {
                    prospectCustomer.Address.City = customer.Address.City;
                }
                prospectCustomer.Address.ZipCode = customer.Address.ZipCode;
            }
            ((IUniqueItemRepository <ProspectCustomer>)_prospectCustomerRepository).Save(prospectCustomer);

            return(_customerService.SaveCustomer(customer, customerViewModel.UpdatedBy));
        }
Exemplo n.º 8
0
        private void SaveProspectCustomerNew(ProspectCustomer prospectCustomer)
        {
            if (prospectCustomer != null && !string.IsNullOrEmpty(prospectCustomer.FirstName) && !string.IsNullOrEmpty(prospectCustomer.LastName) && prospectCustomer.CallBackPhoneNumber != null && !string.IsNullOrWhiteSpace(prospectCustomer.CallBackPhoneNumber.ToString()) && prospectCustomer.CallBackPhoneNumber.ToString() != "(___)-___-____")
            {
                var isNewProspectCustomer = prospectCustomer.Id <= 0;
                IUniqueItemRepository <ProspectCustomer> uniqueItemRepository = new ProspectCustomerRepository();
                prospectCustomer          = uniqueItemRepository.Save(prospectCustomer);
                CurrentProspectCustomerId = prospectCustomer.Id;

                if (isNewProspectCustomer && ExistingCallId > 0 && CurrentProspectCustomerId > 0)
                {
                    var callWizardService = new CallCenterCallWizardService();
                    callWizardService.BindCurrentCallToProspectCustomer(ExistingCallId, CurrentProspectCustomerId, IoC.Resolve <ISessionContext>().UserSession.UserId);
                }
            }
        }
Exemplo n.º 9
0
        private bool CheckCustomerUnableToSchedule(ProspectCustomer prospectCustomer, DateTime from, DateTime todDate, CustomerEligibility customerEligibility)
        {
            if (prospectCustomer != null && (prospectCustomer.Tag == ProspectCustomerTag.Deceased))
            {
                return(true);
            }

            if (customerEligibility == null || !customerEligibility.IsEligible.HasValue || !customerEligibility.IsEligible.Value)
            {
                return(true);
            }

            return(prospectCustomer != null && ((prospectCustomer.TagUpdateDate.HasValue && prospectCustomer.TagUpdateDate.Value >= from && prospectCustomer.TagUpdateDate.Value <= todDate) && (prospectCustomer.Tag == ProspectCustomerTag.HomeVisitRequested ||
                                                                                                                                                                                                 prospectCustomer.Tag == ProspectCustomerTag.MobilityIssue ||
                                                                                                                                                                                                 prospectCustomer.Tag == ProspectCustomerTag.NoLongeronInsurancePlan)));
        }
Exemplo n.º 10
0
        private ProspectCustomer SetCallBackPhoneNumber(ProspectCustomer prospectCustomer, Customer customer)
        {
            if (customer.HomePhoneNumber != null && !string.IsNullOrEmpty(customer.HomePhoneNumber.ToString()))
            {
                prospectCustomer.CallBackPhoneNumber = customer.HomePhoneNumber;
            }
            else if (customer.MobilePhoneNumber != null && !string.IsNullOrEmpty(customer.MobilePhoneNumber.ToString()))
            {
                prospectCustomer.CallBackPhoneNumber = customer.MobilePhoneNumber;
            }
            else if (customer.OfficePhoneNumber != null && !string.IsNullOrEmpty(customer.OfficePhoneNumber.ToString()))
            {
                prospectCustomer.CallBackPhoneNumber = customer.OfficePhoneNumber;
            }

            return(prospectCustomer);
        }
Exemplo n.º 11
0
        public CallQueuePatientInfomationViewModel SetProspectCustomerInfo(ProspectCustomer domain)
        {
            var address = domain.Address != null?Mapper.Map <Address, AddressViewModel>(domain.Address) : null;

            var model = new CallQueuePatientInfomationViewModel
            {
                ProspectCustomerId = domain.Id,
                FirstName          = domain.FirstName,
                LastName           = domain.LastName,
                Gender             = domain.Gender,
                DateOfBirth        = domain.BirthDate,
                Email = domain.Email != null?domain.Email.ToString() : string.Empty,
                            AddressViewModel    = address,
                            CallBackPhoneNumber = domain.CallBackPhoneNumber,
            };

            return(model);
        }
Exemplo n.º 12
0
        private void SetProspectCustomerDataToControls()
        {
            var commonCode = new CommonCode();
            ProspectCustomer currentProspectCustomer = null;

            if (CurrentProspectCustomerId > 0)
            {
                var prospectCustomerRepository = IoC.Resolve <IUniqueItemRepository <ProspectCustomer> >();
                currentProspectCustomer   = prospectCustomerRepository.GetById(CurrentProspectCustomerId);
                CurrentProspectCustomerId = currentProspectCustomer.Id;
            }
            if (currentProspectCustomer == null)
            {
                return;
            }

            txtFirstName.Text  = currentProspectCustomer.FirstName;
            txtLastName.Text   = currentProspectCustomer.LastName;
            txtZipCode.Text    = currentProspectCustomer.Address.ZipCode.Zip;
            txtCallBackNo.Text = currentProspectCustomer.CallBackPhoneNumber != null
                                     ? commonCode.FormatPhoneNumber(
                currentProspectCustomer.CallBackPhoneNumber.ToString())
                                     : string.Empty;
        }
Exemplo n.º 13
0
        public CallQueuePatientInfomationViewModel SetCustomerTagInfo(ProspectCustomer domain, CallQueuePatientInfomationViewModel model)
        {
            if (domain == null)
            {
                model.ContactType = CallQueueTypeOfContact.Prospect.GetDescription();
                model.ProspectTag = "Annual Customers";
            }
            else
            {
                if (domain.Tag.GetDescription() == ProspectCustomerTag.OnlineSignup.GetDescription())
                {
                    model.ContactType = CallQueueTypeOfContact.WebProspect.GetDescription();
                }
                else
                {
                    model.ContactType = CallQueueTypeOfContact.Prospect.GetDescription();
                }

                model.ProspectTag = domain.Tag.GetDescription() == ProspectCustomerTag.Unspecified.GetDescription() ? "Annual Customers" : domain.Tag.GetDescription();
            }


            return(model);
        }
Exemplo n.º 14
0
        public ProspectCustomer CreateProspectCustomerFromCustomer(Customer customer, bool isConverted)
        {
            var prospectCustomer = new ProspectCustomer();

            prospectCustomer.IsConverted = isConverted;

            if (!prospectCustomer.IsConverted.Value)
            {
                prospectCustomer.ConvertedOnDate = null;
                prospectCustomer.Status          = (long)ProspectCustomerConversionStatus.NotConverted;
            }

            prospectCustomer.CreatedOn  = DateTime.Now;
            prospectCustomer.CustomerId = customer.CustomerId;
            prospectCustomer.FirstName  = customer.Name.FirstName;
            prospectCustomer.LastName   = customer.Name.LastName;

            prospectCustomer.Gender  = customer.Gender;
            prospectCustomer.Address = customer.Address;

            prospectCustomer.BirthDate  = customer.DateOfBirth;
            prospectCustomer.CustomerId = customer.CustomerId;

            prospectCustomer.PhoneNumber = customer.MobilePhoneNumber;
            prospectCustomer             = SetCallBackPhoneNumber(prospectCustomer, customer);

            prospectCustomer.Email = customer.Email;

            prospectCustomer.Source = ProspectCustomerSource.CallCenter;
            prospectCustomer.Tag    = ProspectCustomerTag.CallCenterSignup;

            prospectCustomer.MarketingSource = customer.MarketingSource;
            prospectCustomer.TagUpdateDate   = DateTime.Now;

            return(prospectCustomer);
        }
Exemplo n.º 15
0
 private bool CheckCustomerRefusal(ProspectCustomer prospectCustomer, DateTime fromDate, DateTime toDateTime)
 {
     return(prospectCustomer != null && prospectCustomer.TagUpdateDate >= fromDate && prospectCustomer.TagUpdateDate <= toDateTime && (prospectCustomer.Tag == ProspectCustomerTag.RecentlySawDoc));
 }
Exemplo n.º 16
0
        private string GetCurrentStatus(Customer customer, IEnumerable <DirectMail> directMails, EventCustomer eventCustomer,
                                        EventVolumeModel eventModel, EventVolumeModel lastScreeningEvent, ProspectCustomer prospectCustomer, DateTime fromDate, DateTime toDate, CustomerEligibility customerEligibility)
        {
            if (eventCustomer != null && eventCustomer.NoShow)
            {
                return(CurrentStatus.NoShow);
            }

            if (eventModel != null && eventModel.EventDate.Date >= DateTime.Today && (eventCustomer != null && eventCustomer.AppointmentId.HasValue))
            {
                return(CurrentStatus.ScheduledFutureAppointment);
            }

            //if (eventModel != null && eventModel.EventDate.Date == DateTime.Today && (eventCustomer != null && eventCustomer.AppointmentId.HasValue))
            //{
            //    return CompletionStatus.ScheduledForToday;
            //}

            if (lastScreeningEvent != null)
            {
                return(CurrentStatus.ScheduledTestingComplete);
            }

            if (eventCustomer != null && !eventCustomer.AppointmentId.HasValue)
            {
                return(CurrentStatus.ScheduledCancelled);
            }

            if (customer.IsIncorrectPhoneNumber)
            {
                return(CurrentStatus.InvalidData);
            }

            if (CheckCustomerUnableToSchedule(prospectCustomer, fromDate, toDate, customerEligibility))
            {
                return(CurrentStatus.UnableToSchedule);
            }

            if (CheckCustomerRefusal(prospectCustomer, fromDate, toDate) || IsCustomerMarkedDonotContact(customer, fromDate, toDate))
            {
                return(CurrentStatus.Refusal);
            }

            if (directMails != null && directMails.Count() > 4)
            {
                var customerDirectMail = directMails.OrderByDescending(dm => dm.MailDate).FirstOrDefault();
                if (customerDirectMail.MailDate.AddDays(28) < DateTime.Today)
                {
                    return(CurrentStatus.Exhausted);
                }
            }

            return(CurrentStatus.InProgress);
        }
Exemplo n.º 17
0
        private void UpdateProspectCustomer()
        {
            var prospectCustomerRepository = IoC.Resolve <IProspectCustomerRepository>();
            var prospectCustomer           = prospectCustomerRepository.GetProspectCustomerByCustomerId(CustomerId);

            if (prospectCustomer != null && RegistrationFlow != null)
            {
                RegistrationFlow.ProspectCustomerId = prospectCustomer.Id;
                return;
            }
            prospectCustomer = new ProspectCustomer();
            ICustomerRepository customerRepository = new CustomerRepository();
            var customer = customerRepository.GetCustomer(CustomerId);

            prospectCustomer.FirstName = customer.Name.FirstName;
            prospectCustomer.LastName  = customer.Name.LastName;

            if (customer.HomePhoneNumber != null && !string.IsNullOrEmpty(customer.HomePhoneNumber.ToString()))
            {
                prospectCustomer.CallBackPhoneNumber = customer.HomePhoneNumber;
            }
            else if (customer.MobilePhoneNumber != null && !string.IsNullOrEmpty(customer.MobilePhoneNumber.ToString()))
            {
                prospectCustomer.CallBackPhoneNumber = customer.MobilePhoneNumber;
            }
            else if (customer.OfficePhoneNumber != null && !string.IsNullOrEmpty(customer.OfficePhoneNumber.ToString()))
            {
                prospectCustomer.CallBackPhoneNumber = customer.OfficePhoneNumber;
            }

            prospectCustomer.Address = new Address
            {
                City               = customer.Address.City,
                Country            = customer.Address.Country,
                State              = customer.Address.State,
                StreetAddressLine1 = customer.Address.StreetAddressLine1,
                StreetAddressLine2 = customer.Address.StreetAddressLine2,
                ZipCode            = new ZipCode {
                    Zip = customer.Address.ZipCode.Zip
                }
            };
            if (customer.DateOfBirth.HasValue)
            {
                prospectCustomer.BirthDate = customer.DateOfBirth.Value.Date;
            }

            if (!string.IsNullOrEmpty(customer.Email.ToString()))
            {
                prospectCustomer.Email = customer.Email;
            }

            prospectCustomer.CustomerId = CustomerId;

            prospectCustomer.Source        = ProspectCustomerSource.CallCenter;
            prospectCustomer.Tag           = ProspectCustomerTag.CallCenterSignup;
            prospectCustomer.TagUpdateDate = DateTime.Now;

            var eventRepository = IoC.Resolve <IEventRepository>();

            prospectCustomer.IsConverted = eventRepository.CheckCustomerRegisteredForFutureEvent(CustomerId);

            if (!prospectCustomer.IsConverted.Value)
            {
                prospectCustomer.ConvertedOnDate = null;
                prospectCustomer.Status          = (long)ProspectCustomerConversionStatus.NotConverted;
                prospectCustomer.CreatedOn       = DateTime.Now;
            }


            IUniqueItemRepository <ProspectCustomer> uniqueItemRepository = new ProspectCustomerRepository();

            prospectCustomer = uniqueItemRepository.Save(prospectCustomer);
            if (RegistrationFlow != null)
            {
                RegistrationFlow.ProspectCustomerId = prospectCustomer.Id;
            }
        }
        private ProspectCustomerFollowupNotificationViewModel GetProspectCustomerFollowupNotificationModel(DateTime todayDate, int maxNumberofRecordstoFetch, int showNoOfRecords, string checkOutUrl, ProspectCustomer prospectCustomer, string message)
        {
            int totalEvents;
            var model = GetEvents(prospectCustomer.Address.ZipCode.Zip, maxNumberofRecordstoFetch, out totalEvents);

            if (totalEvents == 0)
            {
                _logger.Info(string.Format("No event found for {0} on {1} for zip {2} for Prospect Customer [Id: {3}]", message, todayDate.ToShortDateString(), prospectCustomer.Address.ZipCode.Zip, prospectCustomer.Id));
                _logger.Info("\n");
                return(null);
            }

            var events = model.Events.Where(e => e.AvailableSlots > 0).Select(e => e).ToArray().Take(showNoOfRecords);

            if (events.IsNullOrEmpty())
            {
                _logger.Info(string.Format("Event found but no available slot for {0} on {1} for zip {2} for Prospect Customer [Id: {3}]", message, todayDate.ToShortDateString(), prospectCustomer.Address.ZipCode.Zip, prospectCustomer.Id));
                _logger.Info("\n");
                return(null);
            }
            checkOutUrl = checkOutUrl + "?Radius=50&ZipCode=" + prospectCustomer.Address.ZipCode.Zip;
            return(_emailNotificationModelsFactory.GetProspectCustomerFollowupNotificationViewModel(prospectCustomer.FirstName + " " + prospectCustomer.LastName, checkOutUrl, events));
        }
Exemplo n.º 19
0
        private bool UpdateProspectCustomerDisposition(CallUploadLog callUploadLog, ProspectCustomer prospectCustomer, long organizationRoleUserId, long callqueueCustomerId, long callQueueId, long?callStatus, long?prospectCustomerTag, ILogger logger)
        {
            prospectCustomer.IsContacted   = true;
            prospectCustomer.ContactedDate = callUploadLog.OutreachDateTime;

            prospectCustomer.ContactedBy = organizationRoleUserId;
            bool isRemovedFromCallQueue = false;

            if (prospectCustomerTag.HasValue)
            {
                prospectCustomer.Tag           = ((ProspectCustomerTag)prospectCustomerTag);
                prospectCustomer.TagUpdateDate = callUploadLog.OutreachDateTime;
            }

            if (callStatus != null && ((CallStatus)callStatus.Value) == CallStatus.Attended)
            {
                if (prospectCustomerTag.HasValue && IsCustomerDispositionForRemove((ProspectCustomerTag)prospectCustomerTag.Value))
                {
                    _callQueueCustomerRepository.UpdateOtherCustomerAttempt(callqueueCustomerId, callUploadLog.CustomerId, 0, organizationRoleUserId, callUploadLog.OutreachDateTime.Value, true, callQueueId);

                    if (((ProspectCustomerTag)prospectCustomerTag.Value) == ProspectCustomerTag.IncorrectPhoneNumber || ((ProspectCustomerTag)prospectCustomerTag.Value) == ProspectCustomerTag.IncorrectPhoneNumber_TalkedToOthers)
                    {
                        _customerService.UpdateIsIncorrectPhoneNumber(callUploadLog.CustomerId, true, organizationRoleUserId);
                    }

                    if (((ProspectCustomerTag)prospectCustomerTag.Value) == ProspectCustomerTag.NotEligible)
                    {
                        var        customer   = _customerRepository.GetCustomer(callUploadLog.CustomerId);
                        const bool isEligible = false;
                        _customerService.SaveCustomerOnly(customer, organizationRoleUserId);
                        //always save eligibility after saving customer , because history is maintained by SaveCustomer/SaveCustomerOnly function.
                        _customerEligibilityService.Save(customer.CustomerId, DateTime.Now.Year, isEligible: isEligible, createdBy: organizationRoleUserId, logger: logger);
                    }

                    prospectCustomer.CallBackRequestedDate = null;
                    prospectCustomer.IsQueuedForCallBack   = false;

                    isRemovedFromCallQueue = true;
                }
                else if (prospectCustomerTag.HasValue && ((ProspectCustomerTag)prospectCustomerTag.Value) == ProspectCustomerTag.LanguageBarrier)
                {
                    _customerService.UpdateIsLanguageBarrier(callUploadLog.CustomerId, true, organizationRoleUserId);

                    prospectCustomer.CallBackRequestedDate = null;
                    prospectCustomer.IsQueuedForCallBack   = false;
                }
            }
            else if (callStatus != null && ((((CallStatus)callStatus.Value) == CallStatus.IncorrectPhoneNumber) || ((((CallStatus)callStatus.Value) == CallStatus.TalkedtoOtherPerson) && ((ProspectCustomerTag)prospectCustomerTag.Value) == ProspectCustomerTag.IncorrectPhoneNumber_TalkedToOthers)))
            {
                _customerService.UpdateIsIncorrectPhoneNumber(callUploadLog.CustomerId, true, organizationRoleUserId);

                _callQueueCustomerRepository.UpdateOtherCustomerAttempt(callqueueCustomerId, callUploadLog.CustomerId, 0, organizationRoleUserId, callUploadLog.OutreachDateTime.Value, true, callQueueId);
                prospectCustomer.CallBackRequestedDate = null;
                prospectCustomer.IsQueuedForCallBack   = false;
                isRemovedFromCallQueue = true;
            }
            else if (callStatus != null && ((((CallStatus)callStatus.Value) == CallStatus.TalkedtoOtherPerson && (prospectCustomerTag.HasValue && IsCustomerDispositionForRemove((ProspectCustomerTag)prospectCustomerTag.Value)))))
            {
                _customerService.UpdateIsIncorrectPhoneNumber(callUploadLog.CustomerId, true, organizationRoleUserId);
                isRemovedFromCallQueue = true;
            }

            ((IUniqueItemRepository <ProspectCustomer>)_prospectCustomerRepository).Save(prospectCustomer);

            return(isRemovedFromCallQueue);
        }
Exemplo n.º 20
0
        private OutboundCallQueueViewModel OutboundCallQueueViewModel(CallQueueCustomer cqc, Customer customer, ProspectCustomer prospectCustomer, string email, PhoneNumber mobilePhoneNumber, PhoneNumber officePhoneNumber, Event theEvent, Host host, AddressViewModel eventLocation, string customTags)
        {
            var outboundModel = new OutboundCallQueueViewModel
            {
                CallQueueCustomerId = cqc.Id,
                ProspectCustomerId  = cqc.ProspectCustomerId,
                CustomerId          = cqc.CustomerId,
                FirstName           = customer != null ? customer.Name.FirstName : prospectCustomer.FirstName,
                MiddleName          = customer != null ? customer.Name.MiddleName : "",
                LastName            = customer != null ? customer.Name.LastName : prospectCustomer.LastName,
                Gender = customer != null ? customer.Gender : prospectCustomer.Gender,
                Email  = email,
                CallBackPhoneNumber = customer != null ? customer.HomePhoneNumber : prospectCustomer.CallBackPhoneNumber,
                MobilePhoneNumber   = mobilePhoneNumber,
                OfficePhoneNumber   = officePhoneNumber,
                DateOfBirth         = customer != null ? customer.DateOfBirth : prospectCustomer.BirthDate,
                CreatedOn           = cqc.DateCreated,
                ProspectCreatedOn   =
                    prospectCustomer != null && prospectCustomer.CreatedOn != DateTime.MinValue
                         ? prospectCustomer.CreatedOn
                         : (DateTime?)null,
                EventId                                                             = theEvent != null ? theEvent.Id : (long?)null,
                EventDate                                                           = theEvent != null ? theEvent.EventDate : (DateTime?)null,
                HostName                                                            = host != null ? host.OrganizationName : string.Empty,
                EventLocation                                                       = eventLocation,
                Tag                                                                 = prospectCustomer != null?prospectCustomer.Tag.GetDescription() : string.Empty,
                                                          ZipCode                   = customer != null ? customer.Address.ZipCode.Zip : prospectCustomer.Address.ZipCode.Zip,
                                                          IsDoNotCallCustomer       = (prospectCustomer != null && prospectCustomer.Status == (long)ProspectCustomerConversionStatus.Declined) || (customer != null && customer.DoNotContactTypeId.HasValue && (customer.DoNotContactTypeId.Value == (long)DoNotContactType.DoNotContact || customer.DoNotContactTypeId.Value == (long)DoNotContactType.DoNotCall)), //customer.DoNotContactReasonId != null
                                                          RequestedCallBackDateTime = prospectCustomer != null && prospectCustomer.IsQueuedForCallBack ? prospectCustomer.CallBackRequestedDate : (DateTime?)null,
                                                          CustomCorporateTags       = customTags
            };

            return(outboundModel);
        }
        public bool UpdateCustomerData(CallQueueCustomerEditModel model, long createdByOrgRoleUserId)
        {
            if (model.CustomerId > 0)
            {
                var customer = _customerRepository.GetCustomer(model.CustomerId);
                var previousIncorrectPhoneNumberStatus = customer.IsIncorrectPhoneNumber;

                customer.Name.FirstName = model.FirstName;
                customer.Name.LastName  = model.LastName;
                var address = _addressService.SaveAfterSanitizing(Mapper.Map <AddressEditModel, Address>(model.Address));

                if (customer.Address != null && customer.Address.Id > 0)
                {
                    address.Id = customer.Address.Id;
                }
                customer.Address = address;

                string officePhoneNumber = PhoneNumber.Create(model.OfficePhoneNumber, PhoneNumberType.Office).ToString();
                string mobilePhoneNumber = PhoneNumber.Create(model.MobilePhoneNumber, PhoneNumberType.Mobile).ToString();
                string homePhoneNumber   = PhoneNumber.Create(model.CallBackPhoneNumber, PhoneNumberType.Home).ToString();

                if ((customer.OfficePhoneNumber != null && customer.OfficePhoneNumber.ToString() != officePhoneNumber) ||
                    (customer.MobilePhoneNumber != null && customer.MobilePhoneNumber.ToString() != mobilePhoneNumber) ||
                    (customer.HomePhoneNumber != null && customer.HomePhoneNumber.ToString() != homePhoneNumber))
                {
                    customer.IsIncorrectPhoneNumber         = false;
                    customer.IncorrectPhoneNumberMarkedDate = null;
                }

                var currentIncorrectPhoneNumberStatus = customer.IsIncorrectPhoneNumber;

                customer.OfficePhoneNumber = PhoneNumber.Create(model.OfficePhoneNumber, PhoneNumberType.Office);
                customer.MobilePhoneNumber = PhoneNumber.Create(model.MobilePhoneNumber, PhoneNumberType.Mobile);
                customer.HomePhoneNumber   = PhoneNumber.Create(model.CallBackPhoneNumber, PhoneNumberType.Home);

                customer.Hicn = model.Hicn;
                customer.Mbi  = model.Mbi;

                customer.InsuranceId = model.MemberId;
                //customer.IsEligible = model.EligibleStatus;
                customer.ActivityId = model.ActivityId > 0 ? model.ActivityId : (long?)null;

                customer.Email = null;
                if (!string.IsNullOrEmpty(model.Email))
                {
                    customer.Email = new Email(model.Email);
                }

                //else if (!string.IsNullOrEmpty(customer.Email.ToString()) && string.IsNullOrEmpty(model.Email))
                //{
                //    customer.Email = null;
                //}

                customer.AlternateEmail = null;

                if (!string.IsNullOrEmpty(model.AlternateEmail))
                {
                    customer.AlternateEmail = new Email(model.AlternateEmail);
                }


                customer.DateOfBirth = model.DateOfBirth;

                customer.Gender      = (Gender)model.Gender;
                customer.EnableEmail = model.EnableEmail;

                _customerService.SaveCustomer(customer, createdByOrgRoleUserId);

                if (previousIncorrectPhoneNumberStatus && !currentIncorrectPhoneNumberStatus)
                {
                    _customerNotesService.SavePhoneNumberUpdatedMessage(customer.CustomerId, createdByOrgRoleUserId);
                }
            }

            ProspectCustomer prospectCustomer = null;

            if (model.ProspectCustomerId > 0)
            {
                prospectCustomer = _prospectCustomerRepository.GetProspectCustomer(model.ProspectCustomerId);
            }
            else if (model.CustomerId > 0)
            {
                prospectCustomer = _prospectCustomerRepository.GetProspectCustomerByCustomerId(model.CustomerId);
            }

            if (prospectCustomer == null)
            {
                return(true);
            }

            prospectCustomer.FirstName = model.FirstName;
            prospectCustomer.LastName  = model.LastName;

            if (model.Gender > 0)
            {
                prospectCustomer.Gender = (Gender)model.Gender;
            }
            prospectCustomer.BirthDate = model.DateOfBirth;

            prospectCustomer.Email = string.IsNullOrEmpty(model.Email) ? null : new Email(model.Email);

            prospectCustomer.CallBackPhoneNumber = PhoneNumber.Create(model.CallBackPhoneNumber, PhoneNumberType.Home);

            if (model.Address != null)
            {
                prospectCustomer.Address.StreetAddressLine1 = model.Address.StreetAddressLine1;
                prospectCustomer.Address.StreetAddressLine2 = model.Address.StreetAddressLine2;
                if (model.Address.StateId > 0)
                {
                    var state = _stateRepository.GetState(model.Address.StateId);
                    prospectCustomer.Address.State = state.Name;
                }

                if (!string.IsNullOrEmpty(model.Address.City))
                {
                    prospectCustomer.Address.City = model.Address.City;
                }
                prospectCustomer.Address.ZipCode = new ZipCode(model.Address.ZipCode);
            }

            ((IUniqueItemRepository <ProspectCustomer>)_prospectCustomerRepository).Save(prospectCustomer);

            return(true);
        }
Exemplo n.º 22
0
        public OutboundCallQueueListModel Create(IEnumerable <CallQueueCustomer> callQueueCustomers, IEnumerable <Customer> customers, IEnumerable <ProspectCustomer> prospectCustomers,
                                                 IEnumerable <CallQueueCriteria> callQueueCriterias, IEnumerable <Criteria> criterias, IEnumerable <CallQueueCustomerCall> callQueueCustomerCalls, IEnumerable <Call> calls,
                                                 IEnumerable <CallCenterNotes> callCenterNoteses, IEnumerable <CustomerCallNotes> customerCallNotes, IEnumerable <OrderedPair <long, string> > idNamePair)
        {
            var model      = new OutboundCallQueueListModel();
            var collection = new List <OutboundCallQueueViewModel>();

            callQueueCustomers.ToList().ForEach(cqc =>
            {
                Customer customer    = null;
                var prospectCustomer = new ProspectCustomer();

                if (cqc.CustomerId.HasValue)
                {
                    customer = customers.FirstOrDefault(c => c.CustomerId == cqc.CustomerId.Value);
                }

                if (cqc.ProspectCustomerId > 0)
                {
                    prospectCustomer = prospectCustomers.First(pc => pc.Id == cqc.ProspectCustomerId);
                }

                CallQueueCriteria callQueueCriteria = null;
                var callReason = string.Empty;

                if (callQueueCriterias != null && callQueueCriterias.Any() && criterias != null && criterias.Any())
                {
                    if (cqc.CallQueueCriteriaId.HasValue && cqc.CallQueueCriteriaId.Value > 0)
                    {
                        callQueueCriteria = callQueueCriterias.Single(cqcs => cqcs.Id == cqc.CallQueueCriteriaId.Value);
                    }
                    if (callQueueCriteria != null)
                    {
                        var criteria = criterias.Single(c => c.Id == callQueueCriteria.CriteriaId);

                        callReason = criteria.Name;

                        if (callQueueCriteria.CriteriaId == (long)QueueCriteria.AllProspects)
                        {
                            callReason = prospectCustomer.Tag.GetDescription();
                        }
                    }
                }

                var prospectNotes             = _notesViewModelFactory.GetProspectCustomerNotes(cqc.ProspectCustomerId ?? 0, customerCallNotes, idNamePair);
                var email                     = string.Empty;
                PhoneNumber mobilePhoneNumber = null;
                PhoneNumber officePhoneNumber = null;

                if (customer != null)
                {
                    email             = (customer.Email != null) ? customer.Email.ToString() : string.Empty;
                    mobilePhoneNumber = customer.OfficePhoneNumber;
                    officePhoneNumber = customer.MobilePhoneNumber;
                }
                else
                {
                    email = prospectCustomer.Email != null ? prospectCustomer.Email.ToString() : string.Empty;
                }

                var outboundModel = new OutboundCallQueueViewModel
                {
                    CallQueueCustomerId = cqc.Id,
                    ProspectCustomerId  = cqc.ProspectCustomerId,
                    CustomerId          = cqc.CustomerId,
                    FirstName           = customer != null ? customer.Name.FirstName : prospectCustomer.FirstName,
                    MiddleName          = customer != null ? customer.Name.MiddleName : "",
                    LastName            = customer != null ? customer.Name.LastName : prospectCustomer.LastName,
                    Gender = customer != null ? customer.Gender : prospectCustomer.Gender,
                    Email  = email,
                    CallBackPhoneNumber = customer != null ? customer.HomePhoneNumber : prospectCustomer.CallBackPhoneNumber,
                    MobilePhoneNumber   = mobilePhoneNumber,
                    OfficePhoneNumber   = officePhoneNumber,
                    DateOfBirth         = customer != null ? customer.DateOfBirth : prospectCustomer.BirthDate,
                    CreatedOn           = cqc.DateCreated,
                    CallReason          = callReason,
                    Notes             = prospectNotes,
                    ProspectCreatedOn = prospectCustomer != null && prospectCustomer.CreatedOn != DateTime.MinValue ? prospectCustomer.CreatedOn : (DateTime?)null,
                };

                if (callQueueCustomerCalls != null && callQueueCustomerCalls.Any())
                {
                    var callIds = callQueueCustomerCalls.Where(cqcc => cqcc.CallQueueCustomerId == cqc.Id).Select(cqcc => cqcc.CallId).ToArray();
                    if (callIds.Any())
                    {
                        var customerCalls   = calls.Where(c => callIds.Contains(c.Id)).Select(c => c);
                        var callHistoryList = new List <CallHistoryViewModel>();
                        foreach (var customerCall in customerCalls)
                        {
                            var callHistory = new CallHistoryViewModel()
                            {
                                CallId      = customerCall.Id,
                                DateCreated = customerCall.CallDateTime
                            };

                            if (callCenterNoteses != null && callCenterNoteses.Any())
                            {
                                var customerNotes = callCenterNoteses.Where(ccn => ccn.CallId == customerCall.Id).Select(ccn => ccn).ToArray();
                                callHistory.Notes = customerNotes.Select(cn => new NotesViewModel()
                                {
                                    Note = cn.Notes, EnteredOn = cn.DateCreated
                                });
                            }

                            callHistoryList.Add(callHistory);
                        }

                        outboundModel.CallHistory = callHistoryList;
                    }
                }

                collection.Add(outboundModel);
            });

            model.OutboundCallQueues = collection;
            return(model);
        }
        private CallQueueCustomer CreateCustomerCallQueueCustomerModel(CallQueueCustomer existingCallQueueCustomer, CallQueueCustomer callQueueCustomer, Customer customer,
                                                                       IEnumerable <Call> customerCalls, int callAttempts, Appointment futureAppointment, ProspectCustomer prospectCustomer, EventAppointmentCancellationLog eacl,
                                                                       bool isConfirmationCallQueue, CustomerEligibility customerEligibility, IEnumerable <EventCustomer> eventCustomers, CustomerTargeted customerTargeted)
        {
            var lastCall = (from cc in customerCalls
                            where cc.Status != (long)CallStatus.CallSkipped &&
                            (isConfirmationCallQueue == false || cc.CallQueueId == callQueueCustomer.CallQueueId)
                            orderby cc.DateCreated descending
                            select cc).FirstOrDefault();

            if (existingCallQueueCustomer == null)
            {
                existingCallQueueCustomer             = callQueueCustomer;
                existingCallQueueCustomer.DateCreated = DateTime.Now;
                existingCallQueueCustomer.CallDate    = DateTime.Now;
            }
            else
            {
                existingCallQueueCustomer.CallDate = DateTime.Now;
            }

            existingCallQueueCustomer.IsActive = true;
            existingCallQueueCustomer.Status   = CallQueueStatus.Initial;

            existingCallQueueCustomer.FirstName  = customer.Name.FirstName;
            existingCallQueueCustomer.LastName   = customer.Name.LastName;
            existingCallQueueCustomer.MiddleName = customer.Name.MiddleName;

            existingCallQueueCustomer.PhoneHome   = customer.HomePhoneNumber;
            existingCallQueueCustomer.PhoneCell   = customer.MobilePhoneNumber;
            existingCallQueueCustomer.PhoneOffice = customer.OfficePhoneNumber;

            existingCallQueueCustomer.ZipId     = customer.Address.ZipCode.Id;
            existingCallQueueCustomer.ZipCode   = customer.Address.ZipCode.Zip;
            existingCallQueueCustomer.Tag       = customer.Tag;
            existingCallQueueCustomer.IsEligble = customerEligibility != null ? customerEligibility.IsEligible : null;
            existingCallQueueCustomer.IsIncorrectPhoneNumber = customer.IsIncorrectPhoneNumber;
            existingCallQueueCustomer.IsLanguageBarrier      = customer.IsLanguageBarrier;
            existingCallQueueCustomer.ActivityId             = customer.ActivityId;
            existingCallQueueCustomer.DoNotContactTypeId     = customer.DoNotContactTypeId;
            existingCallQueueCustomer.DoNotContactUpdateDate = customer.DoNotContactUpdateDate;

            existingCallQueueCustomer.AppointmentDate = futureAppointment != null ? futureAppointment.StartTime : (DateTime?)null;
            existingCallQueueCustomer.NoShowDate      = futureAppointment == null ? (eventCustomers.Any() ? eventCustomers.OrderByDescending(x => x.NoShowDate).First().NoShowDate : null) : null;

            if (!isConfirmationCallQueue)
            {
                existingCallQueueCustomer.CallCount = customerCalls.Count(x => x.IsContacted.HasValue && x.IsContacted.Value);
                existingCallQueueCustomer.Attempts  = callAttempts;

                existingCallQueueCustomer.CallStatus  = lastCall != null ? lastCall.Status : (long?)null;
                existingCallQueueCustomer.Disposition = lastCall != null ? lastCall.Disposition : string.Empty;
            }
            //confirm call queue - called then registered for another event, and queue regenerated
            existingCallQueueCustomer.ContactedDate = lastCall != null ? lastCall.DateCreated : (DateTime?)null;

            existingCallQueueCustomer.CallBackRequestedDate = null;
            if (prospectCustomer != null && lastCall != null && lastCall.Status == (long)CallStatus.Attended && lastCall.Disposition == ProspectCustomerTag.CallBackLater.ToString())
            {
                existingCallQueueCustomer.CallBackRequestedDate = prospectCustomer.CallBackRequestedDate;
            }

            existingCallQueueCustomer.AppointmentCancellationDate = (DateTime?)null;
            if (eacl != null && (lastCall == null || lastCall.DateCreated < eacl.DateCreated))
            {
                existingCallQueueCustomer.AppointmentCancellationDate = eacl.DateCreated;
            }

            existingCallQueueCustomer.DoNotContactUpdateSource       = customer.DoNotContactUpdateSource;
            existingCallQueueCustomer.LanguageBarrierMarkedDate      = customer.LanguageBarrierMarkedDate;
            existingCallQueueCustomer.IncorrectPhoneNumberMarkedDate = customer.IncorrectPhoneNumberMarkedDate;
            existingCallQueueCustomer.LanguageId = customer.LanguageId;

            if (customerTargeted != null)
            {
                existingCallQueueCustomer.TargetedYear = customerTargeted.ForYear;
                existingCallQueueCustomer.IsTargeted   = customerTargeted.IsTargated;
            }

            existingCallQueueCustomer.ProductTypeId = customer.ProductTypeId;

            return(existingCallQueueCustomer);
        }
Exemplo n.º 24
0
        private void SetProspectCustomer()
        {
            long?sourceCodeId = null;

            if (!string.IsNullOrEmpty(txtSourceCode.Text))
            {
                ISourceCodeRepository sourceCodeRepository = new SourceCodeRepository();
                try
                {
                    var sourceCode = sourceCodeRepository.GetSourceCodeByCode(txtSourceCode.Text);
                    if (sourceCode != null)
                    {
                        sourceCodeId = sourceCode.Id;
                    }
                }
                catch
                {
                    sourceCodeId = null;
                }
            }

            var commonCode  = new CommonCode();
            var phoneNumber = commonCode.FormatPhoneNumber(txtCallBackNo.Text);
            ProspectCustomer prospectCustomer = null;

            if (CurrentProspectCustomerId > 0)
            {
                var proecpectCustomerRepository = IoC.Resolve <IProspectCustomerRepository>();
                prospectCustomer = proecpectCustomerRepository.GetProspectCustomer(CurrentProspectCustomerId);
            }
            else
            {
                prospectCustomer = new ProspectCustomer
                {
                    FirstName = txtFirstName.Text,
                    LastName  = txtLastName.Text,
                    Address   = new Address {
                        ZipCode = new ZipCode {
                            Zip = txtZipCode.Text
                        }
                    },
                    Source        = ProspectCustomerSource.CallCenter,
                    Tag           = ProspectCustomerTag.CallCenterSignup,
                    TagUpdateDate = DateTime.Now
                                    //SourceCodeId = sourceCodeId
                };
            }
            if (!string.IsNullOrEmpty(phoneNumber))
            {
                prospectCustomer.CallBackPhoneNumber = new PhoneNumber
                {
                    PhoneNumberType = PhoneNumberType.Unknown,
                    Number          =
                        phoneNumber.Substring(3,
                                              phoneNumber.Length - 3),
                    AreaCode = phoneNumber.Substring(0, 3)
                };
            }
            if (ViewState["IncomingPhoneLine"] != null && !string.IsNullOrEmpty(ViewState["IncomingPhoneLine"].ToString()))
            {
                var incomingPhoneNumber = ViewState["IncomingPhoneLine"].ToString();
                prospectCustomer.PhoneNumber = new PhoneNumber
                {
                    PhoneNumberType = PhoneNumberType.Unknown,
                    Number          =
                        incomingPhoneNumber.Substring(3,
                                                      incomingPhoneNumber
                                                      .Length - 3),
                    AreaCode = incomingPhoneNumber.Substring(0, 3)
                };
            }

            SaveProspectCustomerNew(prospectCustomer);
        }
Exemplo n.º 25
0
        public OutboundCallQueueListModel SystemGeneratedCallQueueCustomers(IEnumerable <CallQueueCustomer> callQueueCustomers, IEnumerable <Customer> customers, IEnumerable <ProspectCustomer> prospectCustomers,
                                                                            IEnumerable <CallQueueCustomerCallViewModel> callQueueCustomerCalls, IEnumerable <CallCenterNotes> callCenterNoteses, IEnumerable <Event> events, IEnumerable <Host> hosts, IEnumerable <CorporateCustomerCustomTag> corporateCustomerCustomTags)
        {
            var model      = new OutboundCallQueueListModel();
            var collection = new List <OutboundCallQueueViewModel>();

            callQueueCustomers.ToList().ForEach(cqc =>
            {
                Customer customer    = null;
                var prospectCustomer = new ProspectCustomer();

                if (cqc.CustomerId.HasValue)
                {
                    customer = customers.FirstOrDefault(c => c.CustomerId == cqc.CustomerId.Value);
                }

                if (cqc.ProspectCustomerId > 0)
                {
                    prospectCustomer = prospectCustomers.First(pc => pc.Id == cqc.ProspectCustomerId);
                }


                var email = string.Empty;
                PhoneNumber mobilePhoneNumber = null;
                PhoneNumber officePhoneNumber = null;

                if (customer != null)
                {
                    email             = (customer.Email != null) ? customer.Email.ToString() : string.Empty;
                    mobilePhoneNumber = customer.MobilePhoneNumber;
                    officePhoneNumber = customer.OfficePhoneNumber;
                }
                else
                {
                    email = prospectCustomer.Email != null ? prospectCustomer.Email.ToString() : string.Empty;
                }

                Event theEvent = null;
                Host host      = null;
                AddressViewModel eventLocation = null;
                var customTags = string.Empty;
                if (corporateCustomerCustomTags != null && corporateCustomerCustomTags.Any() && cqc.CustomerId.HasValue)
                {
                    var tags = corporateCustomerCustomTags.Where(x => x.CustomerId == cqc.CustomerId.Value).OrderByDescending(x => x.DataRecorderMetaData.DateCreated);

                    if (tags != null && tags.Any())
                    {
                        customTags = string.Join(",", tags.Select(x => x.Tag));
                    }
                }

                if (events != null && cqc.EventId.HasValue && events.Any(e => e.Id == cqc.EventId.Value))
                {
                    theEvent      = events.First(e => e.Id == cqc.EventId.Value);
                    host          = hosts.Single(h => h.Id == theEvent.HostId);
                    eventLocation = Mapper.Map <Address, AddressViewModel>(host.Address);
                }

                var outboundModel = OutboundCallQueueViewModel(cqc, customer, prospectCustomer, email, mobilePhoneNumber, officePhoneNumber, theEvent, host, eventLocation, customTags);

                SetHistoryViewModelList(callQueueCustomerCalls, callCenterNoteses, cqc, outboundModel);

                collection.Add(outboundModel);
            });

            model.OutboundCallQueues = collection;
            model.IsQueueGenerated   = true;
            return(model);
        }
Exemplo n.º 26
0
        public bool ApplyRuleEngine(CallUploadLog callUploadLog, IEnumerable <Call> calls, ProspectCustomer prospectCustomer, long organizationRoleUserId, long callqueueCustomerId, long callQueueId, out bool isRemovedFromCallQueue, ILogger logger)
        {
            isRemovedFromCallQueue = false;
            if (_callQueueCustomerLockRepository.CheckCustomerLockByCustomerId(callUploadLog.CustomerId))
            {
                return(false);
            }

            long?callStatus = GetCallStatus(callUploadLog.Outcome);

            long?prospectCustomerTag = GetProspectCustomerTag(callUploadLog.Disposition);

            if (calls.IsNullOrEmpty())
            {
                isRemovedFromCallQueue = UpdateProspectCustomerDisposition(callUploadLog, prospectCustomer, organizationRoleUserId, callqueueCustomerId, callQueueId, callStatus, prospectCustomerTag, logger);
            }
            else
            {
                if (callStatus.Value == (long)CallStatus.Attended || callStatus.Value == (long)CallStatus.IncorrectPhoneNumber || (callStatus.Value == (long)CallStatus.TalkedtoOtherPerson && ((ProspectCustomerTag)prospectCustomerTag.Value) == ProspectCustomerTag.IncorrectPhoneNumber_TalkedToOthers))
                {
                    var callMadeAfterUploadCall = calls.OrderByDescending(x => x.DateCreated).FirstOrDefault(x => x.DateCreated > callUploadLog.OutreachDateTime);

                    if (callMadeAfterUploadCall == null || callMadeAfterUploadCall.Status != (long)CallStatus.Attended)
                    {
                        isRemovedFromCallQueue = UpdateProspectCustomerDisposition(callUploadLog, prospectCustomer, organizationRoleUserId, callqueueCustomerId, callQueueId, callStatus, prospectCustomerTag, logger);
                    }
                }
            }

            return(true);
        }