public static event EventHandler <VisitorLeaveEventArgs> VisitorLeave; // 访客离开 /// <summary> /// 保存一条新访客会话 /// </summary> /// <param name="session"></param> public static void NewSession(VisitSession session) { Trace.WriteLine(string.Format("VisitSessionService.NewSession : {0}", session.ToString())); if (GetSessionById(session.SessionId) != null) { Trace.WriteLine("Error: chat is aleady exist"); return; } sessions.Add(new VisitSessionHit(session)); Provider.NewSession(session); // if (NewVisiting != null) { NewVisiting(null, new NewVisitingEventArgs(VisitorService.GetVisitorById(session.VisitorId), session)); } if (sessions.Count > MaxVisitorSessionCountInMemory) { for (int i = sessions.Count - 1; i >= 0; i--) { if (sessions[i].Session.Status == VisitSessionStatus.Leave) { sessions.RemoveAt(i); break; } } } }
public FeedController() { feedService = new FeedService(); friendService = new FriendService(); visitorService = new VisitorService(); followService = new FollowerService(); }
/// <summary> /// 客服接受访客对话请求 /// </summary> /// <param name="operatorId"></param> /// <param name="chatId"></param> /// <returns></returns> public static int AcceptChatRequest(string operatorId, string chatId) { Trace.WriteLine(string.Format("ChatService.AcceptChatRequest(OperatorId={0},ChatId={1})", operatorId, chatId)); Chat chat = GetChatById(chatId); if (chat == null) { Trace.WriteLine(string.Format("Error: AcceptChatRequest(OperatorId={0},ChatId={1}) error, can't find this chat", operatorId, chatId)); return(AcceptChatRequestReturn_Error_Others); } if (chat.Status == ChatStatus.Accepted) { return(AcceptChatRequestReturn_Error_AcceptedByOthers); } else if (chat.Status == ChatStatus.Requested) { chat.Status = ChatStatus.Accepted; chat.OperatorId = operatorId; chat.AcceptTime = DateTime.Now; if (VisitorChatRequestAccepted != null) { VisitorChatRequestAccepted(null, new VisitorChatRequestAcceptedEventArgs(new VisitorChatRequestEventArgs(chat.VisitorId, chat))); } Message m1 = new Message(); m1.ChatId = chat.ChatId; m1.SentDate = DateTime.Now; m1.Type = MessageType.SystemMessage_ToVisitor; m1.Text = string.Format("客服:{0}已经接受您的对话请求", OperatorService.GetOperatorById(operatorId).NickName); SendMessage(m1); Message m2 = new Message(); m2.ChatId = chat.ChatId; m2.SentDate = DateTime.Now; m2.Type = MessageType.SystemMessage_ToOperator; m2.Text = string.Format("你已经接受访客{0}的对话请求", VisitorService.GetVisitorById(chat.VisitorId).Name); SendMessage(m2); OperatorService.SetOperatorStatus(operatorId, OperatorStatus.Chatting); VisitSession s = VisitSessionService.GetSessionById(VisitorService.GetVisitorById(chat.VisitorId).CurrentSessionId); s.OperatorId = operatorId; s.Status = VisitSessionStatus.Chatting; s.ChatingTime = DateTime.Now; return(AcceptChatRequestReturn_OK); } else if (chat.Status == ChatStatus.Closed) { return(AcceptChatRequestReturn_Error_ChatRequestCanceled); } else { Trace.WriteLine(string.Format("ChatService.AccpetChatRequest({0},{1}) error,status illegal: ChatStatus={2}", operatorId, chatId, chat.Status)); return(AcceptChatRequestReturn_Error_Others); } }
public SpaceLayoutController() { skinService = new SkinService(); userAppService = new UserAppService(); visitorService = new VisitorService(); menuService = new UserMenuService(); siteSkinService = new SiteSkinService(); }
private void addRegTemplate() { VisitorService vs = new VisitorService(); _visitList = vs.GetAllVisitors(); Robot.AddRegTemplateToFPCache(_visitList); }
public MicroblogController() { microblogService = new MicroblogService(); followService = new FollowerService(); visitorService = new VisitorService(); mfService = new MicroblogFavoriteService(); commentService = new OpenCommentService(); matService = new MicroblogAtService(); userTagService = new UserTagService(); }
public MicroblogController() { microblogService = new MicroblogService(); followService = new FollowerService(); visitorService = new VisitorService(); mfService = new MicroblogFavoriteService(); commentService = new MicroblogCommentService(); matService = new MicroblogAtService(); videoSpider = new WojiluVideoSpider(); }
/// <summary> /// 访客接受某客服的对话 to-all /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void ChatService_VisitorChatRequestAccepted(object sender, VisitorChatRequestAcceptedEventArgs e)//tao-no { Visitor visitor = VisitorService.GetVisitorById(e.VisitorChatRequest.VisitorId); List <Socket> ss = new List <Socket>(); foreach (var item in GetOnlineOperatorSockets(visitor.AccountId)) { sh.SendPacket(item, e); } }
void VisitSessionService_VisitorLeave(object sender, VisitorLeaveEventArgs e) { Visitor visitor = VisitorService.GetVisitorById(e.VisitorId); List <Socket> ss = new List <Socket>(); foreach (var item in GetOnlineOperatorSockets(visitor.AccountId)) { sh.SendPacket(item, e); } }
private void btnSave_Click(object sender, EventArgs e) { if (_currentVisitor == null) { VisitorService vs = new VisitorService(); VisitLogService vls = new VisitLogService(); if (txtName.Text.Trim().Length > 0 && txtMobile.Text.Trim().Length > 0 && txtIdentity.Text.Trim().Length > 0) { _newVisitor = vs.AddVisitor(txtName.Text.Trim(), txtMobile.Text.Trim(), txtIdentity.Text.Trim(), txtCompany.Text.Trim(), Robot.GetLatestTemplate()); if (txtPurpose.Text.Trim().Length > 0 && txtRecepter.Text.Trim().Length > 0 && _newVisitor != null) { if (validateTime(txtTime.Text.Trim())) { vls.AddLog(txtTime.Text.Trim(), txtPurpose.Text.Trim(), txtRecepter.Text.Trim(), txtRemark.Text.Trim(), _newVisitor.Id); this.Close(); } else { MessageBox.Show("访问时间格式不正确,请重新填写!", "提示"); } } else { MessageBox.Show("访客信息不完整,请补充完整!", "提示"); } } else { MessageBox.Show("身份信息不完整,请补充完整!", "提示"); } } else { VisitLogService vls = new VisitLogService(); if (txtPurpose.Text.Trim().Length > 0 && txtRecepter.Text.Trim().Length > 0) { if (validateTime(txtTime.Text.Trim())) { vls.AddLog(txtTime.Text.Trim(), txtPurpose.Text.Trim(), txtRecepter.Text.Trim(), txtRemark.Text.Trim(), _currentVisitor.Id); this.Close(); } else { MessageBox.Show("访问时间格式不正确,请重新填写!", "提示"); } } else { MessageBox.Show("访客信息不完整,请补充完整!", "提示"); } } }
/// <summary> /// 关闭对话信息 /// </summary> /// <param name="chatId"></param> /// <param name="userName"></param> public static bool CloseChat(string chatId, string closeBy) { Trace.WriteLine(string.Format("ChatService.CloseChat(ChatId = {0},CloseBy={1})", chatId, closeBy)); Chat chat = GetChatById(chatId); if (chat == null) { Trace.WriteLine("Waring: ChatService.CloseChat() error ,ChatId " + chatId + " not found"); return(false); } if (chat.Status == ChatStatus.Closed) { Trace.WriteLine("Waring: ChatService.CloseChat() is closed aleady ,ChatId " + chatId); try { Directory.Delete(ChatTempDataDir + chatId, true); } catch (Exception) { } return(true); } if (ChatStatusChanged != null) { ChatStatusChanged(null, new ChatStatusChangedEventArgs(chatId, ChatStatus.Closed)); } Message m = new Message(); m.ChatId = chatId; m.SentDate = DateTime.Now; m.Type = MessageType.SystemMessage_ToBoth; m.Text = string.Format("{0}已关闭对话", closeBy); SendMessage(m); chat.Status = ChatStatus.Closed; chat.CloseTime = DateTime.Now; chat.CloseBy = closeBy; if (chat.OperatorId == null || chat.OperatorId == "") { chat.OperatorId = null; } Provider.CloseChat(chat); VisitSessionService.SetSessionStatus(VisitorService.GetVisitorById(chat.VisitorId).CurrentSessionId, VisitSessionStatus.Visiting); // 注意: IsOperatorHasActiveChat需要在更改chat status后调用 if (!string.IsNullOrEmpty(chat.OperatorId) && !IsOperatorHasActiveChat(chat.OperatorId) && OperatorService.IsOperatorOnline(chat.OperatorId)) { OperatorService.SetOperatorStatus(chat.OperatorId, OperatorStatus.Idle);//关闭时改变客服状态 } return(true); }
public IHttpActionResult Get(int?id) { if (id == null) { return(BadRequest()); } VisitorService service = CreateVisitorService(); return(Ok(service.GetVisitorByID(id.Value))); }
/// <summary> /// Constructor /// </summary> /// <param name="apiKey">The api key credential</param> public WistiaStatsClient(string apiKey) { if (string.IsNullOrWhiteSpace(apiKey)) { throw new ArgumentNullException(apiKey); } Account = new AccountService(apiKey); Projects = new ProjectService(apiKey); Media = new MediaService(apiKey); Visitor = new VisitorService(apiKey); }
public HomeController() { microblogService = new MicroblogService(); followService = new FollowerService(); visitorService = new VisitorService(); mfService = new MicroblogFavoriteService(); commentService = new OpenCommentService(); photoPostService = new PhotoPostService(); friendService = new FriendService(); blogAppService = new BlogService(); photoAppService = new PhotoService(); }
/// <summary> /// 访客请请求 to-all /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void ChatService_VisitorChatRequest(object sender, VisitorChatRequestEventArgs e) { Visitor v = VisitorService.GetVisitorById(e.VisitorId); if (v != null) { List <Socket> sockets = GetOnlineOperatorSockets(v.AccountId); foreach (var item in sockets) { sh.SendPacket(item, new VisitorChatRequestEventArgs(e.VisitorId, e.Chat)); } } }
private void StoreVisitor() { VisitorService VisitorManager = new VisitorService(); var visitor = Visitors.First(); ((ICRUDService)VisitorManager).Create( visitor.Name, visitor.Email, visitor.Age, visitor.Gender, visitor.Password ); }
void VisitSessionService_NewVisiting(object sender, NewVisitingEventArgs e) { Visitor visitor = VisitorService.GetVisitorById(e.Visitor.VisitorId); List <Socket> ss = new List <Socket>(); foreach (var item in GetOnlineOperatorSockets(visitor.AccountId)) { if (item.Connected) { sh.SendPacket(item, e); } } }
public void TestGetVisitorById() { VisitorService.Provider = new MyVisitorProvider(); Visitor v = new Visitor(); VisitSession s = new VisitSession(); s.VisitorId = v.VisitorId; s.Status = VisitSessionStatus.Leave; // 离开 v.AccountId = accountIdA; v.CurrentSession = s; VisitorService.NewVisitor(v); Assert.AreSame(v, VisitorService.GetVisitor(v.VisitorId)); Assert.IsNull(VisitorService.GetVisitor("dddd")); }
public IHttpActionResult Put(VisitorEdit model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } VisitorService service = CreateVisitorService(); if (service.UpdateExistingVisitor(model)) { return(Ok()); } return(InternalServerError()); }
public IHttpActionResult Delete(int?id) { if (id == null) { return(BadRequest()); } VisitorService service = CreateVisitorService(); if (service.DeleteVisitor(id.Value)) { return(Ok()); } return(InternalServerError()); }
/// <summary> /// 客服主动邀请对话 /// </summary> /// <param name="operatorId">客服ID</param> /// <param name="visitorId"></param> public static Chat OperatorRequestChat(string operatorId, string visitorId) { Trace.WriteLine(string.Format("ChatService.OperatorRequestChat(OperatorId = {0},VisitorId = {1})", operatorId, visitorId)); Visitor visitor = VisitorService.GetVisitorById(visitorId); Operator op = OperatorService.GetOperatorById(operatorId); if (visitor == null || op == null) { Trace.WriteLine(string.Format("Error: ChatService.OperatorRequestChat({0},{1}) error Opertor or Visitor is null", operatorId, visitorId)); return(null); } Chat chat = new Chat(); chat.IsInviteByOperator = true; chat.CreateBy = op.NickName; chat.CreateTime = DateTime.Now; chat.LastCheckTime = DateTime.Now.Ticks; chat.AccountId = op.AccountId; chat.VisitorId = visitorId; chat.OperatorId = operatorId; chats.Add(chat); Provider.AddChat(chat); op.Status = OperatorStatus.InviteChat;//将客服改为请求中 chat.Status = ChatStatus.Requested; //VisitSessionService.SetSessionStatus(visitor.CurrentSessionId, VisitSessionStatus.ChatRequesting); if (OperatorChatRequest != null) { var req = new OperatorChatRequestEventArgs(operatorId, visitorId, chat); OperatorChatRequest(null, req); } Message m = new Message(); m.ChatId = chat.ChatId; m.Text = "正在邀请访客,请稍等..."; m.Type = MessageType.SystemMessage_ToOperator; SendMessage(m, DateTime.Now.AddMilliseconds(50)); return(chat); }
public async Task VisitorService_GetAll_Returns_Visitors() { // Arrange var optionsBuilder = new DbContextOptionsBuilder <AntipaDbContext>().UseInMemoryDatabase("antipadb"); var existingVisitor = new Visitor { Age = 1 }; using (var dbContext = new AntipaDbContext(optionsBuilder.Options)) { // Act var sut = new VisitorService(dbContext); await sut.CreateVisitor(existingVisitor); // Assert Assert.NotEmpty(await sut.GetAll()); } }
/// <summary> /// 页面请求对话 /// </summary> /// <param name="CurrentVisitor"></param> /// <returns>ChatId</returns> public static string ChatPageRequestChat(Visitor visitor) { Trace.WriteLine(string.Format("ChatService.ChatPageRequestChat(Visitor = {0})", visitor)); if (!string.IsNullOrEmpty(visitor.Name)) { Visitor vs = VisitorService.GetVisitorById(visitor.VisitorId); vs.Name = visitor.Name; VisitorService.UpdateVisitor(vs); } Chat chatRequest = new Chat(); chatRequest.AccountId = visitor.AccountId; chatRequest.CreateTime = DateTime.Now; chatRequest.Status = ChatStatus.Requested; chatRequest.VisitorId = visitor.VisitorId; chats.Add(chatRequest); Provider.AddChat(chatRequest); VisitSession s = VisitSessionService.GetSessionById(visitor.CurrentSessionId); s.ChatRequestTime = DateTime.Now; s.Status = VisitSessionStatus.ChatRequesting; Message m = new Message(); m.ChatId = chatRequest.ChatId; m.Text = "正在接入客服,请稍等..."; m.Type = MessageType.SystemMessage_ToVisitor; m.Source = "系统"; m.Destination = "访客"; SendMessage(m, DateTime.Now.AddMilliseconds(100)); if (VisitorChatRequest != null) { VisitorChatRequestEventArgs req = new VisitorChatRequestEventArgs(visitor.VisitorId, chatRequest); visitorChatRequests.Add(req); VisitorChatRequest(null, req); } return(chatRequest.ChatId); }
// TODO: 该方法需要重新设计 /// <summary> /// 查询在这个时候之后新加的访客会话信息 /// </summary> /// <param name="lastCheck">会话ID</param> /// <returns>VisitSession对象</returns> /// public static List <VisitSession> GetVisitSessionChange(string accountId, long lastCheck) { Trace.WriteLine(string.Format("{0}({1},{2})", MethodBase.GetCurrentMethod().Name, accountId, lastCheck)); StringBuilder sb = new StringBuilder(); List <VisitSession> vss = new List <VisitSession>(); foreach (VisitSessionHit item in sessions) { Visitor v = VisitorService.GetVisitorById(item.Session.VisitorId); if (v != null && v.AccountId == accountId) { vss.Add(v.CurrentSession); //sb.AppendFormat("SessionId={0},Status={1},VisitId={2} | ",v.CurrentSessionId,v.CurrentSession.Status.ToString(),v.VisitorId); } } Trace.WriteLine(string.Format("Return {0} : {1}", vss.Count, sb.ToString())); return(vss); }
public void TestGetNewVisitor() { VisitorService.Provider = new MyVisitorProvider(); Visitor v = new Visitor(); VisitSession s = new VisitSession(); s.VisitorId = v.VisitorId; s.Status = VisitSessionStatus.Leave; // 离开 v.AccountId = accountIdA; v.CurrentSession = s; VisitorService.NewVisitor(v); DateTime time = DateTime.Now.AddDays(1); s.VisitingTime = time; VisitorService.NewVisitor(v); Assert.AreEqual(0, VisitorService.GetNewVisitors(accountIdA, time.Ticks).Count); Assert.AreEqual(1, VisitorService.GetNewVisitors(accountIdA, DateTime.Now.Ticks).Count); Assert.AreEqual(0, VisitorService.GetNewVisitors(accountIdA, DateTime.Now.AddDays(2).Ticks).Count); }
public async Task ValidateAsync_VisitorExists_DoesNothing() { // Arrange var visitorContainer = new Mock <IVisitorContainer>(); var visitor = new Visitor(); var loyaltycardService = new Mock <ILoyaltyCardService>(); var visitorDAL = new Mock <IVisitorDAL>(); var visitorIdentity = new Mock <IVisitorIdentity>(); visitorDAL.Setup(x => x.GetAsync(visitorIdentity.Object)).ReturnsAsync(visitor); var visitorGetService = new VisitorService(visitorDAL.Object, loyaltycardService.Object); // Act var action = new Func <Task>(() => visitorGetService.ValidateAsync(visitorContainer.Object)); // Assert await action.Should().NotThrowAsync <Exception>(); }
public ActionResult Create() { var service = CreateVisitService(); var visitorService = new VisitorService(Guid.Parse(User.Identity.GetUserId())); var unsortedVisitorList = new SelectList(visitorService.GetVisitors(), "VisitorId", "FullName"); var visitorList = unsortedVisitorList.OrderBy(o => o.Text); var unsortedParkList = new SelectList(service.GetOwnedList("Park"), "ParkId", "ParkName"); var parkList = unsortedParkList.OrderBy(o => o.Text); var unsortedTeamList = new SelectList(service.GetOwnedList("Team"), "TeamId", "TeamName"); var teamList = unsortedTeamList.OrderBy(o => o.Text); ViewBag.VisitorId = visitorList; ViewBag.ParkId = parkList; ViewBag.HomeTeamId = teamList; ViewBag.AwayTeamId = teamList; return(View()); }
public void TestNewVisitor() { VisitorService.Provider = new MyVisitorProvider(); Assert.AreEqual(0, VisitorService.GetAllOnlineVisitors(accountIdA).Count); Assert.AreEqual(0, VisitorService.GetAllOnlineVisitors(accountIdB).Count); Visitor v = new Visitor(); VisitSession s = new VisitSession(); s.VisitorId = v.VisitorId; s.Status = VisitSessionStatus.Leave; // 离开 v.AccountId = accountIdA; v.CurrentSession = s; VisitorService.NewVisitor(v); Assert.AreEqual(0, VisitorService.GetAllOnlineVisitors(accountIdA).Count); Assert.AreEqual(0, VisitorService.GetAllOnlineVisitors(accountIdB).Count); s.Status = VisitSessionStatus.Visiting; // 浏览 Assert.AreEqual(1, VisitorService.GetAllOnlineVisitors(accountIdA).Count); Assert.AreEqual(0, VisitorService.GetAllOnlineVisitors(accountIdB).Count); }
/// <summary> /// 接受客服邀请 /// </summary> /// <param name="chatId"></param> public static void AcceptOperatorInvitation(string chatId) { Trace.WriteLine(string.Format("ChatService.AcceptOperatorInvitation(ChatId = {0})", chatId)); Chat chat = GetChatById(chatId); if (chat != null) { chat.Status = ChatStatus.Accepted; if (chat.OperatorId != null) { OperatorService.GetOperatorById(chat.OperatorId).Status = OperatorStatus.Chatting; } VisitSession s = VisitSessionService.GetSessionById(VisitorService.GetVisitorById(chat.VisitorId).CurrentSessionId); s.Status = VisitSessionStatus.Chatting; //将访客状态改为对话中 s.ChatingTime = DateTime.Now; OperatorChatRequestEventArgs opq = new OperatorChatRequestEventArgs(chat.OperatorId, chat.VisitorId, chat); //tao OperatorChatRequestAccepted(null, new OperatorChatRequestAcceptedEventArgs(opq)); //tao } //SendMessage(new Message(chat.ChatId, "访客已接受对话邀请!", MessageType.SystemMessage_ToOperator)); SendMessage(new Message(chat.ChatId, "您已接受对话邀请!", MessageType.SystemMessage_ToVisitor)); }
public void TestInvite() { LiveSupport.LiveSupportDAL.SqlProviders.DBHelper.ConnectionString = "Server=rd01;Database=LiveSupport;User ID=sa;Password=;Trusted_Connection=False;"; OperatorService.Provider = new MyOperatorProvider(); Account a = TestTool.CreateNewAccount(); AccountService.AddAccount(a); Operator o = TestTool.CreateNewOperator(a.AccountId); OperatorService.NewOperator(o); Visitor v = TestTool.CreateNewVisitor(a.AccountId); VisitorService.NewVisitor(v); VisitSessionService.NewSession(v.CurrentSession); Operator op = OperatorService.Login(a.LoginName, a.LoginName, a.Password); ChatService.OperatorRequestChat(op.OperatorId, v.VisitorId); Assert.AreEqual(v.CurrentSession.SessionId, ChatService.GetOperatorInvitation(v.VisitorId)); }