コード例 #1
0
        public CallQueueCustomerLock SaveCallQueueCustomerLock(CallQueueCustomerLock callQueueCustomerLock)
        {
            using (var adapter = PersistenceLayer.GetDataAccessAdapter())
            {
                var entity = Mapper.Map <CallQueueCustomerLock, CallQueueCustomerLockEntity>(callQueueCustomerLock);

                if (!adapter.SaveEntity(entity, true))
                {
                    throw new PersistenceFailureException();
                }

                return(Mapper.Map <CallQueueCustomerLockEntity, CallQueueCustomerLock>(entity));
            }
        }
コード例 #2
0
        public bool LockCallQueueCustomer([FromUri] long callQueueCustomerId)
        {
            var customer = _callQueueCustomerRepository.GetById(callQueueCustomerId);
            var domain   = new CallQueueCustomerLock
            {
                CallQueueCustomerId = customer.Id,
                CustomerId          = customer.CustomerId,
                ProspectCustomerId  = customer.ProspectCustomerId,
                CreatedBy           = 1,
                CreatedOn           = DateTime.Now
            };

            _callQueueCustomerLockRepository.SaveCallQueueCustomerLock(domain);

            return(true);
        }
コード例 #3
0
        public void UpdateCallQueueCustomerLock(CallQueueCustomerLock callQueueCustomerLock)
        {
            using (var adapter = PersistenceLayer.GetDataAccessAdapter())
            {
                var callQueueCustomerLockEntity = new CallQueueCustomerLockEntity()
                {
                    CreatedOn = DateTime.Now
                };
                var bucket = new RelationPredicateBucket(CallQueueCustomerLockFields.CallQueueCustomerId == callQueueCustomerLock.CallQueueCustomerId);

                if (adapter.UpdateEntitiesDirectly(callQueueCustomerLockEntity, bucket) == 0)
                {
                    SaveCallQueueCustomerLock(callQueueCustomerLock);
                }
            }
        }
コード例 #4
0
        private CustomerCallQueueCallAttempt SetCustomerCallQueueAttempt(CallQueueCustomer callQueueCustomer)
        {
            try
            {
                var lockedCustomer = _callQueueCustomerLockRepository.GetCallQueueCustomerLock(callQueueCustomer);

                if (lockedCustomer != null)
                {
                    return(null);
                }

                var prospectCustomer = _prospectCustomerRepository.GetProspectCustomerByCustomerId(callQueueCustomer.CustomerId.Value);

                Customer customer = null;
                if (prospectCustomer == null)
                {
                    customer = _customerRepository.GetCustomer(callQueueCustomer.CustomerId.Value);
                }

                using (var scope = new TransactionScope())
                {
                    //lock customer in call queue so that other agent not be able to call them;
                    var domain = new CallQueueCustomerLock
                    {
                        CallQueueCustomerId = callQueueCustomer.Id,
                        CustomerId          = callQueueCustomer.CustomerId,
                        ProspectCustomerId  = callQueueCustomer.ProspectCustomerId,
                        CreatedBy           = _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId,
                        CreatedOn           = DateTime.Now
                    };

                    _callQueueCustomerLockRepository.SaveCallQueueCustomerLock(domain);                                     //Lock Customer

                    callQueueCustomer.Status                  = CallQueueStatus.InProcess;
                    callQueueCustomer.DateModified            = DateTime.Now;
                    callQueueCustomer.ModifiedByOrgRoleUserId = _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId;

                    _callQueueCustomerRepository.Save(callQueueCustomer, false);                                                  //Update CallQueueCustomer Status



                    if (prospectCustomer == null && customer != null)
                    {
                        prospectCustomer = _prospectCustomerFactory.CreateProspectCustomerFromCustomer(customer, false);
                        ((IUniqueItemRepository <ProspectCustomer>)_prospectCustomerRepository).Save(prospectCustomer);
                    }

                    var customerCallQueueCallAttempt = new CustomerCallQueueCallAttempt
                    {
                        DateCreated              = DateTime.Now,
                        IsCallSkipped            = false,
                        IsNotesReadAndUnderstood = false,
                        CreatedBy             = _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId,
                        CustomerId            = callQueueCustomer.CustomerId.Value,
                        CallId                = null,
                        CallQueueCustomerId   = callQueueCustomer.Id,
                        NotInterestedReasonId = null
                    };

                    var callAttempt = _customerCallQueueCallAttemptRepository.Save(customerCallQueueCallAttempt);           //CustomerCallQueueCallAttempt Entry
                    scope.Complete();
                    return(callAttempt);
                }
            }
            catch (Exception ex)
            {
                _logger.Error("Some Error occured");
                _logger.Error("Message: " + ex.Message);
                _logger.Error("Stack Trace: " + ex.StackTrace);
            }
            return(null);
        }