Example #1
0
        public async Task <IActionResult> GetGroup(int id)
        {
            try
            {
                var group = await db.Groups.Include(g => g.ChildGroups).Include(g => g.Parent).FirstOrDefaultAsync(g => g.GroupId == id);

                if (group == null)
                {
                    return(BadRequest());
                }

                var dto = new GroupDetailsDTO()
                {
                    Id          = group.GroupId,
                    Name        = group.Name,
                    Description = group.Description,
                    ParentGroup = new GroupDTO()
                    {
                        Name        = group.Parent?.Name,
                        Description = group.Parent?.Description,
                        Id          = (group.Parent?.GroupId).GetValueOrDefault()
                    },
                    ChildGroups = group.ChildGroups.Select(cg => new GroupDTO()
                    {
                        Name        = cg.Name,
                        Description = cg.Description,
                        Id          = cg.GroupId
                    }).ToList()
                };

                return(Ok(dto));
            }
            catch (Exception)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError));
            }
        }
Example #2
0
        public IActionResult GroupDetails(Guid Id)
        {
            try
            {
                var CurrentUser = _context.Users.Find(userManager.GetUserId(User));
                if (CurrentUser is null)
                {
                    throw new DomainException(ErrorMessages.NotSignedIn);
                }
                var existingAccount = _userStore.GetByIdentityUserId(CurrentUser.Id);
                if (existingAccount.AccountStatus.Equals(Status.Suspended))
                {
                    signInManager.SignOutAsync();
                }

                var existingGroup = _GroupStore.GetGroupById(Id);
                if (existingGroup is null)
                {
                    throw new DomainException(ErrorMessages.GroupDoesNotExist);
                }


                var groupMembers = _GroupStore.GetGroupMembers(existingGroup.Id);
                var Owner        = _GroupStore.GetGroupOwner(existingGroup.Id);
                var Requests     = _GroupRequestStore.GetGroupRequestsOfGroup(existingGroup.Id);
                var RequestDTOs  = new List <GroupRequestDTO>();

                foreach (var request in Requests)
                {
                    var requestUser     = _GroupRequestStore.GetGroupRequestUser(request.RequestUserId);
                    var GroupRequestDTO = new GroupRequestDTO()
                    {
                        Username      = requestUser.Username,
                        Id            = request.Id,
                        GroupID       = request.GroupId,
                        RequestDate   = request.RequestDate,
                        RequestUserId = request.RequestUserId
                    };
                    RequestDTOs.Add(GroupRequestDTO);
                }
                var CurrentUserAsRequestUser = RequestDTOs.FirstOrDefault(x => x.Username == CurrentUser.UserName);
                var CurrentUserAsMember      = groupMembers.FirstOrDefault(x => x.Username == CurrentUser.UserName);

                var GroupAdmin = _GroupStore.GetGroupMembers(Id)
                                 .FirstOrDefault(x => x.Type.Equals(GroupUserType.Admin) &&
                                                 x.UserId.Equals(CurrentUser.Id));

                var GroupDetailsDTO = new GroupDetailsDTO()
                {
                    Id              = existingGroup.Id,
                    Name            = existingGroup.Name,
                    Description     = existingGroup.Description,
                    CreationDate    = existingGroup.CreationDate,
                    GroupOwner      = Owner.Username,
                    CurrentUsername = CurrentUser.UserName,
                    GroupRequests   = RequestDTOs,
                    PendingRequest  = (CurrentUserAsRequestUser != null) ? true : false,
                    ExistingMember  = (CurrentUserAsMember != null) ? true : false,
                    Admin           = (GroupAdmin != null) ? true : false
                };
                foreach (var member in groupMembers)
                {
                    var GroupMemberDTO = new GroupMemberDTO()
                    {
                        Id       = member.Id,
                        Username = member.Username,
                        UserId   = member.UserId,
                        Type     = member.Type
                    };
                    GroupDetailsDTO.GroupMembers.Add(GroupMemberDTO);
                }
                return(View(GroupDetailsDTO));
            }
            catch (DomainException ex)
            {
                _logger.LogError(ex.Message);
                if (ex.Message.Equals(ErrorMessages.NotSignedIn))
                {
                    return(RedirectToAction(ActionName.Login, ControllerName.Accounts));
                }

                return(RedirectToAction(ActionName.NotFound, ControllerName.Accounts));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message);
                return(RedirectToAction(ActionName.ServerError, ControllerName.Accounts));
            }
        }