(feature): user collection init

This commit is contained in:
Maksym Sadovnychyy 2022-10-08 23:38:51 +02:00
parent 4b858008a9
commit 4abe7718eb
6 changed files with 127 additions and 22 deletions

61
db/DML/user.json Normal file
View File

@ -0,0 +1,61 @@
[
{
"_id": "fdc5aa50-ee68-4bae-a8e6-b8ae2c258f60",
"sites": [
"404c8232-9048-4519-bfba-6e78dc7005ca"
],
"created": {
"$date": "2022-01-01T00:00:00.000Z"
},
"nickaName": "hailstrike",
"passwords": {
"pwHash": "",
"pwSalt": "",
"created": {
"$date": "2022-01-01T00:00:00.000Z"
},
"expiration": {
"$date": "2023-01-01T00:00:00.000Z"
},
"expired": [
{
"pwHash": "",
"pwSalt": "",
"created": {
"$date": "2022-01-01T00:00:00.000Z"
},
"expiration": {
"$date": "2023-01-01T00:00:00.000Z"
}
}
]
},
"name": "John",
"lastName": "Doe",
"contacts": [
{
"type": 0,
"value": "john.doe@maks-it.com",
"confirmed": false
},
{
"type": 1,
"value": "+39000000",
"confirmed": false
}
],
"tokens": [],
"billingAddress": {
"street": "",
"city": "",
"postCode": "",
"country": ""
},
"shippingAddress": {
"street": "",
"city": "",
"postCode": "",
"country": ""
}
}
]

View File

@ -1,12 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Core.Abstractions.DomainObjects;
using Core.Enumerations;
namespace Core.DomainObjects {
public class Contact {
public class Contact : DomainObjectBase<Contact> {
public ContactTypes ContactType { get; set; }
public string Value { get; set; }
public bool IsConfirmed { get; set; }
public bool Confirmed { get; set; }
public override int GetHashCode() {
throw new NotImplementedException();
}
}
}

View File

@ -1,31 +1,27 @@
using Core.Abstractions;
using Core.Abstractions.DomainObjects;
using Core.DomainObjects;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Core.Abstractions.DomainObjects;
namespace Core.DomainObjects {
public class User : DomainObjectDocumentBase<User> {
public List<Guid> Sites { get; set; }
public DateTime Created { get; set; }
public string NickName { get; set; }
public string Hash { get; set; }
public string Salt { get; set; }
public Passwords Passwords { get; set; }
public string Name { get; set; }
public string LastName { get; set; }
public Contact Email { get; set; }
public Contact Mobile { get; set; }
public List<Contact> Contacts { get; set; }
public Address BillingAddress { get; set; }
public Address ShippingAddress { get; set; }
// manage whitelisted tokens as salted hash
public List<string> Tokens { get; set; }
public override int GetHashCode() {
throw new NotImplementedException();

View File

@ -0,0 +1,25 @@
using Core.Abstractions.DomainObjects;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Core.DomainObjects {
public class Passwords : DomainObjectBase<Passwords> {
public string PwHash { get; set; }
public string PwSalt { get; set; }
public DateTime Created { get; set; }
public DateTime? Expiration { get; set; }
public List<Passwords> Expired { get; set; }
public override int GetHashCode() {
throw new NotImplementedException();
}
}
}

View File

@ -0,0 +1,11 @@
using Core.Abstractions;
namespace Core.Enumerations {
public class ContactTypes : Enumeration {
public static ContactTypes Email = new(0, "email");
public static ContactTypes Mobile = new(1, "mobile");
private ContactTypes(int id, string displayName) : base (id, displayName) {}
}
}

View File

@ -86,6 +86,9 @@ namespace DataProviders {
if (!BsonClassMap.IsClassMapRegistered(typeof(Contact))) {
BsonClassMap.RegisterClassMap<Contact>(cm => {
cm.AutoMap();
cm.GetMemberMap(c => c.ContactType)
.SetSerializer(new EnumerationSerializer<ContactTypes>());
});
}
@ -140,6 +143,13 @@ namespace DataProviders {
});
}
if (!BsonClassMap.IsClassMapRegistered(typeof(Passwords))) {
BsonClassMap.RegisterClassMap<Passwords>(cm => {
cm.AutoMap();
});
}
if (!BsonClassMap.IsClassMapRegistered(typeof(Route))) {
BsonClassMap.RegisterClassMap<Route>(cm => {
cm.AutoMap();