Example #1
0
 /// <summary>
 /// Gets the count of items that would be returned by the query
 /// </summary>
 /// <param name="query">
 /// The query.
 /// </param>
 /// <returns>
 /// The <see cref="int"/>.
 /// </returns>
 internal override int Count(IQuery <INote> query)
 {
     using (var repository = RepositoryFactory.CreateNoteRepository(UowProvider.GetUnitOfWork()))
     {
         return(repository.Count(query));
     }
 }
Example #2
0
        /// <summary>
        /// Saves a collection of <see cref="INote"/>
        /// </summary>
        /// <param name="notes">
        /// The collection of <see cref="INote"/>s to be saved
        /// </param>
        /// <param name="raiseEvents">
        /// Optional boolean indicating whether or not to raise events
        /// </param>
        public void Save(IEnumerable <INote> notes, bool raiseEvents = true)
        {
            var notesArray = notes as INote[] ?? notes.ToArray();

            if (raiseEvents)
            {
                Saving.RaiseEvent(new SaveEventArgs <INote>(notesArray), this);
            }

            using (new WriteLock(Locker))
            {
                var uow = UowProvider.GetUnitOfWork();
                using (var repository = RepositoryFactory.CreateNoteRepository(uow))
                {
                    foreach (var note in notesArray)
                    {
                        repository.AddOrUpdate(note);
                    }

                    uow.Commit();
                }
            }

            Saved.RaiseEvent(new SaveEventArgs <INote>(notesArray), this);
        }
Example #3
0
        /// <summary>
        /// Creates a note and saves it to the database
        /// </summary>
        /// <param name="entityKey">
        /// The entity key.
        /// </param>
        /// <param name="entityTfKey">
        /// The entity type field key.
        /// </param>
        /// <param name="message">
        /// The message.
        /// </param>
        /// <param name="raiseEvents">
        /// Optional boolean indicating whether or not to raise events
        /// </param>
        /// <returns>
        /// The <see cref="INote"/>.
        /// </returns>
        public INote CreateNoteWithKey(Guid entityKey, Guid entityTfKey, string message, bool raiseEvents = true)
        {
            var note = CreateNote(entityKey, entityTfKey, message, raiseEvents);

            if (raiseEvents)
            {
                if (Creating.IsRaisedEventCancelled(new Events.NewEventArgs <INote>(note), this))
                {
                    ((Note)note).WasCancelled = true;
                    return(note);
                }
            }

            using (new WriteLock(Locker))
            {
                var uow = UowProvider.GetUnitOfWork();
                using (var repository = RepositoryFactory.CreateNoteRepository(uow))
                {
                    repository.AddOrUpdate(note);
                    uow.Commit();
                }
            }

            Created.RaiseEvent(new Events.NewEventArgs <INote>(note), this);

            return(note);
        }
Example #4
0
 /// <summary>
 /// Gets an <see cref="INote"/> by it's key
 /// </summary>
 /// <param name="key">
 /// The key.
 /// </param>
 /// <returns>
 /// The <see cref="INote"/>.
 /// </returns>
 public override INote GetByKey(Guid key)
 {
     using (var repository = RepositoryFactory.CreateNoteRepository(UowProvider.GetUnitOfWork()))
     {
         return(repository.Get(key));
     }
 }
Example #5
0
        /// <summary>
        /// Gets a <see cref="Page{INote}"/>
        /// </summary>
        /// <param name="page">
        /// The page.
        /// </param>
        /// <param name="itemsPerPage">
        /// The items per page.
        /// </param>
        /// <param name="sortBy">
        /// The sort by.
        /// </param>
        /// <param name="sortDirection">
        /// The sort direction.
        /// </param>
        /// <returns>
        /// The <see cref="Page{TEntity}"/>.
        /// </returns>
        public override Page <INote> GetPage(long page, long itemsPerPage, string sortBy = "", SortDirection sortDirection = SortDirection.Descending)
        {
            var query = Persistence.Querying.Query <INote> .Builder.Where(x => x.Key != Guid.Empty);

            using (var repository = RepositoryFactory.CreateNoteRepository(UowProvider.GetUnitOfWork()))
            {
                return(repository.GetPage(page, itemsPerPage, query, ValidateSortByField(sortBy), sortDirection));
            }
        }
