Ejemplo n.º 1
0
        /// <summary>
        /// 是否群组成员
        /// </summary>
        /// <param name="groupId">群组Id</param>
        /// <param name="userId">用户Id</param>
        /// <returns>是群组成员返回true,否则返回false</returns>
        public bool IsMember(long groupId, long userId)
        {
            GroupMemberRole role = GetGroupMemberRole(groupId, userId);

            if (role >= GroupMemberRole.Member)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Ejemplo n.º 2
0
 internal void Join(GroupMemberRole role)
 {
     if (false == _Joined)
     {
         GroupCommunicateLayer gclprocessor = _corelogicProcessor.GroupCommunicateProcessor;
         try
         {
             gclprocessor.JoinGroup(this, role);
             _Joined = true;
             __refereshGroupMembersInfo();
         }
         catch (Exception ex)
         {
             throw ex;
         }
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// 加入一个群组
 /// </summary>
 /// <param name="group">指定的群组</param>
 /// <param name="role">设备在群组中的角色</param>
 /// <param name="communicateType">通讯的网络形式</param>
 public void JoinGroup(GroupDevice group, GroupMemberRole role, CommunicatType communicateType)
 {
     if (CommunicatType.Synchronization == communicateType)
     {
         try
         {
             base.CoSynJoinGroup(group, role);
         }
         catch (System.Exception ex)
         {
             throw ex;
         }
     }
     else
     {
         base.CoAsynJoinGroup(group, role);
     }
 }
 protected void CoAsynJoinGroup(GroupDevice group, GroupMemberRole role)
 {
     _asynJoinGroupRunner.EnqueueMessage(new KeyValuePair <GroupDevice, GroupMemberRole>(group, role));
 }
Ejemplo n.º 5
0
        // GET: Group
        public ActionResult Index(int?id)
        {
            var _groupService       = this.Service <IGroupService>();
            var _groupMemberService = this.Service <IGroupMemberService>();
            var _postService        = this.Service <IPostService>();
            var _sportService       = this.Service <ISportService>();
            var _followService      = this.Service <IFollowService>();
            var _userService        = this.Service <IAspNetUserService>();
            var _challengeService   = this.Service <IChallengeService>();
            var _hobbyService       = this.Service <IHobbyService>();
            var _placeService       = this.Service <IPlaceService>();

            Group group = _groupService.FirstOrDefaultActive(g => g.Id == id);

            if (group != null)
            {
                GroupFullInfoViewModel model = Mapper.Map <GroupFullInfoViewModel>(group);

                //check current user role
                string curUserId = User.Identity.GetUserId();

                GroupMemberRole role = _groupMemberService.CheckRoleMember(curUserId, id.Value);

                switch (role)
                {
                case GroupMemberRole.Admin:
                    model.IsAdmin         = true;
                    model.IsMember        = true;
                    model.isPendingMember = false;
                    break;

                case GroupMemberRole.Member:
                    model.IsAdmin         = false;
                    model.IsMember        = true;
                    model.isPendingMember = false;
                    break;

                case GroupMemberRole.NotMember:
                    model.IsAdmin         = false;
                    model.IsMember        = false;
                    model.isPendingMember = false;
                    break;

                case GroupMemberRole.PendingMember:
                    model.IsAdmin         = false;
                    model.IsMember        = false;
                    model.isPendingMember = true;
                    break;
                }

                //List<GroupMember> listGroup = _groupMemberService.GetActive(g => g.UserId.Equals(curUserId)).ToList();
                //foreach (var item in listGroup)
                //{
                //    if(item.GroupId == model.Id)
                //    {
                //        model.IsMember = true;
                //        if(item.Admin)
                //        {
                //            model.IsAdmin = true;
                //        }
                //    }
                //}

                //post count
                model.PostCount = _postService.GetActive(p => p.GroupId == id).ToList().Count();

                //member count
                model.MemberCount = _groupMemberService.GetActive(g => g.GroupId == id && g.Status == (int)GroupMemberStatus.Approved).ToList().Count();

                if (model.PlaceId != null)
                {
                    var place = _placeService.FirstOrDefaultActive(p => p.Id == model.PlaceId);
                    if (place != null)
                    {
                        model.PlaceName = place.Name;
                    }
                }
                if (model.StartTime != null)
                {
                    model.StartTimeString = model.StartTime.Value.Hours.ToString("00") + ":" + model.StartTime.Value.Minutes.ToString("00");
                }
                if (model.EndTime != null)
                {
                    model.EndTimeString = model.EndTime.Value.Hours.ToString("00") + ":" + model.EndTime.Value.Minutes.ToString("00");
                }
                if (model.AvailableDays != null)
                {
                    var bits = new bool[8];
                    for (var i = 7; i >= 0; i--)
                    {
                        bits[i] = (model.AvailableDays & (1 << i)) != 0;
                    }
                    var dayOfWeek = "";
                    if (bits[1])
                    {
                        dayOfWeek += "CN ";
                    }
                    if (bits[2])
                    {
                        dayOfWeek += "T2 ";
                    }
                    if (bits[3])
                    {
                        dayOfWeek += "T3 ";
                    }
                    if (bits[4])
                    {
                        dayOfWeek += "T4 ";
                    }
                    if (bits[5])
                    {
                        dayOfWeek += "T5 ";
                    }
                    if (bits[6])
                    {
                        dayOfWeek += "T6 ";
                    }
                    if (bits[7])
                    {
                        dayOfWeek += "T7 ";
                    }
                    model.Days = dayOfWeek;
                }

                //get sport list for post
                var sports = _sportService.GetActive()
                             .Select(s => new SelectListItem
                {
                    Text  = s.Name,
                    Value = s.Id.ToString()
                }).OrderBy(s => s.Value);
                ViewBag.Sport = sports;

                var friends = new List <SelectListItem>();
                List <GroupMember> gmList = _groupMemberService.GetActive(g => g.GroupId == id.Value).ToList();
                //get followed friend
                friends = _followService.GetActive(f => f.FollowerId == curUserId)
                          .Select(s => new SelectListItem
                {
                    Text  = s.AspNetUser.FullName,
                    Value = s.AspNetUser.Id
                }).OrderBy(s => s.Value).ToList();

                int frCount = friends.Count();
                var tmpFrs  = new List <SelectListItem>();
                tmpFrs.AddRange(friends);
                for (int i = 0; i < frCount; i++)
                {
                    SelectListItem si = tmpFrs.ElementAt(i);
                    foreach (var it in gmList)
                    {
                        if (si.Value.Equals(it.UserId) || tmpFrs.ElementAt(i).Equals(curUserId))
                        {
                            friends.Remove(tmpFrs.ElementAt(i));
                        }
                    }
                }

                ViewBag.friends = friends;

                //member
                List <GroupMember> ListGroupMember = _groupMemberService.GetActive(g => g.GroupId == id && g.Status == (int)GroupMemberStatus.Approved).ToList();
                List <GroupMemberFullInfoModel> ListGroupMemberVM = Mapper.Map <List <GroupMemberFullInfoModel> >(ListGroupMember);
                for (int i = 0; i < ListGroupMember.Count(); i++)
                {
                    GroupMember gm   = ListGroupMember.ElementAt(i);
                    AspNetUser  user = _userService.FirstOrDefaultActive(u => u.Id == gm.UserId);
                    AspNetUserFullInfoViewModel userFull = Mapper.Map <AspNetUserFullInfoViewModel>(user);
                    ListGroupMemberVM[i].AspNetUser = userFull;
                }

                //list pending member
                List <GroupMember> ListPendingMember = _groupMemberService.GetActive(g => g.GroupId == id && g.Status == (int)GroupMemberStatus.Pending).ToList();
                List <GroupMemberFullInfoModel> ListPendingMemberVM = Mapper.Map <List <GroupMemberFullInfoModel> >(ListPendingMember);
                for (int i = 0; i < ListPendingMember.Count(); i++)
                {
                    GroupMember gm   = ListPendingMember.ElementAt(i);
                    AspNetUser  user = _userService.FirstOrDefaultActive(u => u.Id == gm.UserId);
                    AspNetUserFullInfoViewModel userFull = Mapper.Map <AspNetUserFullInfoViewModel>(user);
                    ListPendingMemberVM[i].AspNetUser = userFull;
                }

                //get list user that cur user followed
                List <Follow> listFollow = _followService.GetActive(f => f.FollowerId == curUserId).ToList();
                if (listFollow != null && listFollow.Count > 0)
                {
                    foreach (var followedUser in listFollow)
                    {
                        foreach (var groupMember in ListGroupMemberVM)
                        {
                            if (followedUser.UserId == groupMember.AspNetUser.Id)
                            {
                                groupMember.isFollowed = true;
                            }
                        }
                    }
                }

                //get list group that this user joined
                List <Group> groupList = _groupService.GetActive(p => p.GroupMembers.Where(f =>
                                                                                           f.UserId == curUserId && f.Status == (int)GroupMemberStatus.Approved).ToList().Count > 0).ToList();
                ViewBag.GroupList = groupList;

                //WWWWWWWWWWWWWWWWWWWWWWWWTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                //get suggest group
                List <Group> groupListSG = _groupService.GetActive(p => p.GroupMembers.Where(f =>
                                                                                             f.UserId == curUserId).ToList().Count > 0).ToList();
                ViewBag.GroupList = groupList;
                List <Group> AllGroups  = _groupService.GetActive().ToList();
                List <Group> TempGroups = AllGroups.Except(groupListSG).ToList();

                List <Hobby> listHobbies   = _hobbyService.GetActive(h => h.UserId.Equals(curUserId)).ToList();
                List <Group> suggestGroups = new List <Group>();
                foreach (var item in TempGroups)
                {
                    foreach (var item1 in listHobbies)
                    {
                        if (item.SportId == item1.SportId)
                        {
                            suggestGroups.Add(item);
                        }
                    }
                }
                List <GroupFullInfoViewModel> suggestGroupsVM = Mapper.Map <List <GroupFullInfoViewModel> >(suggestGroups);

                //List<GroupMember> listGroup = _groupMemberService.GetActive(g => g.UserId.Equals(curUserId) && g.Status == (int)GroupMemberStatus.Approved).ToList();
                //List<Group> suggestGroups = _groupService.GetSuggestGroup(id.Value);
                //List<GroupFullInfoViewModel> suggestGroupsVM = Mapper.Map<List<GroupFullInfoViewModel>>(suggestGroups);
                //foreach (var item in suggestGroupsVM)
                //{
                //    item.MemberCount = _groupMemberService.GetActive(g => g.GroupId == item.Id).ToList().Count();
                //    foreach (var gm in listGroup)
                //    {
                //        if(gm.GroupId == item.Id)
                //        {
                //            item.IsMember = true;
                //        }
                //    }
                //}

                //get suggest group for challenge
                List <Group> suggestGroupChallenge = _groupService.GetActive(g => g.SportId == model.SportId && g.Id != model.Id).ToList();

                //get challenge request
                List <ChallengeDetailViewModel> challengeRequestList = Mapper.Map <List <ChallengeDetailViewModel> >(_challengeService.GetAllChallengeRequest(id.Value).ToList());

                //get list that this group was fighted
                List <ChallengeDetailViewModel> challengedList = Mapper.Map <List <ChallengeDetailViewModel> >(_challengeService.GetChallengedList(id.Value).ToList());

                //get not operate challenge list
                List <ChallengeDetailViewModel> notOperateChallengeList = Mapper.Map <List <ChallengeDetailViewModel> >(_challengeService.GetNotOperateChallengeList(id.Value).ToList());

                //get sent challenge request
                List <ChallengeDetailViewModel> sentChallengeRequest = Mapper.Map <List <ChallengeDetailViewModel> >(_challengeService.GetSentChallengeRequest(id.Value).ToList());

                ViewBag.sentChallengeRequest    = sentChallengeRequest;
                ViewBag.notOperateChallengeList = notOperateChallengeList;
                ViewBag.challengedList          = challengedList;
                ViewBag.challengeRequestList    = challengeRequestList;
                ViewBag.groupMember             = ListGroupMemberVM;
                ViewBag.pendingMembers          = ListPendingMemberVM;
                ViewBag.groupId               = id.Value;
                ViewBag.suggestGroups         = suggestGroupsVM;
                ViewBag.suggestGroupChallenge = suggestGroupChallenge;
                return(View(model));
            }
            else
            {
                return(RedirectToAction("PageNotFound", "Errors"));
            }
        }