diff --git a/src/api/MyPrayerJournal.Api/Data.fs b/src/api/MyPrayerJournal.Api/Data.fs index 5fef05f..ab9fdc8 100644 --- a/src/api/MyPrayerJournal.Api/Data.fs +++ b/src/api/MyPrayerJournal.Api/Data.fs @@ -267,7 +267,7 @@ type AppDbContext (opts : DbContextOptions) = } /// Retrieve a request, including its history and notes, by its ID and user ID - member this.TryCompleteRequestById requestId userId = + member this.TryFullRequestById requestId userId = task { match! this.TryJournalById requestId userId with | Some req -> @@ -281,18 +281,3 @@ type AppDbContext (opts : DbContextOptions) = | None -> return None | None -> return None } - - /// Retrieve a request, including its history, by its ID and user ID - member this.TryFullRequestById requestId userId = - task { - match! this.TryJournalById requestId userId with - | Some req -> - let! fullReq = - this.Requests.AsNoTracking() - .Include(fun r -> r.history) - .FirstOrDefaultAsync(fun r -> r.requestId = requestId && r.userId = userId) - match toOption fullReq with - | Some _ -> return Some { req with history = List.ofSeq fullReq.history } - | None -> return None - | None -> return None - } diff --git a/src/api/MyPrayerJournal.Api/Handlers.fs b/src/api/MyPrayerJournal.Api/Handlers.fs index 5073d76..be7dc8e 100644 --- a/src/api/MyPrayerJournal.Api/Handlers.fs +++ b/src/api/MyPrayerJournal.Api/Handlers.fs @@ -26,7 +26,7 @@ module Error = /// Handle 404s from the API, sending known URL paths to the Vue app so that they can be handled there let notFound : HttpHandler = fun next ctx -> - [ "/answered"; "/journal"; "/legal"; "/request"; "/snoozed"; "/user" ] + [ "/journal"; "/legal"; "/request"; "/user" ] |> List.filter ctx.Request.Path.Value.StartsWith |> List.length |> function @@ -236,16 +236,6 @@ module Request = | None -> return! Error.notFound next ctx } - /// GET /api/request/[req-id]/complete - let getComplete reqId : HttpHandler = - authorize - >=> fun next ctx -> - task { - match! (db ctx).TryCompleteRequestById reqId (userId ctx) with - | Some req -> return! json req next ctx - | None -> return! Error.notFound next ctx - } - /// GET /api/request/[req-id]/full let getFull reqId : HttpHandler = authorize diff --git a/src/api/MyPrayerJournal.Api/Program.fs b/src/api/MyPrayerJournal.Api/Program.fs index a50e48a..73f0884 100644 --- a/src/api/MyPrayerJournal.Api/Program.fs +++ b/src/api/MyPrayerJournal.Api/Program.fs @@ -59,7 +59,6 @@ module Configure = route "journal" Handlers.Journal.journal subRoute "request" [ route "s/answered" Handlers.Request.answered - routef "/%s/complete" Handlers.Request.getComplete routef "/%s/full" Handlers.Request.getFull routef "/%s/notes" Handlers.Request.getNotes routef "/%s" Handlers.Request.get diff --git a/src/app/src/App.vue b/src/app/src/App.vue index be30745..427708c 100644 --- a/src/app/src/App.vue +++ b/src/app/src/App.vue @@ -106,6 +106,12 @@ a:hover { .mpj-request-text { white-space: pre-line; } +.mpj-request-list p { + border-top: solid 1px lightgray; +} +.mpj-request-list p:first-child { + border-top: none; +} .mpj-request-log { width: 100%; } diff --git a/src/app/src/api/index.js b/src/app/src/api/index.js index 5720496..1adab6c 100644 --- a/src/app/src/api/index.js +++ b/src/app/src/api/index.js @@ -1,3 +1,5 @@ +'use strict' + import axios from 'axios' const http = axios.create({ @@ -39,7 +41,7 @@ export default { getAnsweredRequests: () => http.get('requests/answered'), /** - * Get a prayer request (full; includes all history) + * Get a prayer request (full; includes all history and notes) * @param {string} requestId The Id of the request to retrieve */ getFullRequest: requestId => http.get(`request/${requestId}/full`), @@ -56,11 +58,6 @@ export default { */ getRequest: requestId => http.get(`request/${requestId}`), - /** - * Get a complete request; equivalent of "full" and "notes" combined - */ - getRequestComplete: requestId => http.get(`request/${requestId}/complete`), - /** * Get all prayer requests and their most recent updates */ diff --git a/src/app/src/components/AnsweredDetail.vue b/src/app/src/components/AnsweredDetail.vue deleted file mode 100644 index 9716cd2..0000000 --- a/src/app/src/components/AnsweredDetail.vue +++ /dev/null @@ -1,86 +0,0 @@ - - - diff --git a/src/app/src/components/Journal.vue b/src/app/src/components/Journal.vue index d2747be..b6ccc46 100644 --- a/src/app/src/components/Journal.vue +++ b/src/app/src/components/Journal.vue @@ -67,5 +67,6 @@ export default { display: flex; flex-flow: row wrap; justify-content: center; + align-items: flex-start; } \ No newline at end of file diff --git a/src/app/src/components/Navigation.vue b/src/app/src/components/Navigation.vue index 52380f7..b7979db 100644 --- a/src/app/src/components/Navigation.vue +++ b/src/app/src/components/Navigation.vue @@ -8,11 +8,14 @@ nav.mpj-top-nav.mpj-bg(role='menubar') router-link(v-if='isAuthenticated' :to="{ name: 'Journal' }" role='menuitem') Journal + router-link(v-if='isAuthenticated' + :to="{ name: 'ActiveRequests' }" + role='menuitem') Active router-link(v-if='hasSnoozed' - :to="{ name: 'Snoozed' }" + :to="{ name: 'SnoozedRequests' }" role='menuitem') Snoozed router-link(v-if='isAuthenticated' - :to="{ name: 'Answered' }" + :to="{ name: 'AnsweredRequests' }" role='menuitem') Answered a(v-if='isAuthenticated' href='#' diff --git a/src/app/src/components/request/ActiveRequests.vue b/src/app/src/components/request/ActiveRequests.vue new file mode 100644 index 0000000..4f3025c --- /dev/null +++ b/src/app/src/components/request/ActiveRequests.vue @@ -0,0 +1,63 @@ + + + diff --git a/src/app/src/components/Answered.vue b/src/app/src/components/request/AnsweredRequests.vue similarity index 59% rename from src/app/src/components/Answered.vue rename to src/app/src/components/request/AnsweredRequests.vue index 939c047..dedca7f 100644 --- a/src/app/src/components/Answered.vue +++ b/src/app/src/components/request/AnsweredRequests.vue @@ -1,30 +1,27 @@ - - diff --git a/src/app/src/components/request/FullRequest.vue b/src/app/src/components/request/FullRequest.vue index 5bf6994..55db339 100644 --- a/src/app/src/components/request/FullRequest.vue +++ b/src/app/src/components/request/FullRequest.vue @@ -1,56 +1,89 @@ diff --git a/src/app/src/components/request/RequestListItem.vue b/src/app/src/components/request/RequestListItem.vue new file mode 100644 index 0000000..6fa306d --- /dev/null +++ b/src/app/src/components/request/RequestListItem.vue @@ -0,0 +1,65 @@ + + + diff --git a/src/app/src/components/Snoozed.vue b/src/app/src/components/request/SnoozedRequests.vue similarity index 71% rename from src/app/src/components/Snoozed.vue rename to src/app/src/components/request/SnoozedRequests.vue index d484912..711729b 100644 --- a/src/app/src/components/Snoozed.vue +++ b/src/app/src/components/request/SnoozedRequests.vue @@ -1,30 +1,29 @@ - - diff --git a/src/app/src/router/index.js b/src/app/src/router/index.js index ea2f9d5..fc2dce2 100644 --- a/src/app/src/router/index.js +++ b/src/app/src/router/index.js @@ -1,14 +1,17 @@ +'use strict' + import Vue from 'vue' import Router from 'vue-router' -import Answered from '@/components/Answered' -import AnsweredDetail from '@/components/AnsweredDetail' +import ActiveRequests from '@/components/request/ActiveRequests' +import AnsweredRequests from '@/components/request/AnsweredRequests' import EditRequest from '@/components/request/EditRequest' +import FullRequest from '@/components/request/FullRequest' import Home from '@/components/Home' import Journal from '@/components/Journal' import LogOn from '@/components/user/LogOn' import PrivacyPolicy from '@/components/legal/PrivacyPolicy' -import Snoozed from '@/components/Snoozed' +import SnoozedRequests from '@/components/request/SnoozedRequests' import TermsOfService from '@/components/legal/TermsOfService' Vue.use(Router) @@ -21,17 +24,6 @@ export default new Router({ name: 'Home', component: Home }, - { - path: '/answered/:id', - name: 'AnsweredDetail', - component: AnsweredDetail, - props: true - }, - { - path: '/answered', - name: 'Answered', - component: Answered - }, { path: '/journal', name: 'Journal', @@ -54,9 +46,25 @@ export default new Router({ props: true }, { - path: '/snoozed', - name: 'Snoozed', - component: Snoozed + path: '/request/:id/full', + name: 'FullRequest', + component: FullRequest, + props: true + }, + { + path: '/requests/active', + name: 'ActiveRequests', + component: ActiveRequests + }, + { + path: '/requests/answered', + name: 'AnsweredRequests', + component: AnsweredRequests + }, + { + path: '/requests/snoozed', + name: 'SnoozedRequests', + component: SnoozedRequests }, { path: '/user/log-on', diff --git a/src/app/src/store/index.js b/src/app/src/store/index.js index 74ee607..c573d38 100644 --- a/src/app/src/store/index.js +++ b/src/app/src/store/index.js @@ -1,3 +1,5 @@ +'use strict' + import Vue from 'vue' import Vuex from 'vuex'