Пример #1
0
 public void InitView(Boolean editMode, dtoDisplayRepositoryItem item, String unknownUser, String repositoryPath)
 {
     if (!SessionTimeout())
     {
         LoadVersions(editMode, item, unknownUser, repositoryPath);
     }
 }
Пример #2
0
        public void TryToSave(long idItem, List <dtoEditAssignment> assignments, Dictionary <AssignmentType, String> tTranslations, Dictionary <PermissionsTranslation, String> translations, Dictionary <ModuleRepository.Base2Permission, String> pTranslations)
        {
            if (!SessionTimeout())
            {
                liteRepositoryItem rItem            = Service.ItemGet(idItem);
                Int32 idCommunity                   = UserContext.CurrentCommunityID;
                ModuleRepository.ObjectType oType   = ModuleRepository.ObjectType.File;
                ModuleRepository.ActionType uAction = ModuleRepository.ActionType.VersionUnableToAdd;

                if (rItem != null)
                {
                    ModuleRepository module = Service.GetPermissions(rItem.Repository, UserContext.CurrentUserID);
                    idCommunity = rItem.Repository.IdCommunity;
                    dtoDisplayRepositoryItem dItem = Service.GetItemWithPermissions(idItem, UserContext.CurrentUserID, rItem.Repository, View.GetUnknownUserName());
                    if (dItem == null)
                    {
                        View.DisplayUserMessage(UserMessageType.detailsNoPermissionToSave);
                        oType   = ModuleRepository.GetObjectType(rItem.Type);
                        uAction = ModuleRepository.ActionType.UnknownItemFound;
                    }
                    else if (rItem.Type == ItemType.Folder)
                    {
                        View.AskUserForApply(rItem.DisplayName);
                    }
                    else
                    {
                        SaveAssignments(idItem, assignments, false, tTranslations, translations, pTranslations);
                    }
                }
                else
                {
                    View.SendUserAction(idCommunity, Service.GetIdModule(), uAction, idItem, oType);
                }
            }
        }
Пример #3
0
        private void InitializeSelectors(dtoDisplayRepositoryItem item)
        {
            Boolean allowAddRole  = item.Permissions.EditPermission && item.Repository.Type == RepositoryType.Community;
            Boolean allowAddUsers = item.Permissions.EditPermission;

            if (allowAddRole)
            {
                List <lm.Comol.Core.DomainModel.dtoTranslatedRoleType> roles = Service.AssignmentNotAssignedRoles(item.Id, item.Repository);
                allowAddRole = (roles != null && roles.Any());
                View.InitializeRolesSelector(roles);
            }
            if (allowAddUsers)
            {
                switch (item.Repository.Type)
                {
                case RepositoryType.Community:
                    View.InitializeUsersSelector(item.Repository.IdCommunity, Service.AssignmentAssignedUsersId(item.Id, item.Repository));
                    break;

                case RepositoryType.Portal:
                    View.InitializePortalUsersSelector(Service.AssignmentAssignedUsersId(item.Id, item.Repository));
                    break;

                default:
                    allowAddUsers = false;
                    break;
                }
            }
            View.AllowUpload = item.AllowUpload;
            View.InitializeCommands(allowAddRole, allowAddUsers);
        }
Пример #4
0
 private void AddChildren(List <dtoRepositoryItem> children, dtoDisplayRepositoryItem father, liteRepositorySettings settings, Int32 idCurrentUser, Int32 idRole, Int32 idProfileType, ModuleRepository permissions, Boolean forAdmin = false, Boolean alsoHidden = false, Boolean onlyFolder = false, List <liteItemAssignments> assignments = null)
 {
     foreach (dtoRepositoryItem item in children.Where(i => (!onlyFolder || (onlyFolder && i.Type == ItemType.Folder)) && (forAdmin || alsoHidden || (i.IsVisible || i.IdOwner == idCurrentUser))))
     {
         dtoDisplayRepositoryItem child = null;
         if (forAdmin)
         {
             child = new dtoDisplayRepositoryItem(item, idCurrentUser, settings, permissions, forAdmin);
         }
         else
         {
             child = new dtoDisplayRepositoryItem(item, idCurrentUser, settings, permissions, forAdmin, HasValidAssignments(item.Id, idCurrentUser, idRole, idProfileType, assignments));
         }
         child.HasDefaultPermissions = !(assignments != null && assignments.Any(a => a.IdItem == child.Id && a.Type != AssignmentType.community));
         if (child.IsUserAvailable)
         {
             child.Father = father;
             if (item.Children.Any())
             {
                 AddChildren(item.Children, child, settings, idCurrentUser, idRole, idProfileType, permissions, forAdmin, alsoHidden, onlyFolder, assignments);
             }
             father.Children.Add(child);
         }
     }
 }
Пример #5
0
        public List <dtoModuleUploadedItem> AddFiles(String istanceIdentifier, Int32 idUploaderUser, Boolean allowAnonymousUpload, Boolean alwaysLastVersion, RepositoryIdentifier identifier, long idFolder, List <dtoUploadedItem> files, Object obj, long idObject, Int32 idObjectType, String moduleCode, Int32 idModuleAjaxAction, Int32 idModuleAction = 0)
        {
            List <dtoModuleUploadedItem> items = new List <dtoModuleUploadedItem>();

            if (!SessionTimeout() || allowAnonymousUpload && idUploaderUser > 0)
            {
                litePerson                  person   = Service.GetValidPerson(idUploaderUser);
                liteRepositorySettings      settings = Service.SettingsGetByRepositoryIdentifier(identifier);
                ModuleRepository            module   = Service.GetPermissions(identifier, idUploaderUser);
                ModuleRepository.ObjectType oType    = ModuleRepository.ObjectType.File;
                ModuleRepository.ActionType uAction  = ModuleRepository.ActionType.UnableToAddFile;
                liteRepositoryItem          item     = (idFolder > 0 ? Service.ItemGet(idFolder) : null);
                if (person == null || (item == null && idFolder > 0))
                {
                    View.DisplayError(ItemUploadError.UnableToAddFileToUnknownFolder);
                    uAction = ModuleRepository.ActionType.UnknownItemFound;
                    InitializeView(idFolder, identifier, module, settings, CurrentManager.GetLitePerson(idUploaderUser));
                }
                else
                {
                    Boolean allowAdd = module.Administration || module.ManageItems || module.UploadFile;
                    dtoDisplayRepositoryItem dItem = Service.GetItemWithPermissions(idFolder, UserContext.CurrentUserID, identifier, View.GetUnknownUserName());

                    if (dItem != null)
                    {
                        oType    = ModuleRepository.GetObjectType(dItem.Type);
                        allowAdd = allowAdd || dItem.Permissions.GetActions().Contains(ItemAction.upload);
                    }
                    else if (idFolder == 0)
                    {
                        oType = ModuleRepository.ObjectType.Folder;
                    }

                    String folderName = (idFolder == 0 ? View.GetRootFolderName() : dItem.Name);
                    if (!allowAdd)
                    {
                        View.DisplayError(ItemUploadError.MissingPermissionsToAddFile, folderName, "", ItemType.Folder);
                        uAction = ModuleRepository.ActionType.UnavailableItem;
                    }
                    else
                    {
                        Boolean executed = false;
                        items    = Service.FileAddToRepository(settings, istanceIdentifier, identifier, person, alwaysLastVersion, module, View.GetRepositoryDiskPath(), idFolder, files, obj, idObject, idObjectType, moduleCode, idModuleAjaxAction, idModuleAction);
                        executed = (items != null && items.Any(a => a.IsAdded));

                        uAction = (executed ? (items.Any(a => !a.IsAdded) ? ModuleRepository.ActionType.UnableToAddSomeFile : ModuleRepository.ActionType.AddFile) : ModuleRepository.ActionType.UnableToAddFile);
                        if (executed)
                        {
                            View.NotifyAddedItems(Service.GetIdModule(), idFolder, folderName, RootObject.RepositoryItems(identifier.Type, identifier.IdCommunity, -1, (dItem == null ? 0 : dItem.Id)), items.Where(a => a.ItemAdded != null).Select(f => f.ItemAdded).ToList());
                        }
                        else
                        {
                            View.DisplayError(ItemUploadError.UnableToAddFile, folderName, (items == null) ? null : items.Where(a => !a.IsAdded).Select(a => a.UploadedFile).ToList());
                        }
                    }
                }
                View.SendUserAction(identifier.IdCommunity, Service.GetIdModule(), uAction, idFolder, oType);
            }
            return(items);
        }
