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)); } }
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); }
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); } } }
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); }