Example #1
0
        /// <summary>
        /// Updates the item in the data store
        /// </summary>
        /// <remarks>Error codes follow the format DAL-CM-6XX</remarks>
        /// <typeparam name="I">The item type to update against</typeparam>
        /// <param name="item">Class implementing the property edit interface</param>
        /// <param name="dataResult">Optional data result interface</param>
        /// <returns>Returns the item sent</returns>
        public async Task <I> Update <I>(I item, IDataResult dataResult = null) where I : IId
        {
            //create update
            var update = BuildUpdate <I>(item);

            //call simple update
            var result = await SimpleUpdate <T>(item.Id, update, CollectionName, CollectionNameAudit, CollectionName + ".Update");

            if (dataResult != null)
            {
                dataResult.SetDataResults(result.IsAcknowledged, result.IsModifiedCountAvailable, result.MatchedCount, result.ModifiedCount);
            }
            //return item
            return(item);
        }
Example #2
0
        /// <summary>
        /// Saves the item to the data store
        /// This will Upsert the entire item so use with care
        /// </summary>
        /// <remarks>Error codes follow the format DAL-CM-5XX</remarks>
        /// <param name="item">The full item to save</param>
        /// <param name="dataResult">Optional data result interface</param>
        /// <param name="create">Optional create parameter used for the data result to mark as complete</param>
        /// <returns>Returns the item sent</returns>
        public async Task <T> Save(T item, IDataResult dataResult = null, bool create = false)
        {
            //audit item
            await AuditItem <T>(item, CollectionName, CollectionName + ".Save");

            //get the collection and do replace one
            var collection = Repository.Database.GetCollection <T>(CollectionName);
            var result     = await collection.ReplaceOneAsync(x => x.Id == item.Id, item, new UpdateOptions
            {
                IsUpsert = true
            });

            if (dataResult != null)
            {
                dataResult.SetDataResults(result.IsAcknowledged, result.IsModifiedCountAvailable, result.MatchedCount, result.ModifiedCount, (create) ? 0 : 1, (create) ? 0 : 1);
            }
            return(item);
        }