Esempio n. 1
0
 public FileItemLink(
     ItemId itemId,
     FileInfoHashKey fileKey,
     FileInfoHashKey?thumbnailKey,
     Version version)
     : this(
         (FileItemLinkId)Guid.NewGuid(),
         itemId,
         fileKey,
         thumbnailKey,
         version,
         DateTime.Now)
 {
 }
Esempio n. 2
0
 public FileItemLink(
     FileItemLink origin,
     ItemId itemId,
     FileInfoHashKey fileKey,
     FileInfoHashKey?thumbnailKey,
     Version version)
     : this(
         origin.Id,
         itemId == default ? origin.ItemId : itemId,
         fileKey == default ? origin.FileKey : fileKey,
         thumbnailKey == default ? origin.ThumbnailKey : thumbnailKey,
         version == default ? origin.Version : version,
         DateTime.Now)
 {
 }
Esempio n. 3
0
 public FileItemLink(
     FileItemLinkId id,
     ItemId itemId,
     FileInfoHashKey fileKey,
     FileInfoHashKey?thumbnailKey,
     Version version,
     DateTime created,
     DateTime?lastChange = null)
 {
     this.Id           = id;
     this.ItemId       = itemId;
     this.FileKey      = fileKey;
     this.Version      = version;
     this.Created      = created;
     this.ThumbnailKey = thumbnailKey;
     this.LastChange   = lastChange ?? DateTime.Now;
 }
Esempio n. 4
0
        public Version GetNextVersion(Version previousVersion, IEnumerable <Version> takenVersions)
        {
            var nextMajor = previousVersion.Major + 1;
            var nextMinor = previousVersion.Minor + 1;
            var nextPatch = previousVersion.Patch + 10000;

            if (!takenVersions.Any(x =>
                                   x.Major == nextMajor))
            {
                return(new Version(nextMajor, 0, 0));
            }

            if (!takenVersions.Any(x =>
                                   x.Major == previousVersion.Major &&
                                   x.Minor == nextMinor))
            {
                return(new Version(previousVersion.Major, nextMinor, 0));
            }



            var patchRange = takenVersions.Where(x =>
                                                 x.Major == previousVersion.Major &&
                                                 x.Minor == previousVersion.Minor &&
                                                 x.Patch.Between(previousVersion.Patch + 1, nextPatch));

            if (!patchRange.Any())
            {
                return(new Version(previousVersion.Major, previousVersion.Minor, nextPatch));
            }

            var nextTakenVersion = patchRange.Min();

            var fallbackPatch = (nextTakenVersion.Patch - previousVersion.Patch) / 2 + previousVersion.Patch;

            return(new Version(previousVersion.Major, previousVersion.Minor, fallbackPatch));
        }
Esempio n. 5
0
 public FileItemLink ToEntity()
 => new FileItemLink((FileItemLinkId)Id, (ItemId)ItemId, FileKey.ToEntity(), ThumbnailKey?.ToEntity(), Version.ToEntity(), Created, LastChange);
Esempio n. 6
0
 public                               VersionedFile this[Version version]
 {
     get => this.FileVersions.FirstOrDefault(x => x.Version == version);