public void SendMessageInRoom(int eventId, string mess) { MessageBasicInfoDTO returnedMessage = new MessageBasicInfoDTO(); int UserId = 0; using (var db = new UserDAL()) { UserId = db.GetUserByUserNameOrEmail(HttpContext.Current.User.Identity.Name).UserID; } string currentConnection = Context.ConnectionId; using (var db = new Ws_DataContext()) { //Add mesage to db PublicMessageDetail newMessage = new PublicMessageDetail(); newMessage.UserId = UserId; newMessage.EventId = eventId; newMessage.Message = mess; newMessage.CreatedDate = DateTime.Now; newMessage.Status = true; newMessage = db.PublicMessageDetails.Add(newMessage); db.SaveChanges(); //Set retured message returnedMessage.CreatorImage = db.User_Information.SingleOrDefault(x => x.UserID == newMessage.UserId).ProfileImage; returnedMessage.Content = newMessage.Message; returnedMessage.CreatedDate = newMessage.CreatedDate.ToString("H:mm dd/MM"); returnedMessage.CreatorName = db.Ws_User.SingleOrDefault(x => x.UserID == newMessage.UserId).UserName; } //Send it to ALL clients is connecting this room using (var db = new Ws_DataContext()) { var list = db.PublicRooms.Where(x => x.EventId == eventId) .Select(x => x.ConnectionRoom.ConnectionString).ToList(); foreach (var item in list) { if (!item.Equals(currentConnection)) { Clients.Client(item).ReceivePublicMessage(returnedMessage); } } } //Send it to caller Clients.Caller.ReceivePublicMessage(returnedMessage); }
public IHttpActionResult GeUsertDonationInformation(int userId) { try { List <DonationDTO> userDonationInfor = new List <DonationDTO>(); List <int> donationIdList = new List <int>(); using (var db = new Ws_DataContext()) { donationIdList = db.Donations.Where(x => x.UserId == userId).Select(x => x.DonationId).ToList(); } foreach (int donationId in donationIdList) { DonationDTO donation; using (var db = new DonationDAL()) { donation = db.GetFullInformationOfDonation(donationId); } userDonationInfor.Add(donation); } return(Ok(new HTTPMessageDTO { Status = WsConstant.HttpMessageType.SUCCESS, Message = "Get User Profile Successfully", Type = "", Data = userDonationInfor })); } catch (Exception) { return(Ok(new HTTPMessageDTO { Status = WsConstant.HttpMessageType.ERROR, Message = "Cannot Get User Donation Infomation!", Type = "" })); } }
public void Connect() { ; var ConnectionString = Context.ConnectionId; int UserId = 0; using (var db = new UserDAL()) { UserId = db.GetUserByUserNameOrEmail(HttpContext.Current.User.Identity.Name).UserID; } //Check User is connected or not using (var db = new Ws_DataContext()) { Connection UserDetail = new Connection { UserId = UserId, ConnectionString = ConnectionString }; db.Connection.Add(UserDetail); db.SaveChanges(); } }
public override System.Threading.Tasks.Task OnDisconnected(bool stopCalled) { try { using (var db = new Ws_DataContext()) { var item = db.Connection.FirstOrDefault(x => x.ConnectionString == Context.ConnectionId); var connectItem = db.PublicRooms.FirstOrDefault(x => x.ConnectionId == item.ConnectionId); if (connectItem != null) { db.PublicRooms.Remove(connectItem); db.SaveChanges(); } if (item != null) { db.Connection.Remove(item); db.SaveChanges(); } } }catch (Exception ex) { } return(base.OnDisconnected(stopCalled)); }
public IHttpActionResult GetEventsFollowEventType(int typeEventId) { List <Event> EventFollowEventType = null; var basicEventList = new List <EventBasicInfo>(); try { using (var db = new EventDAL()) { EventFollowEventType = db.GetEventFollowEventType(typeEventId); foreach (Event events in EventFollowEventType) { var eventMainImage = db.GetMainImageEventById(events.EventID); //get name of organizationt which is owner of this event. string organizationName; string eventType; using (var dbOrg = new OrganizationDAL()) { var orgOwner = dbOrg.GetOrganizationById(events.CreatorID); organizationName = orgOwner.OrganizationName; } //get type of this event. using (var dbWscontext = new Ws_DataContext()) { var eventTypes = dbWscontext.EventTypes.Find(events.EventType); eventType = eventTypes.EventTypeName; } basicEventList.Add(new EventBasicInfo { EventID = events.EventID, CreatorID = events.CreatorID, CreatorName = organizationName, EventName = events.EventName, MainImageUrl = eventMainImage.ImageUrl, Content = events.Description, ShortDescription = events.ShortDescription, Status = true, EventType = eventType, CreatedDate = events.Created_Date.ToString("H:mm:ss dd/MM/yy") }); } } return(Ok(new HTTPMessageDTO { Status = WsConstant.HttpMessageType.SUCCESS, Message = "", Type = "", Data = basicEventList })); } catch (Exception) { return(Ok(new HTTPMessageDTO { Status = WsConstant.HttpMessageType.ERROR, Message = "", Type = "" })); } }
public void SendMessage(int ConservationId, string Message) { int UserId = 0; using (var db = new UserDAL()) { UserId = db.GetUserByUserNameOrEmail(HttpContext.Current.User.Identity.Name).UserID; } Message newMess = new Message(); MessageBasicInfoDTO info = new MessageBasicInfoDTO(); using (var db = new Ws_DataContext()) { newMess.ConservationId = ConservationId; newMess.Content = Message; newMess.CreatedDate = DateTime.Now; newMess.Status = true; newMess.UserId = UserId; newMess = db.Message.Add(newMess); db.SaveChanges(); using (var dbCurrent = new ConservationDAL()) { Conversation current = dbCurrent.GetConservationById(ConservationId); current.UpdatedTime = DateTime.Now; if (UserId == current.CreatorId) { current.IsReceiverRead = false; } if (UserId == current.ReceiverId) { current.IsCreatorRead = false; } dbCurrent.UpdateTime(current); } var GetInfo = (from p in db.Message where p.MessageId == newMess.MessageId select new { p.User.UserName, p.User.User_Information.ProfileImage }).SingleOrDefault(); info.CreatorImage = GetInfo.ProfileImage; info.CreatorName = GetInfo.UserName; info.Content = newMess.Content; } if (DateTime.Now.Subtract(newMess.CreatedDate).Hours <= 24 && DateTime.Now.Subtract(newMess.CreatedDate).Hours >= 1) { info.CreatedDate = DateTime.Now.Subtract(newMess.CreatedDate).Hours + " Tiếng cách đây"; } else if (DateTime.Now.Subtract(newMess.CreatedDate).Hours > 24) { info.CreatedDate = newMess.CreatedDate.ToString("H:mm:ss dd/MM/yy"); } else { info.CreatedDate = DateTime.Now.Subtract(newMess.CreatedDate).Minutes + " Phút cách đây"; } //Get list connection Id specify by UserId List <string> ListConnetion = new List <string>(); using (var db = new Ws_DataContext()) { //Get Id of Receiver var Id = (from p in db.Conversation where p.ConservationId == ConservationId select new { p.CreatorId, p.ReceiverId }).SingleOrDefault(); if (newMess.UserId == Id.CreatorId) { ListConnetion = db.Connection.Where(x => x.UserId == Id.ReceiverId).Select(x => x.ConnectionString).ToList(); } else { ListConnetion = db.Connection.Where(x => x.UserId == Id.CreatorId).Select(x => x.ConnectionString).ToList(); } if (ListConnetion.Count() != 0) { var currentConversation = db.Conversation.Where(x => x.ConservationId == ConservationId).SingleOrDefault(); if (UserId == currentConversation.CreatorId) { currentConversation.IsReceiverRead = true; } if (UserId == currentConversation.ReceiverId) { currentConversation.IsCreatorRead = true; } db.Conversation.AddOrUpdate(currentConversation); db.SaveChanges(); } } //Send it to caller Clients.Caller.ReceiverMessage(info); //Send new Message to Receiver if Connecting foreach (var item in ListConnetion) { Clients.Client(item).NewMessageNotification("Bạn đã nhận 1 tin nhắn mới, xem tại Tin nhắn!"); Clients.Client(item).ReceiverMessage(info); } }