public async Task <CouchDbCreateDocumentResult> PostServiceMachine(MachineBody machineBody)
        {
            string database = "machines";
            string id       = "";

            if (!string.IsNullOrEmpty(machineBody.id))
            {
                id = machineBody.id;
            }
            else
            {
                id = Guid.NewGuid().ToString("N");
            }

            foreach (var macUsers in machineBody.owners)
            {
                macUsers.id = Guid.NewGuid().ToString("N");
            }

            foreach (var macApp in machineBody.applications)
            {
                macApp.id = Guid.NewGuid().ToString("N");
            }

            CouchDbCreateDocumentResult createResponse = await _couchDbClient.CreateDocumentAsync(database, id, machineBody);

            return(createResponse);
        }
        /// <summary>
        /// Post requested documents.
        /// </summary>
        /// <param name="database">Collection name.</param>
        /// <param name="documentId">Id of document to be created.</param>
        /// <param name="content">Content body.</param>
        /// <param name="cancellationToken">Cancellation token.</param>
        /// <returns>A response indicating whether action was successful.</returns>
        public async Task <CouchDbCreateDocumentResult> CreateDocumentAsync(string database, string documentId, object content, CancellationToken cancellationToken = default)
        {
            var _database = Connect();

            IMongoCollection <BsonDocument> collection = _database.GetCollection <BsonDocument>(database);

            string       contentData = Newtonsoft.Json.JsonConvert.SerializeObject(content);
            BsonDocument document    = BsonSerializer.Deserialize <BsonDocument>(contentData);

            if (documentId == string.Empty)
            {
                documentId = ObjectId.GenerateNewId().ToString();
            }

            if (!document.Contains(IdKey))
            {
                document.Add(new BsonElement(IdKey, new BsonString(documentId)));
            }

            if (document.GetValue(IdKey).IsBsonNull)
            {
                document.Set(IdKey, new BsonString(documentId));
            }

            if (document.Contains(RevisionKey))
            {
                throw new SimpleHttpResponseException(HttpStatusCode.BadRequest, "Cannot assign to '_rev'");
            }

            document.Add(new BsonElement(RevisionKey, new BsonString(InitialRevision)));

            try
            {
                await collection.InsertOneAsync(document);

                CouchDbCreateDocumentResult result = new CouchDbCreateDocumentResult
                {
                    IsSuccessful = true,
                    DocumentId   = documentId,
                    RevisionId   = InitialRevision,
                };

                return(result);
            }
            catch (MongoWriteException)
            {
                throw new SimpleHttpResponseException(HttpStatusCode.Conflict, $"{documentId} already exists!");
            }
            catch (MongoException e)
            {
                Console.WriteLine(e.ToString());
                throw new SimpleHttpResponseException(HttpStatusCode.InternalServerError, e.ToString());
            }
        }
        public async Task <CouchDbCreateDocumentResult> PostServiceApplication(ApplicationBody applicationBody)
        {
            string database = $"applications";
            string id       = "";

            if (!string.IsNullOrEmpty(applicationBody.id))
            {
                id = applicationBody.id;
            }
            else
            {
                id = Guid.NewGuid().ToString("N");
            }

            CouchDbCreateDocumentResult createResponse = await _couchDbClient.CreateDocumentAsync(database, id, applicationBody);

            return(createResponse);
        }
        public async Task <CouchDbCreateDocumentResult> PostServiceUser(UserBody userBody)
        {
            string database = "users";
            string id       = "";

            if (!string.IsNullOrEmpty(userBody.id))
            {
                id = userBody.id;
            }
            else
            {
                id = Guid.NewGuid().ToString("N");
            }

            CouchDbCreateDocumentResult createResponse = await _couchDbClient.CreateDocumentAsync(database, id, userBody);

            return(createResponse);
        }