public VersionDetail IncrementVersion(IVersionRequest request) { var versions = GetVersions(request); var versionList = versions.OrderBy(x => new Version(x.Version.Major, x.Version.Minor)).Reverse(); VersionSimple version = null; if (versionList.Count() == 0) { version.CreateIncrement(request); } else { version = versionList.First().Version; version.CalculateIncrement(request); } var versionDetail = new VersionDetail { Version = version, CreatedDate = DateTime.Now, Product = new Product { Id = request.ProductId } }; var created = _repository.Add(versionDetail); return(created); }
public IEnumerable <VersionDetail> GetVersions(IVersionRequest request) { var listOfVersions = _repository.GetByProductId(request.ProductId); return(listOfVersions .WithMajorVersion(request.Major) .WithMinorVersion(request.Minor)); }
public static VersionSimple CalculateIncrement(this VersionSimple version, IVersionRequest request) { VersionSimple incrementedVersion = version; if (!request.Major.HasValue && request.Minor.HasValue) { throw new ArgumentException("Cannot pass a Minor version without Major version"); } if (request.Major.HasValue && request.Minor.HasValue) { incrementedVersion = incrementedVersion.IncrementBuild(); } else if (request.Major.HasValue && !request.Minor.HasValue) { incrementedVersion = incrementedVersion.IncrementMinor(); } else { incrementedVersion = incrementedVersion.IncrementMajor(); } return(incrementedVersion); }
public static VersionSimple CreateIncrement(this VersionSimple version, IVersionRequest request) { VersionSimple incrementedVersion = version; if (!request.Major.HasValue && request.Minor.HasValue) { throw new ArgumentException("Cannot pass a Minor version without Major version"); } if (request.Major.HasValue && !request.Minor.HasValue) { incrementedVersion = new VersionSimple(request.Major.Value, 0, 0, 0); } else if (request.Major.HasValue && request.Minor.HasValue) { incrementedVersion = new VersionSimple(request.Major.Value, request.Minor.Value, 0, 0); } else { incrementedVersion = new VersionSimple(1, 0, 0, 0); } return(incrementedVersion); }