diff --git a/Providers/XBaseFileProvider.cs b/Providers/XBaseFileProvider.cs index 90602d2..a9520b2 100644 --- a/Providers/XBaseFileProvider.cs +++ b/Providers/XBaseFileProvider.cs @@ -531,20 +531,21 @@ namespace xFileService.Providers // // Validate ... - var isValid = !model.IsNullOrDefault() && - !model.Name.IsNullOrEmpty() && + result = !model.Id.IsNull() && + !providedForId.IsNull() && + !model.IsNullOrDefault() && !model.Id.IsDefaultGuid() && - !providedForId.IsNull(); - if (!isValid) + !model.Name.IsNullOrEmpty(); + if (!result) { XException.InvalidArgs.Throw(); } // // Check Model Exists ... - isValid = await FileProvider.IsExists(model.Id); - if (!isValid) + result = await FileProvider.IsExists(model.Id); + if (!result) { XException.NotFound.Throw(); } @@ -553,6 +554,20 @@ namespace xFileService.Providers // Update Model by Retrieving ... model = await FileProvider.Get(model.Id); + // + // Retrieve all References ... + var references = await GetAllReferences(providedForId); + + // + // Check isReferenced or not ... + result = references.Any(r => r.Id == model.Id && + r.References.Any(rf => rf.ProvidedFor == Provider && + rf.ReferencedTo == $"{providedForId}")); + if (result) + { + return result; + } + // int forIndex = await CountReferences(providedForId); model.References.Add(new XReference @@ -595,15 +610,21 @@ namespace xFileService.Providers // // Validate ... // Since other Validations Handled in Calling, we Ignore them here ... - if (model.IsNull() || - reference.IsNullOrDefault() || - (!reference.ProvidedFor.IsNullOrEmpty() && reference.ProvidedFor != Provider)) + var result = + !model.IsNullOrDefault() && + !model.Id.IsNull() && + !model.Id.IsDefaultGuid() && + !reference.IsNullOrDefault() && + !reference.ReferencedTo.IsNull() && + reference.ProvidedFor == Provider && + !reference.ProvidedFor.IsNullOrEmpty(); + if (!result) { XException.InvalidArgs.Throw(); } // - var result = await AddReference( + result = await AddReference( model: model, userInfo: userInfo, connectionId: connectionId, @@ -670,7 +691,7 @@ namespace xFileService.Providers var reference = model.References .FirstOrDefault(r => r.ProvidedFor == Provider && r.ReferencedTo == $"{providedForId}"); - result = !model.IsNullOrDefault(); + result = !reference.IsNullOrDefault(); if (!result) { XException.ActionFailed.Throw(); @@ -865,7 +886,7 @@ namespace xFileService.Providers ) { // - var result = $"{GetProvidedID(providedForId, splitter)}{splitter}{providedForId}"; + var result = $"{GetProvidedID(providedForId, splitter)}{splitter}{forIndex}"; // return result;