Пример #6
0
        private dtoDisplayRepositoryItem GetRecycleBinFolder(String name, List <dtoDisplayRepositoryItem> items)
        {
            dtoDisplayRepositoryItem folder = dtoDisplayRepositoryItem.GenerateFolder(FolderType.recycleBin, name);

            folder.IdCommunity = items.Select(i => i.IdCommunity).FirstOrDefault();
            items.ForEach(i => folder.Children.AddRange(i.GetDeletedItems()));
            folder.Children = folder.Children.OrderBy(c => c.Path).ThenBy(c => c.Name).ToList();
            return(folder);
        }
Пример #7
0
        public dtoDisplayRepositoryItem GetItemWithPermissions(long idItem, List <dtoDisplayRepositoryItem> items)
        {
            dtoDisplayRepositoryItem item = items.Where(i => i.Type != ItemType.Folder || (i.FolderType == FolderType.standard || i.FolderType == FolderType.recycleBin)).Select(c => c.GetItem(idItem)).Where(i => i != null).FirstOrDefault();

            if (item != null && (item.Type == ItemType.ScormPackage || item.Type == ItemType.Multimedia))
            {
                ItemRefreshAvailability(item);
            }
            return(item);
        }
Пример #8
0
        public void SaveAssignments(long idItem, List <dtoEditAssignment> assignments, Boolean applyToContent, Dictionary <AssignmentType, String> tTranslations, Dictionary <PermissionsTranslation, String> translations, Dictionary <ModuleRepository.Base2Permission, String> pTranslations)
        {
            if (!SessionTimeout())
            {
                liteRepositoryItem rItem            = Service.ItemGet(idItem);
                Int32 idCommunity                   = UserContext.CurrentCommunityID;
                ModuleRepository.ObjectType oType   = ModuleRepository.ObjectType.File;
                ModuleRepository.ActionType uAction = ModuleRepository.ActionType.VersionUnableToAdd;

                if (rItem != null)
                {
                    oType = ModuleRepository.GetObjectType(rItem.Type);
                    ModuleRepository module      = Service.GetPermissions(rItem.Repository, UserContext.CurrentUserID);
                    Boolean          reloadItems = false;
                    idCommunity = rItem.Repository.IdCommunity;
                    dtoDisplayRepositoryItem dItem = Service.GetItemWithPermissions(idItem, UserContext.CurrentUserID, rItem.Repository, View.GetUnknownUserName());
                    if (dItem == null)
                    {
                        View.DisplayUserMessage(UserMessageType.detailsNoPermissionToSave);
                        uAction = ModuleRepository.ActionType.UnknownItemFound;
                    }
                    else
                    {
                        oType          = ModuleRepository.GetObjectType(dItem.Type);
                        applyToContent = applyToContent && dItem.Type == ItemType.Folder;
                        if (!dItem.Permissions.EditPermission)
                        {
                            View.DisplayUserMessage(UserMessageType.permissionsNoPermissionToSave);
                            uAction = ModuleRepository.ActionType.UnavailableItem;
                        }
                        else if (!assignments.Any(a => !a.Denyed))
                        {
                            View.DisplayUserMessage(UserMessageType.permissionsNoItemToSave);
                            uAction = ModuleRepository.ActionType.PermissionsNothingToSave;
                        }
                        else
                        {
                            long permissions = (long)((rItem.AllowUpload) ? ModuleRepository.Base2Permission.DownloadOrPlay | ModuleRepository.Base2Permission.Upload : ModuleRepository.Base2Permission.DownloadOrPlay);
                            assignments.Where(a => !a.Denyed && a.Permissions == 0).ToList().ForEach(a => a.Permissions = permissions);

                            reloadItems            = Service.AssignmentsAddToItem(idItem, assignments.Where(a => !a.IsDeleted).ToList(), applyToContent);
                            View.HasPendingChanges = !reloadItems;
                            uAction = (reloadItems ? ModuleRepository.ActionType.PermissionsSaved : ModuleRepository.ActionType.PermissionsNotSaved);
                            View.DisplayUserMessage((reloadItems? UserMessageType.permissionsSaved : UserMessageType.permissionsUnableToSave));
                        }
                    }
                    if (reloadItems)
                    {
                        InitializeSelectors(dItem);
                        LoadAssignments(true, dItem.Id, tTranslations, translations, pTranslations);
                    }
                }
                View.SendUserAction(idCommunity, Service.GetIdModule(), uAction, idItem, oType);
            }
        }
Пример #9
0
 public void InitView(Boolean editMode, dtoDisplayRepositoryItem item, String unknownUser, Dictionary <AssignmentType, String> tTranslations, Dictionary <PermissionsTranslation, String> translations, Dictionary <ModuleRepository.Base2Permission, String> pTranslations)
 {
     if (!SessionTimeout())
     {
         if (editMode)
         {
             InitializeSelectors(item);
         }
         LoadAssignments(editMode, item.Id, tTranslations, translations, pTranslations);
     }
 }
