Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="customerConversation"></param>
        public CustomerConversation Add(CustomerConversation customerConversation)
        {
            EntityEntry <CustomerConversation> newCustomerConversation = this._context.CustomerConversations.Add(customerConversation);

            this._context.SaveChanges();
            return(newCustomerConversation.Entity);
        }
Beispiel #2
0
 public override async Task OnConnectedAsync()
 {
     if (this.httpContext.HttpContext.User.Identity.IsAuthenticated)
     {
         if (!String.Equals(activeOperatorConnectionId, this.Context.ConnectionId))
         {
             activeOperatorConnectionId = this.Context.ConnectionId;
         }
     }
     else
     {
         CustomerConversation conversation = this.repository.GetCustomerConversationByConnectionId(this.Context.ConnectionId);
         if (conversation != null)
         {
             conversation.LastModified = DateTime.Now;
             conversation.Closed       = false;
             this.repository.Update(conversation);
         }
         else
         {
             CustomerConversation customerConversation = new CustomerConversation(this.Context.ConnectionId);
             customerConversation = this.repository.Add(customerConversation);
         }
     }
 }
Beispiel #3
0
        public async Task MessageFromCustomer(string message)
        {
            CustomerConversation searchedConversation =
                this.repository.GetCustomerConversationByConnectionId(this.Context.ConnectionId);

            if (searchedConversation != null)
            {
                searchedConversation.Unanswered   = true;
                searchedConversation.LastModified = DateTime.Now;
                this.repository.Update(searchedConversation);
            }
            else
            {
                searchedConversation = new CustomerConversation(this.Context.ConnectionId);
                searchedConversation = this.repository.Add(searchedConversation);
            }

            CustomerConversationMessage ccMessage = new CustomerConversationMessage(searchedConversation.Id, message);

            ccMessage.FromCustomer = true;
            this.repository.AddMessage(ccMessage);

            // if we have active operator
            if (activeOperatorConnectionId != null)
            {
                var messageJsonResult = new JsonResult(GetMessageJsonObject(ccMessage));

                await Clients.Client(activeOperatorConnectionId).SendAsync("ReceiveMessage", this.Context.ConnectionId, messageJsonResult.Value);
            }
        }
Beispiel #4
0
        public override async Task OnDisconnectedAsync(Exception exception)
        {
            // operator disconnected
            if (this.httpContext.HttpContext.User.Identity.IsAuthenticated)
            {
                activeOperatorConnectionId = null;
            }
            else
            {
                // close the conversation
                CustomerConversation searchedConversation = this.repository.GetCustomerConversationByConnectionId(this.Context.ConnectionId);

                searchedConversation.LastModified = DateTime.Now;
                searchedConversation.Closed       = true;
                this.repository.Update(searchedConversation);
            }
        }
Beispiel #5
0
        public async Task MessageFromOperator(string connectionId, string message)
        {
            CustomerConversation conversation = this.repository.GetCustomerConversationByConnectionId(connectionId);

            if (conversation != null)
            {
                CustomerConversationMessage ccMessage = new CustomerConversationMessage(conversation.Id, message);
                ccMessage.FromCustomer = false;
                this.repository.AddMessage(ccMessage);

                conversation.Unanswered   = false;
                conversation.LastModified = DateTime.Now;
                this.repository.Update(conversation);

                var messageJsonResult = new JsonResult(GetMessageJsonObject(ccMessage));

                await Clients.Client(connectionId).SendAsync("ReceiveMessage", connectionId, messageJsonResult.Value);
            }
        }
Beispiel #6
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="customerConversation"></param>
 public void Update(CustomerConversation customerConversation)
 {
     this._context.CustomerConversations.Update(customerConversation);
     this._context.SaveChanges();
 }