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()); }
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(); }