Пример #10
0
        private void LoadVersions(liteRepositoryItem item, String unknownUser, String repositoryPath)
        {
            dtoDisplayRepositoryItem dItem = Service.GetItemWithPermissions(item.Id, UserContext.CurrentUserID, item.Repository, View.GetUnknownUserName());

            if (dItem == null)
            {
                View.DisplayUserMessage(UserMessageType.versionItemNoPermission);
                View.SendUserAction(item.IdCommunity, Service.GetIdModule(), ModuleRepository.ActionType.NoPermission, item.Id, ModuleRepository.GetObjectType(item.Type));
            }
            else
            {
                LoadVersions(true, dItem, unknownUser, repositoryPath);
            }
        }
Пример #11
0
        public dtoDisplayRepositoryItem GetItemWithPermissionsAndStatistics(long idItem, List <dtoDisplayRepositoryItem> items, Int32 idPerson)
        {
            dtoDisplayRepositoryItem item = GetItemWithPermissions(idItem, items);

            if (item != null)
            {
                item.Downloaded  = (from i in Manager.GetIQ <liteRepositoryItem>() where i.Id == idItem select i.Downloaded).Skip(0).Take(1).ToList().FirstOrDefault();
                item.MyDownloads = DownloadsCountForItem(idItem, idPerson);
                if (item.MyDownloads > item.Downloaded)
                {
                    item.MyDownloads = DownloadsCountForItem(idItem);
                }
                ItemRefreshAvailability(item);
            }
            return(item);
        }
Пример #12
0
        private void SetRecycleBinInfo(dtoFolderSize folder, dtoDisplayRepositoryItem treeFolder, List <liteRepositoryItem> items)
        {
            long fileSize   = 0;
            long folderSize = 0;
            long viewSize   = 0;
            long usedSize   = 0;

            if (items.Any(i => i.Deleted == BaseStatusDeleted.Manual))
            {
                usedSize = items.Where(i => i.Deleted == BaseStatusDeleted.Manual).Select(i => i.VersionsSize + i.Size).Sum();
            }

            if (treeFolder.Children.Any(i => i.Deleted == BaseStatusDeleted.Manual && i.Type == ItemType.Folder))
            {
                folderSize = treeFolder.Children.Where(i => i.Deleted == BaseStatusDeleted.Manual && i.Type == ItemType.Folder).Select(f => f.Size + f.VersionsSize).Sum();
            }
            if (treeFolder.Children.Any(i => i.Deleted == BaseStatusDeleted.Manual && i.Type != ItemType.Folder))
            {
                fileSize = treeFolder.Children.Where(i => i.Deleted == BaseStatusDeleted.Manual && i.Type != ItemType.Folder).Select(f => f.Size + f.VersionsSize).Sum();
            }

            folder.Items.Add(new FolderSizeItem()
            {
                Number = treeFolder.Children.Where(i => i.Deleted == BaseStatusDeleted.Manual && i.Type == ItemType.Folder).Count(), Type = FolderSizeItemType.folder, Size = folderSize
            });
            folder.Items.Add(new FolderSizeItem()
            {
                Number = treeFolder.Children.Where(i => i.Deleted == BaseStatusDeleted.Manual && i.Type != ItemType.Folder && i.Type != ItemType.Link).Count(), Type = FolderSizeItemType.file, Size = fileSize
            });

            viewSize = fileSize + folderSize;
            if (items.Any(i => i.Deleted != BaseStatusDeleted.None && i.Type == ItemType.Link))
            {
                folder.Items.Add(new FolderSizeItem()
                {
                    Number = treeFolder.Children.Where(i => i.Deleted == BaseStatusDeleted.Manual && i.Type == ItemType.Link).Count(), Type = FolderSizeItemType.link
                });
            }

            if (viewSize < usedSize)
            {
                folder.Items.Add(new FolderSizeItem()
                {
                    Number = items.Where(i => i.Deleted == BaseStatusDeleted.Manual && !treeFolder.Children.Any(it => it.Id == i.Id)).Count(), Type = FolderSizeItemType.unavailableItems, Size = usedSize - viewSize
                });
            }
        }
Пример #13
0
        private List <dtoDisplayRepositoryItem> GetRepositoryItemsWithPermissions(liteRepositorySettings settings, Int32 idCurrentUser, RepositoryIdentifier identifier, List <dtoRepositoryItem> fItems, ModuleRepository permissions, Boolean forAdmin = false, Boolean alsoHidden = false, Boolean onlyFolder = false, Boolean useCache = true)
        {
            Int32 idRole        = (Int32)RoleTypeStandard.Guest;
            Int32 idProfileType = Manager.GetIdProfileType(idCurrentUser);
            List <dtoDisplayRepositoryItem> results = new List <dtoDisplayRepositoryItem>();

            List <liteItemAssignments> assignments = new List <liteItemAssignments>();

            switch (identifier.Type)
            {
            case RepositoryType.Community:
            case RepositoryType.Portal:
                assignments = GetAssignments(fItems.SelectMany(f => f.GetAllId()).Distinct().ToList());
                idRole      = (identifier.Type == RepositoryType.Community) ? Manager.GetActiveSubscriptionIdRole(UC.CurrentUserID, identifier.IdCommunity) : idRole;
                break;
            }
            foreach (dtoRepositoryItem item in fItems.Where(i => (!onlyFolder || (onlyFolder && i.Type == ItemType.Folder)) && (forAdmin || alsoHidden || (i.IsVisible || i.IdOwner == idCurrentUser))))
            {
                dtoDisplayRepositoryItem dItem = null;
                if (forAdmin)
                {
                    dItem = new dtoDisplayRepositoryItem(item, idCurrentUser, settings, permissions, forAdmin);
                }
                else
                {
                    dItem = new dtoDisplayRepositoryItem(item, idCurrentUser, settings, permissions, forAdmin, HasValidAssignments(item.Id, idCurrentUser, idRole, idProfileType, assignments));
                }

                dItem.HasDefaultPermissions = !(assignments != null && assignments.Any(a => a.IdItem == dItem.Id && a.Type != AssignmentType.community));
                if (dItem.IsUserAvailable)
                {
                    if (item.Children.Any())
                    {
                        AddChildren(item.Children, dItem, settings, idCurrentUser, idRole, idProfileType, permissions, forAdmin, alsoHidden, onlyFolder, assignments);
                    }
                    results.Add(dItem);
                }
            }
            if (!onlyFolder)
            {
                SetForTreeItemsPermissions(results, settings, idCurrentUser, permissions);
            }
            return(results);
        }
