public RecordServiceResult SignOff(Record record, OpenDataSignOffInfo signOffInfo) { if (record.Publication?.OpenData?.Publishable != true) { throw new InvalidOperationException("Record must be publishable as Open Data"); } if (!record.IsAssessedAndUpToDate()) { throw new InvalidOperationException("Couldn't sign-off record for publication - assessment not completed or out of date"); } if (record.IsSignedOffAndUpToDate()) { throw new InvalidOperationException("The record has already been signed off"); } record.Publication.OpenData.SignOff = signOffInfo; UpdateMetadataDate(record, signOffInfo.DateUtc); SetFooterForUpdatedRecord(record, signOffInfo.User); var recordServiceResult = Upsert(record, db, validator); if (!recordServiceResult.Success) { throw new Exception("Error while saving sign off changes"); } return(recordServiceResult); }
public object SignOff(SignOffRequest signOffRequest) { var record = db.Load <Record>(signOffRequest.Id); var signOffInfo = new OpenDataSignOffInfo { User = new UserInfo { DisplayName = user.User.DisplayName, Email = user.User.Email }, DateUtc = Clock.NowUtc, Comment = signOffRequest.Comment }; var updatedRecord = openDataPublishingRecordService.SignOff(record, signOffInfo); db.SaveChanges(); return(updatedRecord); }