public async Task PostAsyncTest(bool expectException)
        {
            // Arrange
            CreateTenantModel tenantModel = new CreateTenantModel(TenantId);
            CreateTenantModel result;

            if (expectException)
            {
                this.mockTenantContainer.Setup(x => x.CreateTenantAsync(It.IsAny <string>(), It.IsAny <string>()))
                .ThrowsAsync(new Exception());
            }
            else
            {
                this.mockTenantContainer.Setup(x => x.CreateTenantAsync(It.IsAny <string>(), It.IsAny <string>()))
                .ReturnsAsync(tenantModel);
            }

            try
            {
                // Act
                result = await this.controller.PostAsync();

                // Assert
                Assert.False(expectException);
            }
            catch (Exception)
            {
                Assert.True(expectException);
            }
        }
Example #2
0
        public int CreateDay1(CreateTenantModel domainModel)
        {
            var username = ClaimsPrincipal.Current.Identity.SplitName();

            // Create repositories
            var tenantRepository      = new TenantRepository();
            var userAccountRepository = new UserAccountRepository();
            var creditCardRepository  = new CreditCardRepository();

            // Get the User
            var user = userAccountRepository.Fetch(username);

            // Create the Tenant
            var tenantId = tenantRepository.Create(user.UserAccountId, domainModel.Tenant);

            // Create the CreditCard
            if (!string.IsNullOrEmpty(domainModel.CreditCard.CreditCardNumber))
            {
                creditCardRepository.Insert(tenantId, domainModel.CreditCard);
            }

            // Update the User
            userAccountRepository.UpdatePesonalDetails(username, domainModel.UserAccount.Firstname, domainModel.UserAccount.Lastname);

            return(tenantId);
        }
Example #3
0
        public async Task <Operation <TTenant> > CreateAsync(CreateTenantModel model)
        {
            var tenant = (TTenant)FormatterServices.GetUninitializedObject(typeof(TTenant));

            tenant.Name             = model.Name;
            tenant.ConcurrencyStamp = model.ConcurrencyStamp ?? $"{Guid.NewGuid()}";

            var result = await _tenantManager.CreateAsync(tenant);

            return(result.ToOperation(tenant));
        }
        public async Task <ActionResult <TenantDto> > CreateTenant(CreateTenantModel model)
        {
            var requestContext = await GetRequestContext();

            var command = Mapper.Map <CreateTenantCommand>(model)
                          .WithRequestContext(requestContext);

            var result = await Mediator.Send(command);

            return(GetResponse(result));
        }
Example #5
0
        public async Task <IActionResult> Create([FromBody] CreateTenantModel model)
        {
            if (!ValidModelState(out var error))
            {
                return(error);
            }

            var result = await _tenantService.CreateAsync(model);

            return(result.Succeeded
                ? Created($"{_options.Value.RootPath ?? string.Empty}/tenants/{result.Data.Id}", result.Data)
                : (IActionResult)BadRequest(result.Errors));
        }
Example #6
0
        public async Task <IActionResult> Create(
            [Bind(
                 nameof(CreateTenantModel.ParentTenantId),
                 nameof(CreateTenantModel.ConfirmPassword),
                 nameof(CreateTenantModel.Email),
                 nameof(CreateTenantModel.LoginDomain),
                 nameof(CreateTenantModel.Password),
                 nameof(CreateTenantModel.TenantName)
                 )]
            CreateTenantModel model)
        {
            if (ModelState.IsValid)
            {
                var t = new Tenant
                {
                    ParentTenantId = model.ParentTenantId.GetValueOrDefault(TenantId),
                    LoginDomain    = model.LoginDomain,
                    TenantName     = model.TenantName
                };
                Rdb.Tenants.Add(t);
                Rdb.Apps.Add(new App
                {
                    Tenant  = t,
                    AppType = AppTypes.Portal,
                    AppName = "Portal"
                });
                await Rdb.SaveChangesAsync();

                var role = ApplicationRole.CreateConfigurationMasterRole(t.TenantId);
                Rdb.Roles.Add(role);
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email, TenantId = t.TenantId, EmailConfirmed = true
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                await Rdb.SaveChangesAsync();

                Rdb.UserRoles.Add(new ApplicationUserRole
                {
                    RoleId = role.Id,
                    UserId = user.Id
                });
                await Rdb.SaveChangesAsync();

                SetToast(AspHelpers.ToastMessages.Saved);
                return(RedirectToAction(ActionNames.TenantsList));
            }
            return(View(ViewNames.TenantEdit, model));
        }
Example #7
0
        public int CreateDay2(CreateTenantModel domainModel)
        {
            var username = ClaimsPrincipal.Current.Identity.SplitName();

            // Create repositories
            var tenantRepository      = new TenantRepository();
            var userAccountRepository = new UserAccountRepository();

            // Get the User
            var user = userAccountRepository.Fetch(username);

            // Create the Tenant
            var tenantId = tenantRepository.Create(user.UserAccountId, domainModel.Tenant);

            return(tenantId);
        }
Example #8
0
        public IHttpActionResult Post(
            [FromBody] CreateTenantModel command)
        {
            if (command == null || !ModelState.IsValid)
            {
                return(this.Error().InvalidParameters("Tenant body parameters missing"));
            }

            var dbProviderConfig = CreateDBProviderConfiguration(command);

            var tenant = Tenant.Create(0, command.Name, command.DefaultTheme, dbProviderConfig);

            _tenantsRepository.Add(tenant);
            _tenantsRepository.SaveChanges();

            return(Ok(_mapper.Map <TenantModel>(tenant)));
        }
Example #9
0
        public IHttpActionResult Put(
            [FromUri] int id,
            [FromBody] CreateTenantModel command)
        {
            if (command == null || !ModelState.IsValid)
            {
                return(this.Error().InvalidParameters("Tenant body parameters missing"));
            }
            if (command.TenantDbProvider == null || command.TenantDbConfiguration == null)
            {
                return(this.Error().InvalidParameters("Tenant Db information missing"));
            }

            var tenant = _tenantsRepository.GetById(id);

            tenant.Change(command.Name,
                          command.DefaultTheme,
                          DatabaseProviderConfiguration.Create(command.TenantDbProvider, command.TenantDbConfiguration));
            _tenantsRepository.Update(tenant);
            _tenantsRepository.SaveChanges();
            var tenantModel = _mapper.Map <TenantModel>(tenant);

            return(Ok(tenantModel));
        }
Example #10
0
 private DatabaseProviderConfiguration CreateDBProviderConfiguration(CreateTenantModel command)
 => String.IsNullOrEmpty(command.TenantDbConnectionString)
             ? DatabaseProviderConfiguration.CreateFromConfiguration(command.TenantDbProvider, command.TenantDbConfiguration)
             : DatabaseProviderConfiguration.Create(command.TenantDbProvider, command.TenantDbConnectionString);