//public void GetDataFromAPI(PreAssessmentCallQueueModel preAssessmentCallQueueModel) //{ // try // { // var eventIds = preAssessmentCallQueueModel.Data.Select(x => x.EventID).Distinct(); // var eventDetails = _eventRepository.GetEvents(eventIds); // var NotexistsEvents = eventIds.Except(eventDetails.Select(x=>x.Id)); // if (NotexistsEvents.Count() > default(long)) // { // _logger.Info(string.Format("EventId : {0} is not exists", string.Join(",", NotexistsEvents))); // } // foreach (var eventId in eventDetails) // { // var customers = preAssessmentCallQueueModel.Data.Where(x => x.EventID == eventId.Id); // foreach (var customer in customers) // { // var eventCustomer = _eventCustomerRepository.Get(eventId.Id, customer.CustomerId); // if (eventCustomer != null) // { // var flagupdate = _eventCustomerRepository.UpdateGeneratePreAssessmentCallQueueStatus(eventCustomer.Id, customer.IsAssessmentCompleted); // } // else // { // _logger.Info(string.Format("CustomerId : {0} is not exists in this EventId: {1}", customer.CustomerId, eventId.Id)); // } // } // } // } // catch (Exception exception) // { // throw exception; // } //} public long StartCallForPreAssessment(long orgRoleUserId, long customerId, long eventId, long callQueueId, long callId = 0) { var callQueue = _callQueueRepository.GetById(callQueueId); var preAssessmentCustomerCallQueueCallAttempt = _preAssessmentCustomerCallQueueCallAttemptRepository.GetCustomerCallQueueCallPreAssessmentAttemptIfCustomerLockedforAgent(customerId, orgRoleUserId, eventId); if (preAssessmentCustomerCallQueueCallAttempt != null) { var callQueueCustomerLock = new PreAssessmentCallQueueCustomerLock { CreatedBy = orgRoleUserId, CreatedOn = DateTime.Now, CustomerId = customerId }; _preAssessmentCallQueueCustomerLockRepository.UpdatePreAssessmentCallQueueCustomerLock(callQueueCustomerLock); if (preAssessmentCustomerCallQueueCallAttempt.CallId.HasValue) { return(preAssessmentCustomerCallQueueCallAttempt.CallId.Value); } } var eventCustomer = _eventCustomerRepository.GetRegisteredEventForUser(customerId, eventId); if (eventCustomer == null) { return(0); } var customer = _customerRepository.GetCustomer(customerId); return(SaveCallQueueCustomerDetailAndGetCallId(customer, callQueue, orgRoleUserId, callId, (long)DialerType.Vici, eventId)); }
public void UpdatePreAssessmentCallQueueCustomerLock(PreAssessmentCallQueueCustomerLock preAssessmentCallQueueCustomerLock) { using (var adapter = PersistenceLayer.GetDataAccessAdapter()) { var preAssessmentCallQueueCustomerLockEntity = new PreAssessmentCallQueueCustomerLockEntity() { CreatedOn = DateTime.Now }; var bucket = new RelationPredicateBucket(PreAssessmentCallQueueCustomerLockFields.CustomerId == preAssessmentCallQueueCustomerLock.CustomerId); if (adapter.UpdateEntitiesDirectly(preAssessmentCallQueueCustomerLockEntity, bucket) == 0) { SavePreAssessmentCallQueueCustomerLock(preAssessmentCallQueueCustomerLock); } } }
private long SaveCallQueueCustomerDetailAndGetCallId(Customer customer, CallQueue callQueue, long orgRoleUserId, long callId, long dialerType, long eventId = 0) { var prospectCustomer = _prospectCustomerRepository.GetProspectCustomerByCustomerId(customer.CustomerId); var _event = _eventRepository.GetById(eventId); var HealthPlanId = _eventRepository.GetById(eventId) != null?_eventRepository.GetById(eventId).AccountId : null; long?prospectCustomerId_ = null; if (prospectCustomer != null) { prospectCustomerId_ = prospectCustomer.Id; } using (var scope = new TransactionScope()) { //lock customer in call queue so that other agent not be able to call them; var domain = new PreAssessmentCallQueueCustomerLock { CustomerId = customer.CustomerId, ProspectCustomerId = prospectCustomerId_, CreatedBy = orgRoleUserId, CreatedOn = DateTime.Now }; _preAssessmentCallQueueCustomerLockRepository.SavePreAssessmentCallQueueCustomerLock(domain); var customerId = customer != null ? customer.CustomerId : 0; var prospectCustomerId = prospectCustomerId_ != null ? (long)prospectCustomerId_ : 0; var organizationRoleUserId = orgRoleUserId; var callStatus = customerId > 0 ? CallType.Existing_Customer.ToString().Replace("_", " ") : CallType.Register_New_Customer.ToString().Replace("_", " "); PhoneNumber glocomNumber = null; if (customer != null && customer.Address != null && HealthPlanId > 0) { glocomNumber = _customerAccountGlocomNumberService.GetGlocomNumber((long)HealthPlanId, customer.Address.StateId, customerId); if (glocomNumber == null) { var corporateAccount = _corporateAccountRepository.GetByTag(customer.Tag); glocomNumber = corporateAccount != null ? corporateAccount.CheckoutPhoneNumber : null; } } var incomingPhoneLine = glocomNumber != null ? glocomNumber.AreaCode + glocomNumber.Number : ""; callId = _outboundCallQueueService.SetCallDetail(organizationRoleUserId, customerId, incomingPhoneLine, "", callStatus, null, HealthPlanId, "", callQueue.Id, callId, true, dialerType: dialerType, callQueueCategory: callQueue.Category, eventId: eventId, ProductTypeId: customer.ProductTypeId); if (customerId == 0 && prospectCustomerId > 0) { UpdateContactedInfo(prospectCustomerId, callId, orgRoleUserId); } else if (customerId > 0) { if (!(callQueue.Category == CallQueueCategory.Upsell || callQueue.Category == CallQueueCategory.PreAssessmentCallQueue)) { if (prospectCustomer == null && customer != null) { prospectCustomer = _prospectCustomerFactory.CreateProspectCustomerFromCustomer(customer, false); prospectCustomer = ((IUniqueItemRepository <ProspectCustomer>)_prospectCustomerRepository).Save(prospectCustomer); } if (prospectCustomer != null) { UpdateContactedInfo(prospectCustomer.Id, callId, orgRoleUserId); } } } var customerCallQueueCallAttempt = new PreAssessmentCustomerCallQueueCallAttempt { DateCreated = DateTime.Now, IsCallSkipped = false, IsNotesReadAndUnderstood = true, CreatedBy = orgRoleUserId, CustomerId = customerId, CallId = callId, NotInterestedReasonId = null }; _preAssessmentCustomerCallQueueCallAttemptRepository.Save(customerCallQueueCallAttempt, false); if (glocomNumber != null) { var customerAccountGlocomNumber = new CustomerAccountGlocomNumber { CallId = callId, CustomerId = customerId, GlocomNumber = glocomNumber.AreaCode + glocomNumber.Number, CreatedDate = DateTime.Now, IsActive = true }; _customerAccountGlocomNumberService.SaveAccountCheckoutPhoneNumber(customerAccountGlocomNumber); } scope.Complete(); return(callId); } }
public PreAssessmentCallQueueCustomerLock SavePreAssessmentCallQueueCustomerLock(PreAssessmentCallQueueCustomerLock preAssessmentCallQueueCustomerLock) { using (var adapter = PersistenceLayer.GetDataAccessAdapter()) { var entity = Mapper.Map <PreAssessmentCallQueueCustomerLock, PreAssessmentCallQueueCustomerLockEntity>(preAssessmentCallQueueCustomerLock); if (!adapter.SaveEntity(entity, true)) { throw new PersistenceFailureException(); } return(Mapper.Map <PreAssessmentCallQueueCustomerLockEntity, PreAssessmentCallQueueCustomerLock>(entity)); } }