Пример #14
0
        private void LoadVersions(Boolean editMode, dtoDisplayRepositoryItem item, String unknownUser, String repositoryPath)
        {
            Boolean allowAddVersion = editMode && item.Permissions.AddVersion;

            List <dtoDisplayVersionItem> items = Service.ItemGetVersions(editMode, item, unknownUser);

            if (!editMode)
            {
                items = items.Where(i => !i.IsDeleted).ToList();
            }

            if (!allowAddVersion)
            {
                View.LoadVersions(items);
            }
            else
            {
                View.LoadVersions(items, item, Service.GetFolderQuota(repositoryPath, 0, item.Repository));
            }
        }
Пример #15
0
        public void CurrentVersionUpdated(long idItem)
        {
            if (!SessionTimeout())
            {
                RepositoryIdentifier rIdentifier = Service.ItemGetRepositoryIdentifier(idItem);
                if (rIdentifier == null)
                {
                    View.InitializeHeader();
                    View.DisplayUnknownItem();
                }
                else
                {
                    Int32 idCurrentUser             = UserContext.CurrentUserID;
                    liteRepositorySettings settings = Service.SettingsGetByRepositoryIdentifier(rIdentifier);
                    ModuleRepository       module   = Service.GetPermissions(rIdentifier, idCurrentUser);
                    Boolean admin = module.ManageItems || module.Administration;

                    dtoDisplayRepositoryItem dto = Service.GetItemWithPermissionsAndStatistics(idItem, Service.GetAvailableRepositoryItems(settings, UserContext.CurrentUserID, rIdentifier.Type, rIdentifier.IdCommunity, View.GetUnknownUserName(), View.GetFolderTypeTranslation(), View.GetTypesTranslations(), module, admin, admin), UserContext.CurrentUserID);
                    View.UpdateItemDetails(dto, settings.AutoThumbnailWidth, settings.AutoThumbnailHeight, settings.AutoThumbnailForExtension);
                }
            }
        }
        public List <dtoDisplayVersionItem> ItemGetVersions(Boolean editMode, dtoDisplayRepositoryItem item, String unknownUser)
        {
            List <dtoDisplayVersionItem> versions = new List <dtoDisplayVersionItem>();

            try
            {
                versions = (from v in Manager.GetIQ <liteRepositoryItemVersion>()
                            where v.IdItem == item.Id
                            select v).ToList().OrderByDescending(v => v.CreatedOn).Select(v =>
                                                                                          new dtoDisplayVersionItem(v)
                {
                    Repository = item.Repository
                }).ToList();
                if (versions.Any())
                {
                    List <Int32> idUsers = versions.Select(v => v.IdCreatedBy).Distinct().ToList();
                    idUsers.AddRange(versions.Select(v => v.IdModifiedBy).Distinct().ToList());
                    List <litePerson> persons = Manager.GetLitePersons(idUsers.Where(i => i > 0).Distinct().ToList());
                    long displayOrder         = 0;
                    foreach (dtoDisplayVersionItem v in versions.OrderBy(v => v.Number).ThenBy(v => v.Id))
                    {
                        v.Author = persons.Where(p => p.Id == v.IdCreatedBy).Select(p => p.SurnameAndName).DefaultIfEmpty(unknownUser).FirstOrDefault();
                        if (v.ModifiedOn.HasValue)
                        {
                            v.ModifyBy = persons.Where(p => p.Id == v.IdModifiedBy).Select(p => p.SurnameAndName).DefaultIfEmpty(unknownUser).FirstOrDefault();
                        }
                        v.DisplayOrder          = displayOrder;
                        v.Permissions.Download  = item.Permissions.Download && (!v.IsDeleted || (v.IsDeleted && (item.Permissions.RemoveVersion || item.Permissions.SetVersion || item.Permissions.AddVersion)));
                        v.Permissions.Play      = item.Permissions.Play && (!v.IsDeleted || (v.IsDeleted && (item.Permissions.RemoveVersion || item.Permissions.SetVersion || item.Permissions.AddVersion)));
                        v.Permissions.SetActive = !v.IsActive && item.Permissions.SetVersion;
                    }
                }
            }
            catch (Exception ex)
            {
                return(null);
            }
            return(versions);
        }
Пример #17
0
        public void AddVersionToFile(String istanceIdentifier, long idItem, dtoUploadedItem version, String unknownUser, String repositoryPath)
        {
            if (!SessionTimeout())
            {
                liteRepositoryItem rItem            = Service.ItemGet(idItem);
                Int32 idCommunity                   = UserContext.CurrentCommunityID;
                ModuleRepository.ObjectType oType   = ModuleRepository.ObjectType.File;
                ModuleRepository.ActionType uAction = ModuleRepository.ActionType.VersionUnableToAdd;

                if (rItem != null)
                {
                    ModuleRepository module      = Service.GetPermissions(rItem.Repository, UserContext.CurrentUserID);
                    Boolean          reloadItems = false;
                    idCommunity = rItem.Repository.IdCommunity;
                    dtoDisplayRepositoryItem dItem = Service.GetItemWithPermissions(idItem, UserContext.CurrentUserID, rItem.Repository, View.GetUnknownUserName());
                    if (dItem == null)
                    {
                        View.DisplayUserMessage(UserMessageType.versionItemNoPermission);
                        uAction = ModuleRepository.ActionType.UnknownItemFound;
                    }
                    else
                    {
                        Boolean allowAdd = dItem.Permissions.GetActions().Contains(ItemAction.addVersion);
                        oType = ModuleRepository.GetObjectType(dItem.Type);
                        if (!allowAdd)
                        {
                            View.DisplayUserMessage(UserMessageType.versionItemNoPermission);
                            uAction = ModuleRepository.ActionType.UnavailableItem;
                        }
                        else
                        {
                            liteRepositorySettings settings = Service.SettingsGetByRepositoryIdentifier(rItem.Repository);

                            Service.ThumbnailsCreate(settings, dItem.UniqueId, version);
                            dtoCreatedItem addedVersion = Service.FileAddVersion(settings, module, repositoryPath, istanceIdentifier, idItem, version);
                            reloadItems = (addedVersion != null && addedVersion.IsAdded);

                            uAction = (reloadItems ? ModuleRepository.ActionType.VersionAddedToFile : ModuleRepository.ActionType.VersionUnableToAdd);
                            if (reloadItems)
                            {
                                View.DisplayUserMessage(UserMessageType.versionAdded);
                                dItem.IdVersion       = addedVersion.Added.Id;
                                dItem.UniqueIdVersion = addedVersion.Added.UniqueIdVersion;
                                dItem.Thumbnail       = addedVersion.Added.Thumbnail;
                                dItem.AutoThumbnail   = addedVersion.Added.AutoThumbnail;
                                View.CurrentVersionUpdated(dItem, settings.AutoThumbnailWidth, settings.AutoThumbnailHeight, settings.AutoThumbnailForExtension);
                                String folderName = (dItem.IdFolder == 0 ? View.GetRootFolderFullname() : Service.FolderGetName(dItem.IdFolder));
                                View.NotifyAddedVersion(Service.GetIdModule(), dItem.IdFolder, folderName, RootObject.RepositoryItems(dItem.Repository.Type, dItem.Repository.IdCommunity, dItem.Id, dItem.IdFolder), addedVersion);
                            }
                            else
                            {
                                View.DisplayUserMessage(UserMessageType.versionNotAdded);
                            }
                        }
                    }
                    if (reloadItems)
                    {
                        LoadVersions(true, dItem, unknownUser, repositoryPath);
                    }
                }
                View.SendUserAction(idCommunity, Service.GetIdModule(), uAction, idItem, oType);
            }
        }
