internal MessageResponse ProcessHttpRequest(InputFileProperties inputFile)
        {
            try
            {
                if (inputFile == null)
                {
                    return(MessageResponse.error("File Not Found"));
                }

                var inputContent = GetInputFileContentAndLogRequest(inputFile);

                var sb = _psTool.ProcessDataFile(inputContent);

                var errorList = _psTool.GetErrors();
                if (errorList.Any())
                {
                    return(MessageResponse.error(errorList));
                }

                var encryptedData = AESHelper.EncryptAES(sb.ToString(), _configuration["AESKeyBLOB"]);
                return(MessageResponse.ok(encryptedData));
            }
            catch (Exception e)
            {
                Logger.Error(e);
                return(MessageResponse.error(e.Message));
            }
        }
Example #2
0
        public string Encrypt(string key, string data)
        {
            using (Aes myAes = Aes.Create())
            {
                myAes.Key     = dataToSHA256(key);
                myAes.Mode    = CipherMode.CBC;
                myAes.Padding = PaddingMode.PKCS7;

                return(AESHelper.EncryptAES(data, myAes.Key));
            }
        }
        // request nay la send từ postman, qua hàm này request.Content.ReadAsMultipartAsync
        // nó sẽ lầy tên file từ body truyền trên postman
        // System.net.http ko xa2i tre6n .netcore
        // Doc them phan Upload large files with streaming
        // https://docs.microsoft.com/en-us/aspnet/core/mvc/models/file-uploads?view=aspnetcore-3.0
        internal MessageResponse ProcessHttpRequest(MasterConversionRequest request)
        {
            try
            {
                // coi them vd cho .net framework
                // https://stackoverflow.com/questions/14937926/file-name-from-httprequestmessage-content

                //if (!request.Content.IsMimeMultipartContent())
                //    return MessageResponse.info("Invalid media type - multipart");
                //var provider = new MultipartFormDataMemoryStreamProvider();
                //await request.Content.ReadAsMultipartAsync(provider);
                //var inputContent = GetInputFileContentAndLogRequest(provider);
                if (request is null || request.FileData.Length == 0) //TODO length > maximum length
                {
                    return(MessageResponse.error("Bad request. File not found!"));
                }

                var inputContent = GetInputFileContentAndLogRequest(request);

                var sb = _psTool.ProcessDataFile(inputContent);

                var errorList = _psTool.GetErrors();
                if (errorList.Any())
                {
                    return(MessageResponse.error(errorList));
                }

                var encryptedData = AESHelper.EncryptAES(sb, AzureKeyVaultProvider.AESKeyBLOB);
                return(MessageResponse.ok(encryptedData));
            }
            catch (Exception e)
            {
                _logger.Error(e.Message);
                return(MessageResponse.error(e.Message));
            }
        }
        public MessageResponse ReadDataFromExcel()
        {
            MessageResponse res = new MessageResponse();

            var outPayment = new List <string>();

            MemoryStream reader = new MemoryStream(_byteArr);



            //2. Reading from a OpenXml Excel file (2007 format; *.xlsx)
            IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(reader);

            Logger.Info("rowsZip");
            //4. DataSet - Create column names from first row

            DataSet result = excelReader.AsDataSet(new ExcelDataSetConfiguration()
            {
                ConfigureDataTable = (_) => new ExcelDataTableConfiguration()
                {
                    UseHeaderRow = true
                }
            });

            DataTable tblResult = result.Tables[0];

            tblResult.Columns.Add("LineNo", typeof(int));


            for (int y = 0; y < tblResult.Rows.Count; y++)
            {
                tblResult.Rows[y]["LineNo"] = y + 1;
            }

            DataTable dtCloned = tblResult.Clone();

            dtCloned.Columns["Vendor ID"].DataType = typeof(string);
            foreach (DataRow row in tblResult.Rows)
            {
                if (row[0] != DBNull.Value)
                {
                    dtCloned.ImportRow(row);
                }
            }

            //validate
            int       check = 0;
            DataTable selectedTableVendorID = null;
            var       rowsVendorID          = dtCloned.AsEnumerable()
                                              .Where(r => string.IsNullOrEmpty(r.Field <string>("Vendor ID")) == true);

            DataTable selectedTableVendorName = null;
            var       rowsVendorName          = dtCloned.AsEnumerable()
                                                .Where(r => string.IsNullOrEmpty(r.Field <string>("Name")) == true);

            var rowsVendorIDLess9 = dtCloned.AsEnumerable()
                                    .Where(r => r.Field <string>("Vendor ID").Length < 9);



            if (rowsVendorID.Any())
            {
                selectedTableVendorID = rowsVendorID.CopyToDataTable();
                foreach (DataRow row in selectedTableVendorID.Rows)
                {
                    res.messages.Add("Vendor ID required at line : " + row["LineNo"].ToString());
                }
                check++;
            }

            if (rowsVendorName.Any())
            {
                selectedTableVendorName = rowsVendorName.CopyToDataTable();
                foreach (DataRow row in selectedTableVendorName.Rows)
                {
                    res.messages.Add("Vendor Name required at line : " + row["LineNo"].ToString());
                }
                check++;
            }

            for (int i = dtCloned.Rows.Count - 1; i >= 0; i--)
            {
                DataRow dr = dtCloned.Rows[i];
                if (string.IsNullOrEmpty(dr["Address - 1"].ToString()) && string.IsNullOrEmpty(dr["Address - 2"].ToString()) && string.IsNullOrEmpty(dr["Address - 3"].ToString()))
                {
                    dr.Delete();
                    dtCloned.AcceptChanges();
                }
                else if (string.IsNullOrEmpty(dr["City"].ToString()))
                {
                    dr.Delete();
                    dtCloned.AcceptChanges();
                }
                else if (string.IsNullOrEmpty(dr["State"].ToString()))
                {
                    dr.Delete();
                    dtCloned.AcceptChanges();
                }
                else if (string.IsNullOrEmpty(dr["Zip + 4 + 2"].ToString()))
                {
                    dr.Delete();
                    dtCloned.AcceptChanges();
                }
                else if (dr["Vendor ID"].ToString().Length < 9)
                {
                    dr.Delete();
                    dtCloned.AcceptChanges();
                }
            }


            if (check > 0)
            {
                res.code = (int)HttpStatusCode.InternalServerError;
            }
            else
            {
                Trace.WriteLine(H_TITLE);
                Trace.WriteLine(D_TITLE);

                outPayment.Add(H_TITLE);
                outPayment.Add(D_TITLE);
                string Address1 = string.Empty;


                foreach (DataRow row in dtCloned.Rows)
                {
                    Vendor        V = new Vendor();
                    VendorAddress A = new VendorAddress();
                    Address1 = string.Empty;
                    foreach (DataColumn dc in dtCloned.Columns)
                    {
                        if (!string.IsNullOrEmpty(dc.ColumnName))
                        {
                            switch (dc.ColumnName)
                            {
                            case "Vendor ID":
                                V.VendorId = row[dc].ToString();
                                break;

                            case "Name":
                                V.Name = row[dc].ToString();
                                break;

                            case "Address - 1":
                                Address1   = row[dc].ToString().Replace(Convert.ToChar(System.Convert.ToInt32(160)), ' ');
                                A.Address1 = Address1;
                                break;

                            case "Address - 2":
                                A.Address2 = row[dc].ToString();
                                break;

                            case "Address - 3":
                                A.Address3 = row[dc].ToString();
                                break;

                            case "City":
                                A.City = row[dc].ToString().Trim().TrimEnd(',');
                                break;

                            case "State":
                                A.StateProvince = row[dc].ToString();
                                break;

                            case "Zip + 4 + 2":
                                A.PostalCode = row[dc].ToString();
                                break;

                            case "Contact Name":
                                A.Contact = row[dc].ToString();
                                break;

                            case "Phone - 1":
                                A.PhoneNumber = row[dc].ToString();
                                break;
                            }
                        }
                    }

                    outPayment.Add(@"""VR""" + "," + V.ToString());
                    outPayment.Add(@"""AR""" + "," + A.ToString());



                    Trace.WriteLine(@"""VR""" + "," + V.ToString());
                    Trace.WriteLine(@"""AR""" + "," + A.ToString());
                }
                StringBuilder sb = new StringBuilder();
                foreach (var line in outPayment)
                {
                    sb.AppendFormat("{0}{1}", line, Environment.NewLine);
                }

                //var outputBytes = Encoding.UTF8.GetBytes(sb.ToString());
                string DecryptText = AESHelper.EncryptAES(sb.ToString(), Vault.Current.AESKeyBLOB);
                //BlobHelper.UploadFile(ConfigHelper.GetConnectionString("storage.payment.conversion"), "stamforddev-export", "vendorlisting.csv", outputBytes);

                res.code = (int)HttpStatusCode.OK;
                res.data = DecryptText;
            }
            //6. Free resources (IExcelDataReader is IDisposable)
            excelReader.Close();
            return(res);
        }