usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.Mvc;usingTango.BL;usingTango.MachineService.Filters;usingTango.MachineService.Models;usingTango.MachineService.Views.Downloads;usingTango.Web.Helpers;usingSystem.Data.Entity;usingTango.Web.Storage;usingSystem.IO;usingMicrosoft.WindowsAzure.Storage.Blob;usingSystem.Net.Http;usingSystem.Net;usingSystem.Net.Http.Headers;usingSystem.Net.Mime;namespaceTango.MachineService.Controllers{publicclassDownloadsController:Controller{[Authorize]publicActionResultIndex(){List<DownloadModel>downloads=newList<DownloadModel>();using(ObservablesContextdb=ObservablesContextHelper.CreateContext()){foreach(varitemindb.MachineStudioVersions.Where(x=>x.InstallerBlobName!=null).Include(x=>x.User).Include(x=>x.User.Contact).ToList()){DownloadModeldownload=newDownloadModel();download.App=DownloadModel.DownloadApp.MachineStudio;download.ID=item.InstallerBlobName;download.Name=$"Machine Studio v{item.Version}.exe";download.Version=item.Version;download.User=item.User.Contact.FullName;download.Date=item.LastUpdated;download.Comments=item.Comments;downloads.Add(download);}foreach(varitemindb.TangoVersions.Where(x=>x.InstallerBlobName!=null).Include(x=>x.User).Include(x=>x.User.Contact).ToList()){DownloadModeldownload=newDownloadModel();download.App=DownloadModel.DownloadApp.PPC;download.ID=item.InstallerBlobName;download.Name=$"PPC v{item.Version}.exe";download.Version=item.Version;download.User=item.User.Contact.FullName;download.Date=item.LastUpdated;download.Comments=item.Comments;downloads.Add(download);}}downloads=downloads.OrderByDescending(x=>x.Date).ToList();IndexViewModelmodel=newIndexViewModel();model.Downloads=downloads;returnView(model);}[Authorize]publicActionResultDownload(StringblobName,DownloadModel.DownloadAppdownloadApp){CloudBlobContainercontainer=null;varmanager=newBlobStorageManager();if(downloadApp==DownloadModel.DownloadApp.MachineStudio){container=manager.GetContainer(MachineServiceConfig.MACHINE_STUDIO_VERSIONS_CONTAINER);}else{container=manager.GetContainer(MachineServiceConfig.TANGO_VERSIONS_CONTAINER);}varblob=container.GetBlockBlobReference(blobName);varsignature=blob.GenerateReadSignature(TimeSpan.FromMinutes(10));returnRedirect(signature);}}}