Пример #18
0
        private List <dtoFolderSize> GetFolderAvailabilityInfo(dtoFolderSize repository, dtoFolderSize father, dtoDisplayRepositoryItem folder, List <liteRepositoryItem> items)
        {
            List <dtoFolderSize> folders = new List <dtoFolderSize>();
            dtoFolderSize        rFolder = new dtoFolderSize()
            {
                IdFolder = folder.Id, Name = folder.Name, IdentifierPath = folder.IdentifierPath, FolderType = folder.FolderType
            };

            switch (folder.FolderType)
            {
            case FolderType.recycleBin:
                SetRecycleBinInfo(rFolder, folder, items);
                break;

            case FolderType.standard:
                SetStandardFolderInfo(rFolder, folder, items);
                break;
            }

            if (rFolder.Items.Any())
            {
                rFolder.Size = rFolder.Items.Select(i => i.Size).Sum();
            }

            rFolder.Quota           = dtoContainerQuota.Create(father.Quota, rFolder.Size);
            rFolder.UploadAvailable = (rFolder.FolderType == FolderType.standard) && (rFolder.Quota.AvailableSize == -1 || rFolder.FreeSpace > 0);

            switch (rFolder.FolderType)
            {
            case FolderType.standard:
            case FolderType.recycleBin:
                rFolder.Items.Add(new FolderSizeItem()
                {
                    Number = 0, Type = FolderSizeItemType.fullSize, Size = rFolder.Size
                });
                break;
            }
            rFolder.SetPercentage();


            switch (folder.FolderType)
            {
            case FolderType.recycleBin:
                break;

            case FolderType.standard:
                foreach (dtoDisplayRepositoryItem child in folder.Children.Where(f => f.Type == ItemType.Folder && f.Deleted == BaseStatusDeleted.None))
                {
                    folders.AddRange(GetFolderAvailabilityInfo(repository, rFolder, child, items));
                }
                break;
            }
            folders.Insert(0, rFolder);
            return(folders);
        }
Пример #19
0
        public void InitView(Boolean isEditPage, long idItem, long idFolder, String path, Boolean setBackUrl, String backUrl)
        {
            RepositoryIdentifier rIdentifier = Service.ItemGetRepositoryIdentifier(idItem);
            Int32 idCommunity = UserContext.CurrentCommunityID;

            View.IdItem                      = idItem;
            View.IdCurrentFolder             = idFolder;
            View.CurrentFolderIdentifierPath = path;
            if (setBackUrl && String.IsNullOrEmpty(backUrl))
            {
                backUrl = View.GetPreviousRelativeUrl();
                if (!IsValidPreviousUrl(backUrl))
                {
                    backUrl    = "";
                    setBackUrl = false;
                }
                if (backUrl.StartsWith(RootObject.BaseRepositoryUrl(), StringComparison.InvariantCultureIgnoreCase) && rIdentifier != null)
                {
                    cookieRepository cookie = View.GetRepositoryCookie(rIdentifier);
                    if (cookie != null)
                    {
                        backUrl = RootObject.RepositoryItems(rIdentifier.Type, rIdentifier.IdCommunity, 0, cookie.IdFolder, cookie.Type, cookie.ItemsOrderBy, cookie.Ascending, cookie.IdentifierPath);
                    }
                }
                SetLogoutUrl(isEditPage, View.GetCurrentUrl(), setBackUrl, backUrl);
            }
            else
            {
                View.DefaultLogoutUrl = View.GetCurrentUrl();
            }
            View.BackUrl = (setBackUrl ? backUrl : "");
            View.SetPageBackUrl(backUrl);
            View.PageIdentifier = Guid.NewGuid();
            if (SessionTimeout())
            {
                return;
            }

            View.IsInitialized = true;
            ModuleRepository.ActionType uAction = ModuleRepository.ActionType.None;

            if (rIdentifier == null)
            {
                View.InitializeHeader();
                uAction = (isEditPage) ? ModuleRepository.ActionType.EditDetailsTryToLoad : ModuleRepository.ActionType.ViewDetailsTryToLoad;
                View.DisplayUnknownItem();
            }
            else
            {
                Int32 idCurrentUser             = UserContext.CurrentUserID;
                liteRepositorySettings settings = Service.SettingsGetByRepositoryIdentifier(rIdentifier);

                ModuleRepository module = Service.GetPermissions(rIdentifier, idCurrentUser);

                View.RepositoryIdentifier  = CacheKeys.RepositoryIdentifierKey(rIdentifier.Type, rIdentifier.IdCommunity);
                View.RepositoryIdCommunity = rIdentifier.IdCommunity;
                idCommunity         = rIdentifier.IdCommunity;
                View.RepositoryType = rIdentifier.Type;

                View.SetTitle(Service.ItemGetType(idItem));
                View.IsInitialized = true;
                if (settings != null)
                {
                    Boolean admin = module.ManageItems || module.Administration;
                    dtoDisplayRepositoryItem dto = Service.GetItemWithPermissionsAndStatistics(idItem, Service.GetAvailableRepositoryItems(settings, UserContext.CurrentUserID, rIdentifier.Type, rIdentifier.IdCommunity, View.GetUnknownUserName(), View.GetFolderTypeTranslation(), View.GetTypesTranslations(), module, admin, admin), UserContext.CurrentUserID);
                    if (dto != null)
                    {
                        if (!isEditPage && dto.Permissions.Edit)
                        {
                            View.SetUrlForEdit(RootObject.EditItem(idItem, idFolder, path, ItemAction.edit, (!String.IsNullOrWhiteSpace(backUrl)), backUrl));
                        }
                        else if (isEditPage)
                        {
                            View.SetUrlForView(RootObject.Details(idItem, idFolder, path, ItemAction.edit, (!String.IsNullOrWhiteSpace(backUrl)), backUrl));
                        }
                        if (!isEditPage || (isEditPage && dto.Permissions.Edit))
                        {
                            View.AllowSave = dto.Permissions.Edit && isEditPage;

                            View.AllowHideItem = dto.Permissions.Hide && isEditPage;
                            View.AllowShowItem = dto.Permissions.Show && isEditPage;
                            View.DisplayItemDetails(isEditPage, dto, settings.AutoThumbnailWidth, settings.AutoThumbnailHeight, settings.AutoThumbnailForExtension);
                            if (dto.Permissions.ViewPermission || dto.Permissions.EditPermission)
                            {
                                View.DisplayItemPermissions(isEditPage, dto);
                            }
                            if (isEditPage)
                            {
                                View.InitializeDefaultTags(ServiceTags.GetAvailableTags(rIdentifier.IdPerson, idCommunity, CurrentIdModule, ModuleRepository.UniqueCode));
                            }
                            else
                            {
                                View.InitializeHeader();
                            }
                            uAction = (isEditPage) ? ModuleRepository.ActionType.EditDetailsLoaded : ModuleRepository.ActionType.ViewDetailsLoaded;
                        }
                        else if (isEditPage)
                        {
                            View.SendUserAction(idCommunity, Service.GetIdModule(), ModuleRepository.ActionType.EditDetailsTryToLoad);
                            View.GoToUrl(RootObject.Details(idItem, idFolder, path, ItemAction.details, setBackUrl, backUrl));
                        }
                    }
                    else
                    {
                        if (isEditPage)
                        {
                            View.SetUrlForView(RootObject.Details(idItem, idFolder, path, ItemAction.edit, (!String.IsNullOrWhiteSpace(backUrl)), backUrl));
                        }

                        View.InitializeHeader();
                        View.DisplayNoPermission(idCommunity, Service.GetIdModule());
                        uAction = (isEditPage) ? ModuleRepository.ActionType.EditDetailsNoPermissions : ModuleRepository.ActionType.ViewDetailsNoPermissions;
                    }
                }
                else
                {
                    View.InitializeHeader();
                    uAction = (isEditPage) ? ModuleRepository.ActionType.EditDetailsTryToLoad : ModuleRepository.ActionType.ViewDetailsTryToLoad;
                    View.DisplayUnknownItem();
                }
            }
            View.SendUserAction(idCommunity, Service.GetIdModule(), uAction);
        }
