public async Task <IActionResult> Post([FromBody] OrganizationDefinition organizationDefinition) { if (organizationDefinition is null) { throw new ArgumentNullException(nameof(organizationDefinition)); } if (!organizationDefinition.TryValidate(ValidatorProvider, out var validationResult)) { return(ErrorResult .BadRequest(validationResult) .ToActionResult()); } var nameExists = await organizationRepository .NameExistsAsync(UserService.CurrentUserTenant, organizationDefinition.Slug) .ConfigureAwait(false); if (nameExists) { return(ErrorResult .Conflict($"The Organication '{organizationDefinition.Slug}' already exists. Please try your request again with a unique Organization Name or Id.") .ToActionResult()); } var organization = new Organization { Id = Guid.NewGuid().ToString(), Tenant = UserService.CurrentUserTenant, DisplayName = organizationDefinition.DisplayName, SubscriptionId = organizationDefinition.SubscriptionId, Location = organizationDefinition.Location }; var currentUser = await UserService .CurrentUserAsync(null, null, allowUnsafe : true) .ConfigureAwait(false); currentUser.Role = OrganizationUserRole.Owner; currentUser.Organization = organization.Id; currentUser.OrganizationName = organization.Slug; var command = new OrganizationCreateCommand(currentUser, organization); return(await Orchestrator .InvokeAndReturnActionResultAsync(command, Request) .ConfigureAwait(false)); }
public async Task <IActionResult> Post([FromBody] OrganizationCreateCommand command) { var id = await _mediator.Send(command); return(await Get(id)); }