public dtoCreatedItem FileAddVersion(liteRepositorySettings settings, ModuleRepository module, String filePath, String istance, long idItem, dtoUploadedItem version)
        {
            dtoCreatedItem result = null;

            if (version.IsValid)
            {
                RepositoryItem item = Manager.Get <RepositoryItem>(idItem);
                if (item != null && item.Type != ItemType.Folder)
                {
                    List <RepositoryItem> repositoryItems = GetFullQuery(item.Repository.Type, item.Repository.IdCommunity).ToList();
                    dtoFolderTreeItem     dFolder         = FolderGetSizeInfoByFathers(item.IdFolder, repositoryItems, settings, module, filePath, item.Repository.IdCommunity);
                    if (dFolder != null)
                    {
                        result = FileAddVersion(settings, item, version, dFolder, istance, repositoryItems);
                    }
                }
                else
                {
                    result = new dtoCreatedItem()
                    {
                        ToAdd = version, Error = ItemUploadError.UnableToFindFile
                    }
                };
            }
            else
            {
                result = new dtoCreatedItem()
                {
                    ToAdd = version, Error = ItemUploadError.UnableToSaveVersion
                }
            };

            if (result == null && version.IsValid || (result != null && result.IsValid && !result.IsAdded))
            {
                lm.Comol.Core.File.Delete.File(version.SavedFullPath);
                if (version.HasThumbnail)
                {
                    lm.Comol.Core.File.Delete.File(version.ThumbnailFullPath);
                }
            }
            return(result);
        }
Пример #2
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);
        }
Пример #3
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);
            }
        }