Пример #1
0
        public Result <long> PublishDeleteOrganizationUser(int?organizationUserId, int?userType, long valueDeletedAt, int organizationId)
        {
            if (!organizationUserId.HasValue)
            {
                return(new Result <long>(OrganizationUserServiceErrors.InvalidOrganizationUserId()));
            }

            if (!userType.HasValue)
            {
                return(new Result <long>(OrganizationUserServiceErrors.InvalidUserTypeId()));
            }

            // need to send the domain event to potential interested subscribers
            var message = publisher.CreateMessage(new OrganizationUserDeletedDomainEvent
            {
                UserType           = userType.Value,
                OrganizationUserId = organizationUserId.Value,
                OrganizationId     = organizationId,
                DeletedAt          = valueDeletedAt
            });

            publisher.Publish(message);

            return(new Result <long>(DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()));
        }
Пример #2
0
        public Result <bool> ExistOrganizationUser(int organizationUserId, int organizationId)
        {
            if (organizationUserId <= 0)
            {
                return(new Result <bool>(OrganizationUserServiceErrors.InvalidOrganizationUserId()));
            }
            if (organizationId <= 0)
            {
                return(new Result <bool>(OrganizationUserServiceErrors.InvalidOrganizationId()));
            }

            var organizationUserResult = organizationUserRepository.OrganizationUserExists(organizationUserId, organizationId);

            return(new Result <bool>(organizationUserResult));
        }
Пример #3
0
        public Result <long> PublishCreateOrganizationUser(int organizationUserId, int userType, int organizationId, string transactionId)
        {
            // need to make sure the org user actually exists
            var organizationUserData = organizationUserRepository.GetOrganizationUser(organizationUserId, userType, organizationId);

            if (organizationUserData == null)
            {
                return(new Result <long>(OrganizationUserServiceErrors.InvalidOrganizationUserId()));
            }

            // need to get a hold of the OrgUser metadata
            var profileData           = profileRepository.GetProfile(organizationUserData.ProfileId, organizationId);
            var organizationUserRoles = roleRepository.GetOrganizationUserRoles(organizationUserId, organizationId);

            var roles = string.Empty;

            if (organizationUserRoles.Roles.Count > 0)
            {
                roles = JsonConvert.SerializeObject(organizationUserRoles.Roles);
            }

            // need to send the domain event to potential interested subscribers
            var message = publisher.CreateMessage(new OrganizationUserAddedDomainEvent
            {
                TransactionId      = transactionId,
                UserType           = userType,
                OrganizationUserId = organizationUserId,
                OrganizationId     = organizationUserData.OrganizationId,
                UserId             = organizationUserData.UserId,
                Username           = organizationUserData.Username,
                FirstName          = organizationUserData.FirstName,
                LastName           = organizationUserData.LastName,
                Email               = organizationUserData.Email,
                IsActive            = organizationUserData.IsActive,
                CreatedAt           = organizationUserData.CreatedAt,
                IsLocked            = organizationUserData.IsLocked,
                IsPendingActivation = organizationUserData.IsPendingActivation,
                Profile             = new Dictionary <int, string>(profileData.ProfileValues.Select(p => new KeyValuePair <int, string>(p.ProfileParameterId, p.Value))),
                Roles               = roles
                                      // RelatedOrganizationUsers = TBD
            });

            publisher.Publish(message);

            return(new Result <long>(DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()));
        }
Пример #4
0
        public Result <bool> ExistOrganizationUser(int?organizationUserId, int?userType, int?organizationId)
        {
            if (!organizationUserId.HasValue)
            {
                return(new Result <bool>(OrganizationUserServiceErrors.InvalidOrganizationUserId()));
            }
            if (!userType.HasValue)
            {
                return(new Result <bool>(OrganizationUserServiceErrors.InvalidUserTypeIdError()));
            }
            if (!organizationId.HasValue)
            {
                return(new Result <bool>(OrganizationUserServiceErrors.InvalidOrganizationId()));
            }

            var organizationUserResult = organizationUserRepository.OrganizationUserExists(organizationUserId.Value, userType.Value, organizationId.Value);

            return(new Result <bool>(organizationUserResult));
        }
