Creado apartir del commit b888de6c92056de294456f581a56e25e734d4ab7 de develop
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
using MongoDB.Bson;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace adas_core.Domain.Utils;
|
||||
|
||||
public class ObjectIdConverter : JsonConverter
|
||||
{
|
||||
public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
|
||||
{
|
||||
if (value is ObjectId objectId)
|
||||
// Serializa el ObjectId como un string
|
||||
writer.WriteValue(objectId.ToString());
|
||||
else
|
||||
writer.WriteNull();
|
||||
}
|
||||
|
||||
public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue,
|
||||
JsonSerializer serializer)
|
||||
{
|
||||
if (reader.TokenType == JsonToken.String)
|
||||
{
|
||||
var stringValue = reader.Value as string;
|
||||
// Verifica si el valor es el valor predeterminado de ObjectId
|
||||
if (!string.IsNullOrEmpty(stringValue) &&
|
||||
stringValue != "000000000000000000000000" &&
|
||||
ObjectId.TryParse(stringValue, out var oid))
|
||||
return oid;
|
||||
}
|
||||
|
||||
// Nullables reciben null, no-null vuelven Empty
|
||||
if (objectType == typeof(ObjectId))
|
||||
return ObjectId.Empty;
|
||||
// Retorna null o ObjectId.Empty para manejar el valor predeterminado de ObjectId
|
||||
return null;
|
||||
}
|
||||
|
||||
public override bool CanConvert(Type objectType)
|
||||
{
|
||||
return typeof(ObjectId).IsAssignableFrom(objectType);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user