/// <summary> /// It will create a new contract. /// </summary> /// <param name="contractEvent">New contract Data.</param> /// <returns>Returns true when a new contract created else false.</returns> public async Task <bool> CreateAsync(ContractEvent contractEvent) { _logger.LogInformation($"[{nameof(CreateAsync)}] - Processing message for contract creation. ContractNumber: {contractEvent.ContractNumber}, ContractVersion: {contractEvent.ContractVersion}"); var createRequest = _contractEventMapper.GetCreateRequest(contractEvent); var fileName = _contractEventMapper.GetFileNameForContractDocument(contractEvent.UKPRN, contractEvent.ContractNumber, contractEvent.ContractVersion); var folderName = _contractEventMapper.GetFolderNameForContractDocument(contractEvent.FundingType.GetEnumShortName(), contractEvent.ContractPeriodValue, _spConfig.PublicationFolderSuffix); var urlSafeFolderName = _contractEventMapper.GetUrlSafeFolderNameForContractDocument(folderName); var pdfDoc = await _sharePointClientService.GetDocument(fileName, urlSafeFolderName); var pdfADoc = _documentManagementService.ConvertToPdfA(pdfDoc); createRequest.ContractContent = _contractEventMapper.GetContractContent(pdfADoc, fileName); await _contractsDataService.CreateContractAsync(createRequest); return(true); }