示例#1
0
        public override Guid RequestChat(ChatRequest request)
        {
            using (LCSKDbDataContext db = new LCSKDbDataContext(connectionString))
            {
                if (request.Department == null)
                {
                    request.Department = "";
                }

                var existing = db.LiveChat_ChatRequests.SingleOrDefault(x =>
                                                                        x.VisitorIP == request.VisitorIp &&
                                                                        x.OperatorID == -1);
                if (existing != null)
                {
                    return(existing.ChatID);
                }

                // Get the less busy operator
                int operatorId = -1;

                var results = from o in db.LiveChat_Operators
                              join c in db.LiveChat_ChatRequests on o.OperatorID equals c.OperatorID into req
                              from r in req.DefaultIfEmpty()
                              where o.IsOnline && o.Department.Contains(request.Department)
                              group o by o.OperatorID into g
                              select new { Id = g.Key, Count = g.Count() };

                if (results != null && results.Count() > 0)
                {
                    operatorId = results.OrderBy(x => x.Count).First().Id;
                }
                else
                {
                    // WTH
                    operatorId = db.LiveChat_Operators.First(x => x.IsOnline).OperatorID;
                }

                LiveChat_ChatRequest entity = new LiveChat_ChatRequest();
                entity.ChatID           = request.ChatId;
                entity.Department       = request.Department;
                entity.OperatorID       = operatorId;
                entity.RequestDate      = DateTime.Now;
                entity.VisitorEmail     = request.VisitorEmail;
                entity.VisitorIP        = request.VisitorIp;
                entity.VisitorName      = request.VisitorName;
                entity.VisitorUserAgent = request.VisitorUserAgent.Length > 100 ? request.VisitorUserAgent.Substring(0, 100) : request.VisitorUserAgent;

                db.LiveChat_ChatRequests.InsertOnSubmit(entity);
                db.SubmitChanges();
                return(entity.ChatID);
            }
        }
示例#2
0
		public override Guid RequestChat(ChatRequest request)
		{
			using (LCSKDbDataContext db = new LCSKDbDataContext(connectionString))
			{
                if (request.Department == null)
                    request.Department = "";

				var existing = db.LiveChat_ChatRequests.SingleOrDefault(x =>
					x.VisitorIP == request.VisitorIp &&
					x.OperatorID == -1);
				if (existing != null)
					return existing.ChatID;

				// Get the less busy operator
				int operatorId = -1;

				var results = from o in db.LiveChat_Operators
							  join c in db.LiveChat_ChatRequests on o.OperatorID equals c.OperatorID into req
							  from r in req.DefaultIfEmpty()
							  where o.IsOnline && o.Department.Contains(request.Department)
							  group o by o.OperatorID into g
							  select new { Id = g.Key, Count = g.Count() };

				if (results != null && results.Count() > 0)
					operatorId = results.OrderBy(x => x.Count).First().Id;
				else
				{
					// WTH
					operatorId = db.LiveChat_Operators.First(x => x.IsOnline).OperatorID;
				}

				LiveChat_ChatRequest entity = new LiveChat_ChatRequest();
				entity.ChatID = request.ChatId;
				entity.Department = request.Department;
				entity.OperatorID = operatorId;
				entity.RequestDate = DateTime.Now;
				entity.VisitorEmail = request.VisitorEmail;
				entity.VisitorIP = request.VisitorIp;
				entity.VisitorName = request.VisitorName;
				entity.VisitorUserAgent = request.VisitorUserAgent.Length > 100 ? request.VisitorUserAgent.Substring(0, 100) : request.VisitorUserAgent;

				db.LiveChat_ChatRequests.InsertOnSubmit(entity);
				db.SubmitChanges();
				return entity.ChatID;
			}
		}
示例#3
0
        public override ChatRequest InviteVisitor(int operatorId, string visitorIp, string prompt)
        {
            using (LCSKDbDataContext db = new LCSKDbDataContext(connectionString))
            {
                LiveChat_ChatRequest invite = new LiveChat_ChatRequest();
                invite.AcceptDate = null;
                invite.ChatID     = Guid.NewGuid();
                invite.ClosedDate = null;
                //HACK: this will serve as an indicator when visitor display chat button
                invite.Department       = "op-invite";
                invite.OperatorID       = operatorId;
                invite.RequestDate      = DateTime.Now;
                invite.VisitorEmail     = "";
                invite.VisitorIP        = visitorIp;
                invite.VisitorName      = "Me";
                invite.VisitorUserAgent = "";

                db.LiveChat_ChatRequests.InsertOnSubmit(invite);
                try
                {
                    db.SubmitChanges();

                    ChatRequest req = new ChatRequest();
                    req.Accepted         = null;
                    req.ChatId           = invite.ChatID;
                    req.Closed           = null;
                    req.Department       = invite.Department;
                    req.OperatorId       = invite.OperatorID;
                    req.Requested        = invite.RequestDate;
                    req.VisitorEmail     = invite.VisitorEmail;
                    req.VisitorIp        = invite.VisitorIP;
                    req.VisitorName      = invite.VisitorName;
                    req.VisitorUserAgent = invite.VisitorUserAgent;
                    req.WasAccepted      = false;

                    return(req);
                }
                catch
                {
                    throw;
                }
            }
        }
示例#4
0
 partial void DeleteLiveChat_ChatRequest(LiveChat_ChatRequest instance);
示例#5
0
 partial void UpdateLiveChat_ChatRequest(LiveChat_ChatRequest instance);
示例#6
0
 partial void InsertLiveChat_ChatRequest(LiveChat_ChatRequest instance);
示例#7
0
		public override ChatRequest InviteVisitor(int operatorId, string visitorIp, string prompt)
		{
			using (LCSKDbDataContext db = new LCSKDbDataContext(connectionString))
			{
				LiveChat_ChatRequest invite = new LiveChat_ChatRequest();
				invite.AcceptDate = null;
				invite.ChatID = Guid.NewGuid();
				invite.ClosedDate = null;
				//HACK: this will serve as an indicator when visitor display chat button
				invite.Department = "op-invite";
				invite.OperatorID = operatorId;
				invite.RequestDate = DateTime.Now;
				invite.VisitorEmail = "";
				invite.VisitorIP = visitorIp;
				invite.VisitorName = "Me";
				invite.VisitorUserAgent = "";

				db.LiveChat_ChatRequests.InsertOnSubmit(invite);
				try
				{
					db.SubmitChanges();

					ChatRequest req = new ChatRequest();
					req.Accepted = null;
					req.ChatId = invite.ChatID;
					req.Closed = null;
					req.Department = invite.Department;
					req.OperatorId = invite.OperatorID;
					req.Requested = invite.RequestDate;
					req.VisitorEmail = invite.VisitorEmail;
					req.VisitorIp = invite.VisitorIP;
					req.VisitorName = invite.VisitorName;
					req.VisitorUserAgent = invite.VisitorUserAgent;
					req.WasAccepted = false;

					return req;
				}
				catch
				{
					throw;
				}
			}
		}
示例#8
0
 partial void DeleteLiveChat_ChatRequest(LiveChat_ChatRequest instance);
示例#9
0
 partial void UpdateLiveChat_ChatRequest(LiveChat_ChatRequest instance);
示例#10
0
 partial void InsertLiveChat_ChatRequest(LiveChat_ChatRequest instance);