Exemple #1
0
        public async Task <UserChangeActivationResponse> ChangeActivationForUser(UserChangeActivationRequest request)
        {
            var response = new UserChangeActivationResponse();

            var currentUser = _cacheManager.GetCachedCurrentUser(request.CurrentUserId);

            if (!currentUser.IsAdmin)
            {
                response.SetInvalid();
                return(response);
            }

            if (await _organizationRepository.Any(x => x.Id == currentUser.OrganizationId && !x.IsActive))
            {
                response.SetInvalidBecauseParentNotActive();
                return(response);
            }

            var entity = _cacheManager.GetCachedUser(request.UserUid);

            if (entity.OrganizationId != currentUser.OrganizationId)
            {
                response.SetInvalid();
                return(response);
            }

            entity.IsActive = !entity.IsActive;

            var result = await _userRepository.Update(request.CurrentUserId, entity);

            if (result)
            {
                _cacheManager.UpsertUserCache(entity, currentUser);

                response.Status = ResponseStatus.Success;
                return(response);
            }

            response.SetFailed();
            return(response);
        }