Example #1
0
        public virtual async Task <MediaDirectory> GetDirectoryAsync(string id)
        {
            MediaDirectory directory = await _db.MediaDirectories.SingleOrDefaultAsync(md => md.OwnerId == id && md.Type == DirectoryType.User);

            if (directory == null)
            {
                MediaDirectory userDirectory = await _db.MediaDirectories.SingleOrDefaultAsync(md => md.Slug == MediaManager.UserDirectorySlug && md.Type == DirectoryType.System);

                ApplicationUser user = await GetUserByIdAsync(id);

                if (user == null)
                {
                    throw new Exception("No user found to add/get directory for.");
                }

                directory = new MediaDirectory()
                {
                    OwnerId     = id,
                    Type        = DirectoryType.User,
                    ParentId    = userDirectory.Id,
                    DisplayName = user.UserName,
                    Slug        = user.Id
                };
                _db.Add(directory);
                await _db.SaveChangesAsync();
            }
            return(directory);
        }