private ObjParameter GetByteFile(MultipartFormDataStreamProvider provider, bool isGetFromBlob, string containerName, string blobName)
        {
            ObjParameter package          = new ObjParameter();
            string       path             = string.Empty;
            string       StandardFilePath = Path.GetRandomFileName();

            if (!isGetFromBlob)
            {
                // This illustrates how to get the file names.
                foreach (MultipartFileData file in provider.FileData)
                {
                    path             = file.LocalFileName;
                    package.filename = file.Headers.ContentDisposition.FileName;
                }

                byte[] FileDecrypted = AESHelper.DescryptAES(System.IO.File.ReadAllBytes(path), Vault.Current.AESKeyBLOB);
                package.byteArr = FileDecrypted;
            }
            else
            {
                byte[] _ByteArray = BlobHelper.DownloadFileToArrayByte(Vault.Current.StorageConnectionString, containerName, blobName, Vault.Current.AESKeyBLOB);
                package.byteArr  = _ByteArray;
                package.filename = blobName;
            }
            return(package);
        }
        public async Task <MessageResponse> Index()
        {
            MessageResponse res = new MessageResponse();

            try
            {
                Logger.Info("Initial execute import vendor master data");

                if (!MultipartRequestHelper.IsMultipartContentType(Request.ContentType))
                {
                    return(MessageResponse.info("Invalid media type - multipart"));
                }

                string root = Environment.GetEnvironmentVariable("TEMP");


                var provider = new MultipartFormDataStreamProvider(root);

                await Request.ReadAsMultipartAsync(provider);

                string    sitename             = string.Empty;
                int       CaseAction           = 0;
                ArrayList DataSetCreateVendor  = null;
                ArrayList DataSetCreateAddress = null;
                ArrayList DataSetUpdateVendor  = null;
                ArrayList DataSetUpdateAddress = null;
                string    containerName        = string.Empty;
                string    blobName             = string.Empty;
                bool      decrypt       = false;
                bool      isGetFromBlob = false;
                // Show all the key-value pairs.
                foreach (var key in provider.FormData.AllKeys)
                {
                    foreach (var val in provider.FormData.GetValues(key))
                    {
                        switch (key)
                        {
                        case "CaseAction":
                            CaseAction = Int32.Parse(val.ToString());
                            Logger.Info("CaseAction : " + val.ToString());
                            break;

                        case "VendorCreate":
                            DataSetCreateVendor = new ArrayList(val.ToString().Split(','));
                            DataSetCreateVendor.Add("Line");
                            Logger.Info("VendorCreate[] : " + val.ToString());
                            break;

                        case "AddressCreate":
                            DataSetCreateAddress = new ArrayList(val.ToString().Split(','));
                            DataSetCreateAddress.Add("Line");
                            DataSetCreateAddress.Add("VendorKey");
                            Logger.Info("AddressCreate[] : " + val.ToString());
                            break;

                        case "VendorUpdate":
                            DataSetUpdateVendor = new ArrayList(val.ToString().Split(','));
                            DataSetUpdateVendor.Add("Line");
                            Logger.Info("VendorUpdate[] : " + val.ToString());
                            break;

                        case "AddressUpdate":
                            DataSetUpdateAddress = new ArrayList(val.ToString().Split(','));
                            DataSetUpdateAddress.Add("Line");
                            DataSetUpdateAddress.Add("VendorKey");
                            Logger.Info("AddressUpdate[] : " + val.ToString());
                            break;

                        case "ContainerName":
                            containerName = val.ToString();
                            Logger.Info("containerName : " + val.ToString());
                            break;

                        case "BlobName":
                            blobName = val.ToString();
                            Logger.Info("blobName : " + val.ToString());
                            break;

                        case "Decrypt":
                            decrypt = bool.Parse(val.ToString());
                            Logger.Info("decrypt : " + val.ToString());
                            break;

                        case "isGetFromBlob":
                            isGetFromBlob = bool.Parse(val.ToString());
                            Logger.Info("isGetFromBlob : " + val.ToString());
                            break;
                        }
                    }
                }
                ObjParameter result = GetByteFile(provider, isGetFromBlob, containerName, blobName);
                Logger.Info("End parse parameter from request");


                ExcelService excel = new ExcelService(result.byteArr, result.filename);

                res = excel.ReadDataFromExcel();
                Logger.Info("Done execute import vendor master data");


                return(res);
            }
            catch (Exception e)
            {
                Trace.WriteLine(e.ToString());
                Logger.Error("Error : " + e.ToString());
                res.code = (int)HttpStatusCode.InternalServerError;
                res.messages.Add(AppHelper.GetErrorMessage(e));
                return(res);
            }
        }