Ejemplo n.º 1
0
        public void CreateAssociationOrganizationUser_Test()
        {
            var transactionMock = new Mock <IDbContextTransaction>();

            database.Setup(d => d.BeginTransaction()).Returns(transactionMock.Object);
            context.Setup(e => e.Database).Returns(database.Object);
            SetupOrganizationUsersDbSet(new List <OrganizationUserEntity>());

            var command = new CreateOrganizationUsersAssociationCommand
            {
                OrganizationId      = 1,
                OrganizationUserId1 = 1,
                OrganizationUserId2 = 1,
                AssociationType     = 2,
                TransactionId       = "abc"
            };

            var associatedUsers = Ext.MockDbSet(new List <AssociatedOrganizationUserEntity> {
                new AssociatedOrganizationUserEntity()
            });

            context.Setup(ctx => ctx.AssociatedOrganizationUserEntities).Returns(associatedUsers.Object);

            var res = organizationUserRepository.CreateAssociationOrganizationUser(command);



            Assert.True(res >= 0);
        }
Ejemplo n.º 2
0
 public bool AssociationExists(CreateOrganizationUsersAssociationCommand associationCommand) =>
 this
 .context
 .AssociatedOrganizationUserEntities
 .Any(d => d.AssociationType == associationCommand.AssociationType &&
      d.OrganizationUserId1 == associationCommand.OrganizationUserId1 &&
      d.OrganizationUserId2 == associationCommand.OrganizationUserId2 &&
      d.DeletedAt == null);
Ejemplo n.º 3
0
        public void UnDeleteAssociationOrganizationUser(CreateOrganizationUsersAssociationCommand associationCommand, int associatedOrganizationUserEntityId)
        {
            var entityToUpdate = this.context.AssociatedOrganizationUserEntities.First(aoue => aoue.AssociatedOrganizationUserEntityId == associatedOrganizationUserEntityId);

            //TODO: add UpdatedBy details for traceability
            entityToUpdate.UpdatedAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
            entityToUpdate.DeletedBy = null;
            entityToUpdate.DeletedAt = null;

            this.context.SaveChanges();
        }
Ejemplo n.º 4
0
        /// <inheritdoc />
        public int CreateAssociationOrganizationUser(CreateOrganizationUsersAssociationCommand associationCommand)
        {
            var now    = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
            var entity = mapper.Map <AssociatedOrganizationUserEntity>(associationCommand);

            //TODO: add CreatedBy details for traceability
            entity.CreatedAt = now;
            entity.UpdatedAt = now;
            this.context.AssociatedOrganizationUserEntities.Add(entity);
            context.SaveChanges();
            return(entity.AssociatedOrganizationUserEntityId);
        }
Ejemplo n.º 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));
        }