Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }