private void Page_Load(object sender, System.EventArgs e)
        {
            // The base page has already created the module, we only have to cast it here to the right type.
            this._downloadsModule = base.Module as DownloadsModule;

            this._fileId = Int32.Parse(Request.QueryString["FileId"]);
            if (this._fileId > 0)
            {
                this._file = this._downloadsModule.GetFileById(this._fileId);
                if (! this.IsPostBack)
                {
                    BindFile();
                }
                this.btnDelete.Visible = true;
                this.btnDelete.Attributes.Add("onclick", "return confirm('Are you sure?');");
            }
            else
            {
                // It is possible that a new file is already uploaded and in the database. The
                // tempFileId parameter in the viewstate should indicate this.
                if (ViewState["tempFileId"] != null)
                {
                    int tempFileId = (int)ViewState["tempFileId"];
                    this._file = this._downloadsModule.GetFileById(tempFileId);
                }
                else
                {
                    // New file.
                    this._file = new File();
                    // Copy roles that have view rights from parent section.
                    foreach (Permission permission in this._downloadsModule.Section.SectionPermissions)
                    {
                        this._file.AllowedRoles.Add(permission.Role);
                    }
                    this.calDatePublished.SelectedDate = DateTime.Now;
                }
                this.btnDelete.Visible = false;
            }
            if (! this.IsPostBack)
            {
                BindRoles();
            }
        }
 public virtual void SaveFileInfo(File file)
 {
     // Obtain current NHibernate session.
     ISession session = this._sessionManager.OpenSession();
     // Save meta-information
     session.SaveOrUpdate(file);
 }
 public virtual void SaveFile(File file, System.IO.Stream fileContents)
 {
     // Save physical file.
     string physicalFilePath = System.IO.Path.Combine(this.FileDir, file.FilePath);
     this._fileService.WriteFile(physicalFilePath, fileContents);
     // Save meta-information.
     SaveFileInfo(file);
 }
 /// <summary>
 /// Increase the number of downloads for the given file.
 /// </summary>
 /// <param name="file"></param>
 public virtual void IncreaseNrOfDownloads(File file)
 {
     ISession session = this._sessionManager.OpenSession();
     // First refresh the file to prevent stale updates because downloads can take a little while.
     session.Refresh(file);
     file.NrOfDownloads++;
     SaveFileInfo(file);
 }
 /// <summary>
 /// Get the a file as stream.
 /// </summary>
 /// <returns></returns>
 public System.IO.Stream GetFileAsStream(File file)
 {
     if (file.IsDownloadAllowed(HttpContext.Current.User.Identity))
     {
         string physicalFilePath = System.IO.Path.Combine(this.FileDir, file.FilePath);
         if (System.IO.File.Exists(physicalFilePath))
         {
             return this._fileService.ReadFile(physicalFilePath);
         }
         else
         {
             throw new System.IO.FileNotFoundException("File not found", physicalFilePath);
         }
     }
     else
     {
         throw new AccessForbiddenException("The current user has no permission to download the file.");
     }
 }
 public virtual void DeleteFile(File file)
 {
     // Delete physical file.
     string physicalFilePath = System.IO.Path.Combine(this.FileDir, file.FilePath);
     this._fileService.DeleteFile(physicalFilePath);
     // Delete meta information.
     ISession session = this._sessionManager.OpenSession();
     session.Delete(file);
 }