Ejemplo n.º 1
0
        public async Task <GroupDto> GetUserGroupsById(int userId, int groupId)
        {
            var group = await _unitOfWork.Repository <Group>()
                        .Query()
                        .Include(g => g.Members)
                        .SingleAsync(g => g.Id == groupId);

            var selectedMembersId = group.Members.Select(m => m.Id);

            if (group != null)
            {
                if (selectedMembersId.Contains(userId))
                {
                    return(GroupDto.FromModel(group));
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                return(null);
            }
        }
Ejemplo n.º 2
0
 public async Task <IEnumerable <GroupDto> > GetUserGroups(string name)
 {
     return((await _unitOfWork.Repository <Group>()
             .Query()
             .Include(g => g.Members)
             .Where(item => item.Name.Contains(name))
             .ToListAsync())
            .Select(gr => GroupDto.FromModel(gr)));
 }
Ejemplo n.º 3
0
        public async Task <GroupDto> EditGroup(int userId, int groupId, GroupDto group)
        {
            var editGroup = await _unitOfWork.Repository <Group>().GetAsync(groupId);

            if (editGroup.GroupCreator.Id != userId)
            {
                return(null);
            }

            editGroup.Name        = group.Name;
            editGroup.Description = group.Description;
            editGroup.Members.Clear();

            foreach (var memberId in group.SelectedMembersId)
            {
                editGroup.Members.Add(await _unitOfWork.Repository <User>().GetAsync(memberId));
            }

            _unitOfWork.Repository <Group>().Attach(editGroup);
            await _unitOfWork.SaveAsync();

            return(GroupDto.FromModel(editGroup));
        }
Ejemplo n.º 4
0
        public async Task <GroupDto> AddGroup(int userId, GroupDto group)
        {
            if (group == null)
            {
                return(null);
            }
            var newGroup = new Group()
            {
                Name         = group.Name,
                CreatedAt    = DateTime.Now,
                Description  = group.Description,
                GroupCreator = await _unitOfWork.Repository <User>().GetAsync(userId),
                Avatar       = group.Avatar
            };

            foreach (var memberId in group.SelectedMembersId)
            {
                newGroup.Members.Add(await _unitOfWork.Repository <User>().GetAsync(memberId));
            }
            newGroup.Members.Add(newGroup.GroupCreator);

            _unitOfWork.Repository <Group>().Add(newGroup);
            await _unitOfWork.SaveAsync();

            var newGr = _unitOfWork.Repository <Group>().All().LastOrDefault();

            if (newGr.Avatar != "")
            {
                string folderPath = HttpContext.Current.Server.MapPath("~/App_Data/AttachedFiles/");

                if (!Directory.Exists(folderPath))
                {
                    Directory.CreateDirectory(folderPath);
                }

                var filePath = Directory.EnumerateFiles(folderPath, newGr.Avatar + ".*", SearchOption.AllDirectories)
                               .Where(s => s.EndsWith(".jpg") || s.EndsWith(".png") || s.EndsWith(".bmp") || s.EndsWith(".gif")).FirstOrDefault();

                if (filePath != null)
                {
                    string fileType = filePath.Substring(filePath.LastIndexOf('.') + 1);
                    string destPath = HttpContext.Current.Server.MapPath("~/App_Data/Avatars/") + newGr.Id + "_g_avatar." + fileType;
                    try
                    {
                        File.Delete(destPath);
                        File.Move(filePath, destPath);
                        newGr.Avatar = destPath.Substring(destPath.LastIndexOf('\\') + 1);
                    }
                    catch
                    {
                        ;                         //Do nothing
                    }
                    _unitOfWork.Repository <Group>().Attach(newGr);
                }
            }
            await _unitOfWork.SaveAsync();

            await _chatHubService.AddGroup(userId);

            return(GroupDto.FromModel(newGr));
        }
Ejemplo n.º 5
0
 public async Task <IEnumerable <GroupDto> > GetUserGroups(int userId)
 {
     return((await _unitOfWork.Repository <Group>().AllAsync()).Where(item => item.Members.Any(i => i.Id == userId))
            .ToList()
            .Select(gr => GroupDto.FromModel(gr)));
 }