public async Task <IActionResult> AddUserToGroup(AddUserToGroupViewModel model)
        {
            bool hasPermission = await userHasRole("Admin");

            if (!hasPermission)
            {
                return(BadRequest());
            }

            GroupAccess groupAccess = new GroupAccess
            {
                GroupId           = model.GroupId,
                ApplicationUserId = model.ApplicationUserId
            };

            _context.GroupAccess.Add(groupAccess);
            _context.SaveChanges();

            return(Ok());
        }
Exemple #2
0
        public AddUserToGroupPage()
        {
            AddUserToGroupViewModel add = new AddUserToGroupViewModel();

            InitializeComponent();
        }
Exemple #3
0
        public async Task <IActionResult> AddUserToGroup(AddUserToGroupViewModel model)
        {
            try
            {
                var iDomain   = Service <IdentityDomain>();
                var domain    = Service <GroupDomain>();
                var addedUser = model.user_id != null ?
                                await iDomain.GetUserById(model.user_id)
                    : iDomain.GetUserByEmpCode(model.employee_code);

                var group = domain.Groups.Id(model.group_id);
                if (addedUser == null || group == null)
                {
                    return(NotFound(new ApiResult
                    {
                        Code = ResultCode.NotFound,
                        Data = null,
                        Message = ResultCode.NotFound.DisplayName()
                    }));
                }
                var mess = "";
                if (group.GroupUsers.Any(u => u.UserId == addedUser.Id))
                {
                    mess += "User already in group\n";
                }
                var roles = await iDomain.GetRoles(addedUser);

                if (roles.Contains("Admin"))
                {
                    mess += "Can not add admin to a group\n";
                }
                if (!string.IsNullOrEmpty(mess))
                {
                    return(BadRequest(new ApiResult
                    {
                        Code = ResultCode.FailValidation,
                        Message = mess,
                        Data = null
                    }));
                }

                var entity = domain.AddUserToGroup(group, addedUser);
                var ev     = _eDomain.AddUserToGroup(group, addedUser, User);
                _uow.SaveChanges();

                var data = new Dictionary <string, string>();
                data["title"]   = "Your group has a new member";
                data["message"] = ev.Message;
                _eDomain.Notify(new Message
                {
                    Topic = $"GROUP_MEMBER_{group.Id}",
                    Data  = data
                });

                var userData = new Dictionary <string, string>();
                userData["title"]   = "You've been added to a group";
                userData["message"] = ev.Message;
                _eDomain.Notify(new Message
                {
                    Topic = addedUser.Id,
                    Data  = userData
                });
                _eDomain.SubscribeToTopic(addedUser, $"GROUP_MEMBER_{group.Id}");

                _logger.CustomProperties(new { model }).Info("Add user to group");

                return(Ok(entity.Id));
            }
            catch (Exception e)
            {
                _logger.Error(e);
                return(Error(new ApiResult()
                {
                    Code = ResultCode.UnknownError,
                    Message = ResultCode.UnknownError.DisplayName() + ": " + e.Message
                }));
            }
        }