public RecordServiceResult Assess(Record record, OpenDataAssessmentInfo assessmentInfo) { if (record.Publication?.OpenData?.Publishable != true) { throw new InvalidOperationException("Record must be publishable as Open Data"); } if (!record.IsEligibleForOpenDataPublishing()) { throw new InvalidOperationException("Must have a file path for publishing"); } if (record.IsAssessedAndUpToDate()) { throw new InvalidOperationException("Assessment has already been completed and is up to date"); } if (!record.Validation.Equals(Validation.Gemini)) { throw new InvalidOperationException("Validation level must be Gemini"); } if (record.Publication == null) { record.Publication = new PublicationInfo(); } if (record.Publication.OpenData == null) { record.Publication.OpenData = new OpenDataPublicationInfo { Assessment = new OpenDataAssessmentInfo() }; } record.Publication.OpenData.Assessment = assessmentInfo; UpdateMetadataDate(record, assessmentInfo.CompletedOnUtc); SetFooterForUpdatedRecord(record, assessmentInfo.CompletedByUser); var recordServiceResult = Upsert(record, db, validator); if (!recordServiceResult.Success) { throw new Exception("Error while saving assessment changes."); } return(recordServiceResult); }
public object Assess(AssessmentRequest assessmentRequest) { var record = db.Load <Record>(assessmentRequest.Id); var assessmentInfo = new OpenDataAssessmentInfo { Completed = true, CompletedByUser = new UserInfo { DisplayName = user.User.DisplayName, Email = user.User.Email }, CompletedOnUtc = Clock.NowUtc, InitialAssessmentWasDoneOnSpreadsheet = record.Publication?.OpenData?.Assessment?.InitialAssessmentWasDoneOnSpreadsheet == true }; var updatedRecord = openDataPublishingRecordService.Assess(record, assessmentInfo); db.SaveChanges(); return(updatedRecord); }