Example #1
0
        public async Task <IntegrationRestoreResponse> RestoreIntegration(IntegrationRestoreRequest request)
        {
            var response = new IntegrationRestoreResponse();

            var currentUser = _cacheManager.GetCachedCurrentUser(request.CurrentUserId);

            if (await _organizationRepository.Any(x => x.Id == currentUser.OrganizationId && !x.IsActive))
            {
                response.SetInvalid();
                return(response);
            }

            var integration = await _integrationRepository.Select(x => x.Uid == request.IntegrationUid);

            if (integration.IsNotExist())
            {
                response.SetInvalidBecauseEntityNotFound();
                response.InfoMessages.Add("integration_not_found");
                return(response);
            }

            var revisions = await _integrationRepository.SelectRevisions(integration.Id);

            if (revisions.All(x => x.Revision != request.Revision))
            {
                response.SetInvalidBecauseEntityNotFound();
                response.InfoMessages.Add("revision_not_found");
                return(response);
            }

            var result = await _integrationRepository.RestoreRevision(request.CurrentUserId, integration.Id, request.Revision);

            if (result)
            {
                response.Status = ResponseStatus.Success;
                return(response);
            }

            response.SetFailed();
            return(response);
        }