Пример #5
0
        /// <summary>
        /// Associates two organization users with a given association type.
        /// </summary>
        /// <param name="associationCommand"></param>
        /// <returns></returns>
        public Result <int> CreateOrganizationUsersAssociation(CreateOrganizationUsersAssociationCommand associationCommand)
        {
            if (associationCommand == null)
            {
                var error = OrganizationUserServiceErrors.InvalidAssociateOrgUsersData();
                logger.LogError(error.Code);
                return(new Result <int>(error));
            }

            if (!this.organizationUserRepository.OrganizationUserExists(associationCommand.OrganizationUserId1, associationCommand.OrganizationId) ||
                !this.organizationUserRepository.OrganizationUserExists(associationCommand.OrganizationUserId2, associationCommand.OrganizationId)
                )
            {
                var error = OrganizationUserServiceErrors.InvalidOrganizationUserId();
                logger.LogError(error.Code);
                return(new Result <int>(error));
            }

            var associationExists = this.organizationUserRepository.AssociationExists(associationCommand);

            if (associationExists)
            {
                var error = OrganizationUserServiceErrors.AssociationAlreadyExists();
                logger.LogError(error.Code);
                return(new Result <int>(error));
            }

            //Checks if the primary organizationUser already has an association of the same type with a different user.
            var associationTypeExists = this.organizationUserRepository.AssociationTypeExists(associationCommand.OrganizationUserId1, associationCommand.AssociationType);

            if (associationTypeExists)
            {
                var error = OrganizationUserServiceErrors.AssociationOfTypeAlreadyExistsWithAnotherUser();
                logger.LogError(error.Code);
                return(new Result <int>(error));
            }


            var result = this.organizationUserRepository.CreateAssociationOrganizationUser(associationCommand);

            return(new Result <int>(result));
        }
Пример #6
0
        public Result <AnyOrganizationUserWithSharedUserId> DeleteOrganizationUser(int?organizationUserId, int?userType, int?organizationId)
        {
            if (!organizationId.HasValue)
            {
                return(new Result <AnyOrganizationUserWithSharedUserId>(OrganizationUserServiceErrors.InvalidOrganizationId()));
            }
            if (!userType.HasValue)
            {
                return(new Result <AnyOrganizationUserWithSharedUserId>(OrganizationUserServiceErrors.InvalidUserTypeId()));
            }
            if (!organizationUserId.HasValue)
            {
                return(new Result <AnyOrganizationUserWithSharedUserId>(OrganizationUserServiceErrors.InvalidOrganizationUserId()));
            }
            if (!organizationUserRepository.OrganizationUserExists(organizationUserId.Value, organizationId.Value))
            {
                return(new Result <AnyOrganizationUserWithSharedUserId>(OrganizationUserServiceErrors.NotFoundError()));
            }

            var deletedAt = organizationUserRepository.DeleteOrganizationUser(organizationUserId.Value, userType.Value, organizationId.Value);

            groupRepository.DisassociateOrganizationUserFromAllGroups(new DisassociateOrganizationUserFromAllGroupsCommand
            {
                OrganizationId     = organizationId.Value,
                OrganizationUserId = organizationUserId.Value
            });

            var isLastUserIdRelationship = organizationUserRepository.AnyOrganizationUserWithSharedUserId(organizationUserId.Value);

            isLastUserIdRelationship.DeletedAt = deletedAt;

            var publishResult = PublishDeleteOrganizationUser(
                organizationUserId.Value,
                userType.Value,
                deletedAt,
                organizationId.Value);

            return(new Result <AnyOrganizationUserWithSharedUserId>(isLastUserIdRelationship));
        }