예제 #1
0
        private NewContractDTO GetNewContractToSign(ContractInvestor contractInvestor)
        {
            DocumentContractDTO documentToSign = new DocumentContractDTO()
            {
                Name   = contractInvestor.FileName,
                Base64 = GetFileInBytes(contractInvestor.FileName)
            };

            UserContractDTO userSign = new UserContractDTO()
            {
                Name  = contractInvestor.FullName,
                Email = contractInvestor.Email
            };

            NewContractDTO newContractDTO = new NewContractDTO()
            {
                Title      = Constants.Contract.TitleContractInvestor,
                Language   = Constants.Contract.Language_Spanish,
                TemplateId = Constants.Contract.TemplateIdInvesor
            };

            newContractDTO.Documents.Add(documentToSign);
            newContractDTO.Users.Add(userSign);

            return(newContractDTO);
        }
        public async Task <ResponseTOCContractDTO> GenerateDocumentTOC(InvestorInfo investorInfo)
        {
            if (investorInfo == null)
            {
                throw new ArgumentNullException(nameof(investorInfo));
            }

            GeneratePDF generatePDF = new GeneratePDF();

            string newDocumentFileName = generatePDF.GenerateInvestorDocument(investorInfo);

            ResponseTOCContractDTO response = new ResponseTOCContractDTO();

            if (!string.IsNullOrWhiteSpace(newDocumentFileName))
            {
                ContractInvestor contractInvestor = new ContractInvestor()
                {
                    FileName  = newDocumentFileName,
                    Email     = investorInfo.Email,
                    FullName  = string.Concat(investorInfo.FirstName, " ", investorInfo.LastName),
                    DocNumber = investorInfo.DocumentNumber
                };

                response = await _tocLogic.CreateContract(contractInvestor);
            }

            return(response);
        }
        public async Task <ResponseTOCContractDTO> CreateContract(ContractInvestor contractInvestor)
        {
            NewRequestContractDTO contractToSend = GetNewContractToSign(contractInvestor);

            ResponseTOCContractDTO responseContractDTO = new ResponseTOCContractDTO();

            using (var httpClient = new HttpClient())
            {
                string jsonSigners = JsonConvert.SerializeObject(contractToSend.Signers);

                ////Convert object properties in lowercase
                var newContractObject = JObject.Parse(jsonSigners, new JsonLoadSettings());
                JsonHelpers.ChangePropertiesToLowerCase_TOC(newContractObject);

                try
                {
                    httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("multipart/form-data"));
                    httpClient.DefaultRequestHeaders.Add("Authorization", _tocSettings.API_Key);

                    using (var form = new MultipartFormDataContent())
                    {
                        string filePath = @"Template_Investor\" + contractInvestor.FileName;

                        using (var fileContent = new ByteArrayContent(await File.ReadAllBytesAsync(filePath)))
                        {
                            fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data");
                            form.Add(fileContent, "file", Path.GetFileName(filePath));
                            form.Add(new StringContent(newContractObject.ToString()), "signers");
                            form.Add(new StringContent(contractToSend.Message), "message");
                            form.Add(new StringContent(contractToSend.Lang), "lang");
                            var builder = new UriBuilder(new Uri(_tocSettings.API_Url + EndPointURL));

                            using (var response = await httpClient.PostAsync(builder.Uri, form))
                            {
                                string apiResponse = await response.Content.ReadAsStringAsync();

                                responseContractDTO = JsonConvert.DeserializeObject <ResponseTOCContractDTO>(apiResponse);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }

            return(responseContractDTO);
        }
        private NewRequestContractDTO GetNewContractToSign(ContractInvestor contractInvestor)
        {
            SignerDTO signerDTO = new SignerDTO();

            signerDTO.Firmantes.Add(contractInvestor.Email);
            signerDTO.Identificadores.Add(contractInvestor.DocNumber);
            signerDTO.Copies.Add(Constants.Contract.CopyEmailTo);

            NewRequestContractDTO newContractDTO = new NewRequestContractDTO()
            {
                File    = GetFileInBytes(contractInvestor.FileName),
                Signers = signerDTO,
                Message = Constants.Contract.MessageWelcome,
                Lang    = Constants.Contract.Language_Spanish
            };

            return(newContractDTO);
        }
예제 #5
0
        public async Task <ResponseContractDTO> CreateContract(ContractInvestor contractInvestor)
        {
            NewContractDTO contractToSend = GetNewContractToSign(contractInvestor);

            ResponseContractDTO responseContractDTO = new ResponseContractDTO();

            using (var httpClient = new HttpClient())
            {
                string jsonNewContract = JsonConvert.SerializeObject(contractToSend);

                //Convert object properties in lowercase
                var newContractObject = JObject.Parse(jsonNewContract, new JsonLoadSettings());
                JsonHelpers.ChangePropertiesToLowerCase(newContractObject);

                try
                {
                    httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    httpClient.DefaultRequestHeaders.Add("Authorization", _keyNUASettings.API_Token);
                    httpClient.DefaultRequestHeaders.Add("x-api-key", _keyNUASettings.API_Key);

                    var builder = new UriBuilder(new Uri(_keyNUASettings.API_Url + EndPointURL));
                    HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Put, builder.Uri);

                    request.Content = new StringContent(newContractObject.ToString(Formatting.None), Encoding.UTF8, "application/json");//CONTENT-TYPE header

                    using (var response = await httpClient.SendAsync(request))
                    {
                        string apiResponse = await response.Content.ReadAsStringAsync();

                        responseContractDTO = JsonConvert.DeserializeObject <ResponseContractDTO>(apiResponse);
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }

            return(responseContractDTO);
        }