/// <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)); } }
/// <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); }
/// <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); }
/// <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)); } }
/// <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)); } }
/// <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)); } }
/// <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)); } }
/// <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)); }
/// <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); }