Exemplo n.º 1
0
        public void GetProspectCustomerReturnsNullForNonexistentProspectId()
        {
            const long       nonexistentProspectId = 0;
            ProspectCustomer prospectCustomer      = _prospectCustomerRepository.GetProspectCustomer(nonexistentProspectId);

            Assert.IsNull(prospectCustomer);
        }
Exemplo n.º 2
0
        public SchedulingCustomerEditModel GetforProspectCustomerId(long prospectCustomerId)
        {
            if (prospectCustomerId < 1)
            {
                return(new SchedulingCustomerEditModel());
            }

            var prospectCustomer = _prospectCustomerRepository.GetProspectCustomer(prospectCustomerId);

            if (prospectCustomer == null)
            {
                return(new SchedulingCustomerEditModel());
            }

            if (prospectCustomer.Address != null && !string.IsNullOrEmpty(prospectCustomer.Address.State))
            {
                var state = _stateRepository.GetState(prospectCustomer.Address.State);
                if (state != null)
                {
                    prospectCustomer.Address.StateId = state.Id;
                }
            }

            return(new SchedulingCustomerEditModel
            {
                FullName = new Name(prospectCustomer.FirstName, string.Empty, prospectCustomer.LastName),
                ShippingAddress = prospectCustomer.Address == null ? new AddressEditModel() : Mapper.Map <Address, AddressEditModel>(prospectCustomer.Address),
                HomeNumber = PhoneNumber.ToNumber(prospectCustomer.CallBackPhoneNumber.ToString()),
                Email = prospectCustomer.Email != null?prospectCustomer.Email.ToString() : string.Empty,
                            MarketingSource = prospectCustomer.MarketingSource,
                            Gender = (int)prospectCustomer.Gender,
                            DateofBirth = prospectCustomer.BirthDate
            });
        }
Exemplo n.º 3
0
        public bool UpdateDoNotCallStatus(long prospectCustomerId, bool isDoNotCall)
        {
            var prospectCustomer = _prospectCustomerRepository.GetProspectCustomer(prospectCustomerId);

            if (isDoNotCall)
            {
                if (prospectCustomer.CustomerId.HasValue && prospectCustomer.CustomerId.Value > 0)
                {
                    var customer = _customerRepository.GetCustomer(prospectCustomer.CustomerId.Value);

                    customer.DoNotContactTypeId       = (long)DoNotContactType.DoNotCall;
                    customer.DoNotContactReasonId     = (long)DoNotContactReason.CustomerRequest;
                    customer.DoNotContactUpdateDate   = DateTime.Now;
                    customer.DoNotContactUpdateSource = (long)DoNotContactSource.Manual;

                    _customerService.SaveCustomer(customer, _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId);
                }
                return(_prospectCustomerRepository.UpdateDoNotCallStatus(prospectCustomerId, ProspectCustomerConversionStatus.Declined));
            }

            if (prospectCustomer.CustomerId.HasValue && prospectCustomer.CustomerId.Value > 0)
            {
                var customer = _customerRepository.GetCustomer(prospectCustomer.CustomerId.Value);
                customer.DoNotContactReasonId     = null;
                customer.DoNotContactTypeId       = null;
                customer.DoNotContactUpdateDate   = null;
                customer.DoNotContactUpdateSource = null;

                _customerService.SaveCustomer(customer, _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId);
            }
            return(_prospectCustomerRepository.UpdateDoNotCallStatus(prospectCustomerId, ProspectCustomerConversionStatus.NotConverted));
        }
        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.º 5
0
        public StartOutBoundCallViewModel UpdateDoNotCallStatus([FromUri] long callQueueCustomerId, bool dontCall)
        {
            var callQueueCustomer = _callQueueCustomerRepository.GetById(callQueueCustomerId);

            if (dontCall)
            {
                if (callQueueCustomer.Status == CallQueueStatus.Removed)
                {
                    return new StartOutBoundCallViewModel()
                           {
                               IsRemovedFromQueue = true
                           }
                }
                ;
                if (callQueueCustomer.ProspectCustomerId.HasValue)
                {
                    var prospectCust =
                        _prospectCustomerRepository.GetProspectCustomer(callQueueCustomer.ProspectCustomerId.Value);

                    if (prospectCust.Status == (long)ProspectCustomerConversionStatus.Declined)
                    {
                        return new StartOutBoundCallViewModel()
                               {
                                   IsDoNotCall = true
                               }
                    }
                    ;
                }
                if (callQueueCustomer.CustomerId.HasValue)
                {
                    var customer = _customerRepository.GetCustomer(callQueueCustomer.CustomerId.Value);
                    if (customer.DoNotContactTypeId.HasValue && (customer.DoNotContactTypeId.Value == (long)DoNotContactType.DoNotContact || customer.DoNotContactTypeId == (long)DoNotContactType.DoNotCall))
                    {
                        return(new StartOutBoundCallViewModel()
                        {
                            IsDoNotCall = true
                        });
                    }
                }
                var isLocked = _callQueueCustomerLockRepository.GetCallQueueCustomerLock(callQueueCustomer) != null;
                if (isLocked)
                {
                    return(new StartOutBoundCallViewModel()
                    {
                        CallId = 1L
                    });
                }
            }

            if (dontCall)
            {
                if (callQueueCustomer.ProspectCustomerId.HasValue)
                {
                    _prospectCustomerRepository.UpdateDoNotCallStatus(callQueueCustomer.ProspectCustomerId.Value, ProspectCustomerConversionStatus.Declined);
                }
                if (callQueueCustomer.CustomerId.HasValue)
                {
                    _customerService.UpdateDoNotCallStatus(callQueueCustomer.CustomerId.Value, false, _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId, (long)DoNotContactSource.CallCenter);
                }
            }
            else
            {
                if (callQueueCustomer.ProspectCustomerId.HasValue)
                {
                    _prospectCustomerRepository.UpdateDoNotCallStatus(callQueueCustomer.ProspectCustomerId.Value, ProspectCustomerConversionStatus.NotConverted);
                }
                if (callQueueCustomer.CustomerId.HasValue)
                {
                    _customerService.UpdateDoNotCallStatus(callQueueCustomer.CustomerId.Value, true, _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId);
                }
            }
            return(new StartOutBoundCallViewModel());
        }