Example #1
0
        public async Task <IntegrationCreateResponse> CreateIntegration(IntegrationCreateRequest request)
        {
            var response = new IntegrationCreateResponse();

            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.SetInvalidBecauseNotActive("organization");
                return(response);
            }

            if (await _integrationRepository.Any(x => x.Name == request.Name && x.OrganizationId == currentUser.OrganizationId))
            {
                response.SetFailedBecauseNameMustBeUnique("integration");
                return(response);
            }

            var entity = _integrationFactory.CreateEntityFromRequest(request, currentUser.Organization);
            await _integrationRepository.Insert(request.CurrentUserId, entity);

            response.Item   = _integrationFactory.CreateDtoFromEntity(entity);
            response.Status = ResponseStatus.Success;
            return(response);
        }