public IEnumerable<SearchResultViewModel> GetTopicsWithSearchTerm(string searchTerm) { string upperInvariantSearchTerm = searchTerm.ToUpperInvariant(); using (var todoModelContext = new TodoModelContext()) { var topics = todoModelContext.Topics; foreach (var topic in topics) { foreach (var note in topic.Notes) { if (note.Content.ToUpperInvariant().Contains(upperInvariantSearchTerm)) { yield return new SearchResultViewModel { Content = note.Content, TopicName = topic.Name, TopicId = topic.TopicId, }; } } } } }
public TopicNotesModule() : base("/api/topics/{topicId:int}/notes") { this.RequiresAuthentication(); Post["/"] = parameters => { var topicId = (int)parameters.topicId.Value; var note = this.Bind<Note>(); using (var todoModelContext = new TodoModelContext()) { DomainClasses.Topic topic = todoModelContext.Topics.Find(topicId); topic.Notes.Add(note); todoModelContext.Notes.Add(note); todoModelContext.SaveChanges(); return HttpStatusCode.Created; } }; Post["/move/{noteId:int}"] = parameters => { var topicId = (int)parameters.topicId.Value; var noteId = (int)parameters.noteId.Value; using (var todoModelContext = new TodoModelContext()) { Note note = todoModelContext.Notes.Find(noteId); note.Topic.Notes.Remove(note); DomainClasses.Topic newTopic = todoModelContext.Topics.Find(topicId); newTopic.Notes.Add(note); todoModelContext.SaveChanges(); return HttpStatusCode.OK; } }; Delete["/{noteId:int}"] = parameters => { var topicId = (int)parameters.topicId.Value; var noteId = (int)parameters.noteId.Value; using (var todoModelContext = new TodoModelContext()) { DomainClasses.Topic topic = todoModelContext.Topics.Find(topicId); Note note = todoModelContext.Notes.Find(noteId); topic.Notes.Remove(note); todoModelContext.Notes.Remove(note); todoModelContext.SaveChanges(); return HttpStatusCode.NoContent; } }; }
public TopicsModule() : base("/api/topics") { this.RequiresAuthentication(); Get["/"] = _ => { using (var todoModelContext = new TodoModelContext()) { var topics = todoModelContext.Topics.ToList().Select(t => new SlimTopic(t)); return Response.AsJson(topics); } }; Get["/{id:int}"] = parameters => { using (var todoModelContext = new TodoModelContext()) { var id = (int)parameters.id.Value; var topic = todoModelContext.Topics.SingleOrDefault(d => d.TopicId == id); Topic fromDomainModel = mapper.Map<Topic>(topic); return Response.AsJson(fromDomainModel); } }; Post["/"] = _ => { using (var todoModelContext = new TodoModelContext()) { var slimTopic = this.Bind<SlimTopic>(); var topic = new DomainClasses.Topic { Name = slimTopic.Name, IsShown = true, }; todoModelContext.Topics.Add(topic); todoModelContext.SaveChanges(); return Response.AsJson(new { id = topic.TopicId }); } }; Post["/{id:int}"] = parameters => { using (var todoModelContext = new TodoModelContext()) { var id = (int)parameters.id.Value; DomainClasses.Topic topic = todoModelContext.Topics.Find(id); this.BindTo(topic, ReflectionHelper.GetPropertyName<DomainClasses.Topic>(p => p.Notes), ReflectionHelper.GetPropertyName<DomainClasses.Topic>(p => p.TopicId)); todoModelContext.SaveChanges(); return HttpStatusCode.OK; } }; Delete["/{id:int}"] = parameters => { using (var todoModelContext = new TodoModelContext()) { var id = (int)parameters.id.Value; DomainClasses.Topic topic = todoModelContext.Topics.Find(id); todoModelContext.Topics.Remove(topic); todoModelContext.SaveChanges(); return HttpStatusCode.NoContent; } }; }