Пример #1
0
        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 = ""
                }));
            }
        }
Пример #3
0
        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();
            }
        }
Пример #4
0
 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));
 }
Пример #5
0
        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 = ""
                }));
            }
        }
Пример #6
0
        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);
            }
        }