Example #1
0
        public async Task <EmptyResponse> CreateExpertApplicationAsync(
            [FromForm] CreateExpertApplicationRequest request,
            IFormFile scan,
            IFormFile photo,
            IFormFile cv)
        {
            if (!scan.IsImageValid() || !photo.IsImageValid() || !cv.IsCvValid())
            {
                throw new AppErrorException(ErrorCode.InvalidFileUploaded);
            }

            await _ethereumClient.WaitForConfirmationAsync(request.TransactionHash);

            await _expertService.CreateApplicationAsync(request, User.GetUserId(), cv.ToAzureFile(), scan.ToAzureFile(), photo.ToAzureFile());

            return(new EmptyResponse());
        }
Example #2
0
        public async Task CreateApplicationAsync(CreateExpertApplicationRequest request, long userId, AzureFile cv, AzureFile scan, AzureFile photo)
        {
            var country = await GetCountryAsync(request.CountryIsoCode);

            var expertApplication = new ExpertApplication
            {
                FirstName       = request.FirstName,
                LastName        = request.LastName,
                Sex             = request.Sex,
                ApplicantId     = userId,
                BirthDate       = request.BirthDate,
                CountryId       = country.Id,
                City            = request.City,
                Description     = request.Description,
                Why             = request.Why,
                FacebookLink    = request.FacebookLink,
                LinkedInLink    = request.LinkedInLink,
                BitcointalkLink = request.BitcointalkLink,
                DocumentNumber  = request.DocumentNumber,
                DocumentType    = request.DocumentType.ToDomain(),
                ApplyDate       = _clock.UtcNow
            };

            expertApplication.SetAreas(request.Areas);

            _expertApplicationRepository.Add(expertApplication);

            await _expertApplicationRepository.SaveChangesAsync();

            var applicationId = expertApplication.Id.ToString();

            var scanName  = $"application-{applicationId}/scan-{Guid.NewGuid()}{scan.Extension}";
            var photoName = $"application-{applicationId}/photo-{Guid.NewGuid()}{photo.Extension}";
            var cvName    = $"application-{applicationId}/cv-{Guid.NewGuid()}{cv.Extension}";

            var links = await Task.WhenAll(_expertApplicationsStorageProvider.UploadAndGetUriAsync(scanName, scan),
                                           _expertApplicationsStorageProvider.UploadAndGetUriAsync(cvName, cv),
                                           _expertApplicationsStorageProvider.UploadAndGetUriAsync(photoName, photo));

            expertApplication.ScanUrl  = links[0];
            expertApplication.CvUrl    = links[1];
            expertApplication.PhotoUrl = links[2];

            await _expertApplicationRepository.SaveChangesAsync();
        }