public ActionResult DownloadFile(string id) { var orderBvin = Request.QueryString["oid"] ?? string.Empty; var fileId = id; var userId = HccApp.CurrentCustomerId; var o = HccApp.OrderServices.Orders.FindForCurrentStore(orderBvin); var file = HccApp.CatalogServices.ProductFiles.Find(fileId); // Validation checks if (file == null) { FlashWarning("The file could not be located for download."); return(View("DownloadFileError")); } if (o == null) { FlashWarning("The order number could not be located for downloads."); return(View("DownloadFileError")); } if (o.UserID != userId) { FlashWarning("This order does not belong to the current user. Please try again."); return(View("DownloadFileError")); } if (file.MaxDownloads <= 0) { file.MaxDownloads = 32000; } var currentCount = o.GetFileDownloadCount(file.Bvin); if (currentCount >= file.MaxDownloads) { FlashWarning( "This file has already been downloaded the maximum number of allowed times. Please contact store administrator for assistance."); return(View("DownloadFileError")); } if (file.AvailableMinutes != 0) { if (DateTime.UtcNow.AddMinutes(file.AvailableMinutes * -1) > o.TimeOfOrderUtc) { FlashWarning("File can no longer be downloaded. Its available time period has elapsed."); return(View("DownloadFileError")); } } // Load File from Disk var extension = Path.GetExtension(file.FileName); var name = Path.GetFileName(file.FileName); var storeId = HccApp.CurrentStore.Id; var diskFileName = file.Bvin + "_" + file.FileName + ".config"; if (!DiskStorage.FileVaultFileExists(storeId, diskFileName)) { FlashWarning("The file source code not be located."); return(View("DownloadFileError")); } var bytes = DiskStorage.FileVaultGetBytes(storeId, diskFileName); var type = MimeTypes.FindTypeForExtension(extension); // Record download o.IncreaseFileDownloadCount(file.Bvin); HccApp.OrderServices.Orders.Update(o); // Send File var r = new FileContentResult(bytes, type) { FileDownloadName = file.FileName }; return(r); }