public FileItemLink( ItemId itemId, FileInfoHashKey fileKey, FileInfoHashKey?thumbnailKey, Version version) : this( (FileItemLinkId)Guid.NewGuid(), itemId, fileKey, thumbnailKey, version, DateTime.Now) { }
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) { }
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; }
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)); }
public FileItemLink ToEntity() => new FileItemLink((FileItemLinkId)Id, (ItemId)ItemId, FileKey.ToEntity(), ThumbnailKey?.ToEntity(), Version.ToEntity(), Created, LastChange);
public VersionedFile this[Version version] { get => this.FileVersions.FirstOrDefault(x => x.Version == version);