/// <summary>
/// Inserts a new user record in the database.
/// </summary>
/// <param name="registrationReference">The Azure Mobile Service user id.</param>
/// <returns>Updated user object.</returns>
public async Task<UserContract> CreateUser(string registrationReference)
{
//Create the new user document with default values and starting gold balance.
var userDocument = new UserDocument
{
GoldBalance = 0,
RegistrationReference = registrationReference,
CreatedAt = new DateDocument
{
Date = DateTime.UtcNow
},
ModifiedAt = new DateDocument
{
Date = DateTime.UtcNow
},
GoldGiven = 0
};
var createdUserId =
(await _documentClient.CreateDocumentAsync(DocumentCollectionUri, userDocument)).Resource.Id;
// Handle gold balance changes and create transaction record
await ExecuteGoldTransactionSproc(createdUserId, SystemUserId, _newUserGoldBalance,
GoldTransactionType.WelcomeGoldTransaction);
userDocument.Id = createdUserId;
userDocument.GoldBalance = _newUserGoldBalance;
return userDocument.ToContract();
}