Пример #20
0
        private void SetStandardFolderInfo(dtoFolderSize folder, dtoDisplayRepositoryItem treeFolder, List <liteRepositoryItem> items)
        {
            long viewSize            = 0;
            long usedSize            = treeFolder.Size;
            long versionSize         = 0;
            long deletedSize         = 0;
            long deletedChildrenSize = 0;
            long childrenSize        = treeFolder.Children.Where(i => i.Deleted == BaseStatusDeleted.None && i.IsUserAvailable && i.Type == ItemType.Folder).Select(i => i.Size).DefaultIfEmpty().Sum();

            folder.Items.Add(new FolderSizeItem()
            {
                Number = treeFolder.Children.Where(c => c.Deleted == BaseStatusDeleted.None && c.Type == ItemType.Folder && c.IsUserAvailable).Count(), Type = FolderSizeItemType.folder, Size = childrenSize
            });
            if (treeFolder.Children.Any(i => i.Deleted == BaseStatusDeleted.None && i.IsUserAvailable && i.Type != ItemType.Folder && i.Type != ItemType.Link))
            {
                viewSize = treeFolder.Children.Where(i => i.Deleted == BaseStatusDeleted.None && i.IsUserAvailable && i.Type != ItemType.Folder && i.Type != ItemType.Link).Select(i => i.Size).Sum();
            }

            folder.Items.Add(new FolderSizeItem()
            {
                Number = treeFolder.Children.Where(c => c.Deleted == BaseStatusDeleted.None && c.Type != ItemType.Folder && c.Type != ItemType.Link).Count(), Type = FolderSizeItemType.file, Size = viewSize
            });
            viewSize += childrenSize;
            if (treeFolder.Children.Any(c => c.Deleted == BaseStatusDeleted.None && c.Type == ItemType.Link))
            {
                folder.Items.Add(new FolderSizeItem()
                {
                    Number = treeFolder.Children.Where(c => c.Deleted == BaseStatusDeleted.None && c.Type == ItemType.Link).Count(), Type = FolderSizeItemType.link, Size = deletedSize
                });
            }

            if (treeFolder.Children.Any(i => i.Deleted != BaseStatusDeleted.None))
            {
                deletedSize = treeFolder.Children.Where(i => i.Deleted == BaseStatusDeleted.Manual).Select(i => i.Size + i.VersionsSize).Sum();
                folder.Items.Add(new FolderSizeItem()
                {
                    Number = treeFolder.Children.Where(i => i.Deleted == BaseStatusDeleted.Manual).Count(),
                    Type   = FolderSizeItemType.deleted,
                    Size   = deletedSize
                });
            }
            if (treeFolder.Children.Any(i => i.Deleted == BaseStatusDeleted.None && i.HasVersions))
            {
                versionSize = treeFolder.Children.Where(i => i.Deleted == BaseStatusDeleted.None && i.Type != ItemType.Folder && i.HasVersions).Select(i => i.VersionsSize).Sum();
                folder.Items.Add(new FolderSizeItem()
                {
                    Number = treeFolder.Children.Where(i => i.Deleted == BaseStatusDeleted.None && i.Type != ItemType.Folder && i.HasVersions).Count(),
                    Type   = FolderSizeItemType.version,
                    Size   = versionSize
                });
            }
            deletedChildrenSize = treeFolder.Children.Where(i => i.Deleted == BaseStatusDeleted.None && i.IsUserAvailable && i.Type == ItemType.Folder).Select(i => i.DeletedSize).DefaultIfEmpty(0).Sum();
            if (deletedChildrenSize > 0)
            {
                folder.Items.Add(new FolderSizeItem()
                {
                    Number = treeFolder.Children.Count(i => i.Deleted == BaseStatusDeleted.None && i.IsUserAvailable && i.Type == ItemType.Folder && i.DeletedSize > 0), Type = FolderSizeItemType.deletedonsubfolders, Size = deletedChildrenSize
                });
            }


            if ((viewSize + versionSize + deletedSize + deletedChildrenSize) < usedSize)
            {
                folder.Items.Add(new FolderSizeItem()
                {
                    Number = items.Where(i => i.IdFolder == folder.IdFolder && !treeFolder.Children.Any(it => it.Id == i.Id)).Count(), Type = FolderSizeItemType.unavailableItems, Size = usedSize - (viewSize + versionSize + deletedSize + deletedChildrenSize)
                });
            }
        }
        public void InitView(long idSettings, long idLink, long idItem, long idVersion)
        {
            RepositoryIdentifier rIdentifier = Service.ItemGetRepositoryIdentifier(idItem);
            Int32 idCommunity = UserContext.CurrentCommunityID;

            View.IdItem         = idItem;
            View.IdVersion      = idVersion;
            View.IdLink         = idLink;
            View.PageIdentifier = Guid.NewGuid();
            if (SessionTimeout())
            {
                return;
            }

            View.IsInitialized = true;
            ModuleRepository.ActionType uAction = ModuleRepository.ActionType.None;

            if (rIdentifier == null)
            {
                uAction = ModuleRepository.ActionType.ScormSettingsTryToLoad;
                View.DisplayUnknownItem();
            }
            else
            {
                Int32 idCurrentUser               = UserContext.CurrentUserID;
                liteRepositoryItem        item    = Service.ItemGet(idItem);
                liteRepositoryItemVersion version = Service.ItemGetVersion(idItem, idVersion);
                if (version == null)
                {
                    uAction = ModuleRepository.ActionType.ScormSettingsTryToLoad;
                    View.DisplayUnknownItem();
                }
                else if (version.Type != ItemType.ScormPackage)
                {
                    idCommunity = version.IdCommunity;
                    View.DisplayMessage(version.DisplayName, version.Extension, version.Type, Domain.UserMessageType.scormSettingsInvalidType);
                    uAction = ModuleRepository.ActionType.ScormSettingsInvalidType;
                }
                else
                {
                    idVersion      = version.Id;
                    View.IdVersion = idVersion;
                    idCommunity    = version.IdCommunity;
                    if (version.Availability == ItemAvailability.available || version.Availability == ItemAvailability.waitingsettings)
                    {
                        ItemPermission permissions = null;

                        if (idLink == 0)
                        {
                            dtoDisplayRepositoryItem dto = Service.GetItemWithPermissions(idItem, idCurrentUser, item.Repository, View.GetUnknownUserName());
                            if (dto != null)
                            {
                                permissions = dto.Permissions;
                            }
                        }
                        else
                        {
                            liteModuleLink link = CurrentManager.Get <liteModuleLink>(idLink);
                            if (link == null)
                            {
                                View.DisplayMessage(version.DisplayName, version.Extension, version.Type, Domain.UserMessageType.scormSettingsNoPermission);
                            }
                            else
                            {
                                permissions = View.GetLinkPermissions(link, idCurrentUser);
                                idCommunity = link.SourceItem.CommunityID;
                            }
                        }
                        if (permissions != null && (permissions.Edit || permissions.EditSettings || permissions.ViewMyStatistics || permissions.ViewOtherStatistics))
                        {
                            uAction = ModuleRepository.ActionType.ScormSettingsView;
                            if (version.Availability == ItemAvailability.waitingsettings)
                            {
                                View.DisplayMessage(version.DisplayName, version.Extension, version.Type, Domain.UserMessageType.scormSettingsWaitingToSet);
                            }
                            dtoScormPackageSettings settings = Service.ScormPackageGetDtoCompletionSettings(idItem, idVersion, idSettings);
                            if (settings == null)
                            {
                                View.DisplayMessage(version.DisplayName, version.Extension, version.Type, Domain.UserMessageType.scormSettingsNotFound);
                            }
                            else
                            {
                                View.IdSettings = settings.Id;
                                View.LoadSettings(item.UniqueIdVersion.ToString(), item.DisplayName, settings, true, true);
                            }
                        }
                        else
                        {
                            uAction = ModuleRepository.ActionType.ScormSettingsNoPermissions;
                            View.DisplayMessage(version.DisplayName, version.Extension, version.Type, Domain.UserMessageType.scormSettingsNoPermission);
                        }
                    }
                    else
                    {
                        uAction = ModuleRepository.ActionType.ScormSettingsStatusError;
                        View.DisplayMessage(version.DisplayName, version.Extension, version.Type, Domain.UserMessageType.scormSettingsInvalidStatus, version.Availability);
                    }
                }

                View.RepositoryIdentifier  = CacheKeys.RepositoryIdentifierKey(rIdentifier.Type, rIdentifier.IdCommunity);
                View.RepositoryIdCommunity = rIdentifier.IdCommunity;
                View.RepositoryType        = rIdentifier.Type;
                View.IsInitialized         = true;
            }
            View.SendUserAction(idCommunity, Service.GetIdModule(), uAction);
        }
        public void InitView(long idLink, long idItem, long idVersion, long idFolder, String path, Boolean setBackUrl, String backUrl)
        {
            RepositoryIdentifier rIdentifier = Service.ItemGetRepositoryIdentifier(idItem);
            Int32 idCommunity = UserContext.CurrentCommunityID;

            View.IdItem                      = idItem;
            View.IdVersion                   = idVersion;
            View.IdLink                      = idLink;
            View.IdCurrentFolder             = idFolder;
            View.CurrentFolderIdentifierPath = path;
            if (setBackUrl && String.IsNullOrEmpty(backUrl))
            {
                backUrl = View.GetPreviousRelativeUrl();
                if (!IsValidPreviousUrl(backUrl))
                {
                    backUrl    = "";
                    setBackUrl = false;
                }
                if (backUrl.StartsWith(RootObject.BaseRepositoryUrl(), StringComparison.InvariantCultureIgnoreCase) && rIdentifier != null)
                {
                    cookieRepository cookie = View.GetRepositoryCookie(rIdentifier);
                    if (cookie != null)
                    {
                        backUrl = RootObject.RepositoryItems(rIdentifier.Type, rIdentifier.IdCommunity, 0, cookie.IdFolder, cookie.Type, cookie.ItemsOrderBy, cookie.Ascending, cookie.IdentifierPath);
                    }
                }
                SetLogoutUrl(View.GetCurrentUrl(), setBackUrl, backUrl);
            }
            else
            {
                View.DefaultLogoutUrl = View.GetCurrentUrl();
            }
            View.BackUrl = (setBackUrl ? backUrl : "");
            View.SetPageBackUrl(backUrl);
            View.PageIdentifier = Guid.NewGuid();
            if (SessionTimeout())
            {
                return;
            }

            View.IsInitialized = true;
            ModuleRepository.ActionType uAction = ModuleRepository.ActionType.None;

            if (rIdentifier == null)
            {
                uAction = ModuleRepository.ActionType.MultimedaSettingsTryToLoad;
                View.DisplayUnknownItem();
            }
            else
            {
                Int32 idCurrentUser               = UserContext.CurrentUserID;
                liteRepositoryItem        item    = Service.ItemGet(idItem);
                liteRepositoryItemVersion version = Service.ItemGetVersion(idItem, idVersion);
                if (version == null)
                {
                    uAction = ModuleRepository.ActionType.MultimedaSettingsTryToLoad;
                    View.DisplayUnknownItem();
                }
                else if (version.Type != ItemType.Multimedia)
                {
                    idCommunity = version.IdCommunity;
                    View.DisplayMessage(version.DisplayName, version.Extension, version.Type, Domain.UserMessageType.multimediaSettingsInvalidType);
                    uAction = ModuleRepository.ActionType.MultimedaSettingsInvalidType;
                }
                else
                {
                    idVersion      = version.Id;
                    View.IdVersion = idVersion;
                    idCommunity    = version.IdCommunity;
                    if (version.Availability == ItemAvailability.available || version.Availability == ItemAvailability.waitingsettings)
                    {
                        ItemPermission permissions = null;

                        if (idLink == 0)
                        {
                            dtoDisplayRepositoryItem dto = Service.GetItemWithPermissions(idItem, idCurrentUser, item.Repository, View.GetUnknownUserName());
                            if (dto != null)
                            {
                                permissions = dto.Permissions;
                            }
                        }
                        else
                        {
                            liteModuleLink link = CurrentManager.Get <liteModuleLink>(idLink);
                            if (link == null)
                            {
                                View.DisplayMessage(version.DisplayName, version.Extension, version.Type, Domain.UserMessageType.multimediaSettingsNoPermission);
                            }
                            else
                            {
                                permissions = View.GetLinkPermissions(link, idCurrentUser);
                                idCommunity = link.SourceItem.CommunityID;
                            }
                        }
                        if (permissions != null)
                        {
                            if (permissions.EditSettings)
                            {
                                if (version.Availability == ItemAvailability.waitingsettings)
                                {
                                    View.DisplayMessage(version.DisplayName, version.Extension, version.Type, Domain.UserMessageType.multimediaSettingsNoDefaultDocument);
                                }
                                List <dtoMultimediaFileObject> items = Service.MultimediaGetItems(idItem, idVersion);
                                View.AllowSave = (items != null && items.Any());
                                View.LoadItems(item.UniqueIdVersion.ToString(), item.DisplayName, items, (items == null ? null : items.Where(i => i.IsDefaultDocument).FirstOrDefault()));
                            }
                            else
                            {
                                uAction = ModuleRepository.ActionType.MultimedaSettingsNoPermissions;
                                View.DisplayMessage(version.DisplayName, version.Extension, version.Type, Domain.UserMessageType.multimediaSettingsNoPermission);
                            }
                        }
                        else
                        {
                            uAction = ModuleRepository.ActionType.MultimedaSettingsStatusError;
                            View.DisplayMessage(version.DisplayName, version.Extension, version.Type, Domain.UserMessageType.multimediaSettingsInvalidStatus, version.Availability);
                        }
                    }
                    else
                    {
                        uAction = ModuleRepository.ActionType.MultimedaSettingsStatusError;
                        View.DisplayMessage(version.DisplayName, version.Extension, version.Type, Domain.UserMessageType.multimediaSettingsInvalidStatus, version.Availability);
                    }
                }
                View.RepositoryIdentifier  = CacheKeys.RepositoryIdentifierKey(rIdentifier.Type, rIdentifier.IdCommunity);
                View.RepositoryIdCommunity = rIdentifier.IdCommunity;
                View.RepositoryType        = rIdentifier.Type;
                View.IsInitialized         = true;
            }
            View.SendUserAction(idCommunity, Service.GetIdModule(), uAction);
        }
