public Attempt <IValueSet> Patch(ValueSetPatchParameters parameters) { return(this.AttemptValueSetAlteration(parameters.ValueSetGuid, PatchAlteration)); void PatchAlteration(ValueSetDescriptionBaseDto vsd) { if (GetValueSetStatus(vsd.StatusCD) != ValueSetStatus.Draft) { throw new ValueSetOperationException( $"Could not add or remove codes from ValueSet. ValueSet must have a status of `{ValueSetStatus.Draft.ToString()}`. ValueSet had a status of {vsd.StatusCD}"); } vsd.SourceDSC = parameters.ValueSetMeta.SourceDescription; vsd.ValueSetNM = parameters.Name; vsd.AuthorityDSC = parameters.ValueSetMeta.AuthorityDescription; vsd.ClientCD = parameters.ValueSetMeta.ClientCode; vsd.DefinitionDSC = parameters.ValueSetMeta.DefinitionDescription; var updateOp = new Operation { OperationType = OperationType.Update, Value = vsd }; var operations = new List <Operation> { updateOp }; var work = this.PrepareAddRemoveCodes( parameters.ValueSetGuid, parameters.CodesToAdd.ToList(), parameters.CodesToRemove.ToList()); operations.AddRange(work.Operations); var uow = this.uowManager.CreateUnitOfWork(operations); uow.Commit(); var bulkInsertUow = this.uowManager.CreateBulkCopyUnitOfWork(work.NewCodeDtos); bulkInsertUow.Commit(); } }
public Attempt <IValueSet> Patch(ValueSetPatchParameters parameters) { return(this.clientTermValueSetRepository.GetValueSet(parameters.ValueSetGuid) .Select( vs => { if (!vs.Name.Equals(parameters.Name, StringComparison.OrdinalIgnoreCase) && !this.NameIsUnique(parameters.Name)) { return Attempt <IValueSet> .Failed(new ArgumentException($"A value set named '{parameters.Name}' already exists.")); } if (!this.ValidateValueSetMeta(parameters.ValueSetMeta, out var msg)) { return Attempt <IValueSet> .Failed(new ArgumentException(msg)); } return this.clientTermValueSetRepository.Patch(parameters); }) .Else(Attempt <IValueSet> .Failed(new InvalidOperationException(FormattableString.Invariant($"ValueSet with ValueSetGUID {parameters.ValueSetGuid} was not found."))))); }