Example #6
0
        /// <summary>
        /// Gets a collection of <see cref="INote"/> for an entity type
        /// </summary>
        /// <param name="entityTfKey">
        /// The entity type field key.
        /// </param>
        /// <param name="page">
        /// The page.
        /// </param>
        /// <param name="itemsPerPage">
        /// The items per page.
        /// </param>
        /// <param name="sortBy">
        /// The sort by.
        /// </param>
        /// <param name="sortDirection">
        /// The sort direction.
        /// </param>
        /// <returns>
        /// The <see cref="Page{INote}"/>.
        /// </returns>
        public Page <INote> GetNotesByEntityTfKey(Guid entityTfKey, long page, long itemsPerPage, string sortBy = "", SortDirection sortDirection = SortDirection.Descending)
        {
            using (var repository = RepositoryFactory.CreateNoteRepository(UowProvider.GetUnitOfWork()))
            {
                var query = Persistence.Querying.Query <INote> .Builder.Where(x => x.EntityTfKey == entityTfKey);

                return(repository.GetPage(page, itemsPerPage, query, ValidateSortByField(sortBy), sortDirection));
            }
        }
Example #7
0
        /// <summary>
        /// Gets a collection of <see cref="INote"/> for a particular entity
        /// </summary>
        /// <param name="entityKey">
        /// The entity key.
        /// </param>
        /// <returns>
        /// The <see cref="IEnumerable{INote}"/>.
        /// </returns>
        public IEnumerable <INote> GetNotesByEntityKey(Guid entityKey)
        {
            using (var repository = RepositoryFactory.CreateNoteRepository(UowProvider.GetUnitOfWork()))
            {
                var query = Persistence.Querying.Query <INote> .Builder.Where(x => x.EntityKey == entityKey);

                return(repository.GetByQuery(query));
            }
        }
Example #8
0
        /// <summary>
        /// The get paged keys.
        /// </summary>
        /// <param name="page">
        /// The page.
        /// </param>
        /// <param name="itemsPerPage">
        /// The items per page.
        /// </param>
        /// <param name="sortBy">
        /// The sort by.
        /// </param>
        /// <param name="sortDirection">
        /// The sort direction.
        /// </param>
        /// <returns>
        /// The <see cref="Page{Guid}"/>.
        /// </returns>
        internal override Page <Guid> GetPagedKeys(long page, long itemsPerPage, string sortBy = "", SortDirection sortDirection = SortDirection.Descending)
        {
            var query = Persistence.Querying.Query <INote> .Builder.Where(x => x.Key != Guid.Empty);

            return(GetPagedKeys(
                       RepositoryFactory.CreateNoteRepository(UowProvider.GetUnitOfWork()),
                       query,
                       page,
                       itemsPerPage,
                       ValidateSortByField(sortBy),
                       sortDirection));
        }
Example #9
0
        /// <summary>
        /// Deletes a <see cref="INote"/>
        /// </summary>
        /// <param name="note">
        /// The <see cref="INote"/> to be deleted
        /// </param>
        /// <param name="raiseEvents">
        /// Optional boolean indicating whether or not to raise events
        /// </param>
        public void Delete(INote note, bool raiseEvents = true)
        {
            if (raiseEvents)
            {
                if (Deleting.IsRaisedEventCancelled(new DeleteEventArgs <INote>(note), this))
                {
                    ((Note)note).WasCancelled = true;
                    return;
                }
            }

            using (new WriteLock(Locker))
            {
                var uow = UowProvider.GetUnitOfWork();
                using (var repository = RepositoryFactory.CreateNoteRepository(uow))
                {
                    repository.Delete(note);
                    uow.Commit();
                }
            }

            Deleted.RaiseEvent(new DeleteEventArgs <INote>(note), this);
        }