Пример #23
0
        public VersionErrors AddVersionToFile(String istanceIdentifier, long idItem, dtoUploadedItem version, String unknownUser, String repositoryPath, RepositoryIdentifier identifier, Boolean allowManage, Boolean allowView, Boolean updateLinks)
        {
            VersionErrors      error = VersionErrors.unabletoadd;
            liteRepositoryItem rItem = ItemGet(idItem);

            ModuleRepository.ObjectType oType = ModuleRepository.ObjectType.File;
            dtoDisplayRepositoryItem    dItem = null;

            if (rItem != null)
            {
                ModuleRepository module      = GetPermissions(rItem.Repository, UC.CurrentUserID);
                Boolean          allowCreate = false;
                Int32            idCommunity = rItem.Repository.IdCommunity;
                if (rItem.IsInternal)
                {
                    allowCreate = true;
                }
                else
                {
                    dItem = GetItemWithPermissions(idItem, UC.CurrentUserID, rItem.Repository, unknownUser, allowManage, allowView);
                    if (dItem == null)
                    {
                        error = VersionErrors.unavailableItem;
                    }
                    else
                    {
                        Boolean allowAdd = dItem.Permissions.GetActions().Contains(ItemAction.addVersion);
                        oType = ModuleRepository.GetObjectType(dItem.Type);
                        if (!allowAdd)
                        {
                            error = VersionErrors.nopermission;
                        }
                        else
                        {
                            allowCreate = true;
                        }
                    }
                }
                if (allowCreate)
                {
                    liteRepositorySettings settings = SettingsGetByRepositoryIdentifier(rItem.Repository);
                    ThumbnailsCreate(settings, rItem.UniqueId, version);
                    dtoCreatedItem addedVersion = FileAddVersion(settings, module, repositoryPath, istanceIdentifier, idItem, version);

                    if (addedVersion != null && addedVersion.IsAdded)
                    {
                        if (dItem != null)
                        {
                            dItem.IdVersion       = addedVersion.Added.IdVersion;
                            dItem.UniqueIdVersion = addedVersion.Added.UniqueIdVersion;
                        }
                        if (updateLinks)
                        {
                            List <liteModuleLink> links = (from l in GetQuery <liteModuleLink>()
                                                           where
                                                           l.DestinationItem.ServiceCode == ModuleRepository.UniqueCode &&
                                                           l.DestinationItem.ObjectLongID == idItem &&
                                                           l.DestinationItem.ObjectIdVersion > 0
                                                           select l).ToList();
                            if (links.Any())
                            {
                                links.ForEach(l => l.DestinationItem.ObjectIdVersion = addedVersion.Added.IdVersion);
                                Manager.SaveOrUpdateList(links);
                            }
                        }
                        error = VersionErrors.none;
                    }
                    else
                    {
                        error = VersionErrors.unabletoadd;
                    }
                }
            }
            return(error);
        }