Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 116 additions & 3 deletions app/schemas/org.fossasia.openevent.general.OpenEventDatabase/8.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"formatVersion": 1,
"database": {
"version": 8,
"identityHash": "220a5a8960fa7289b6b6f4a9fe11c92d",
"identityHash": "c65ffea75fee1faf6cd199cbbc5c25ee",
"entities": [
{
"tableName": "Event",
Expand Down Expand Up @@ -1576,7 +1576,7 @@
},
{
"tableName": "Session",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER NOT NULL, `shortAbstract` TEXT, `comments` TEXT, `longAbstract` TEXT, `level` TEXT, `signupUrl` TEXT, `endsAt` TEXT, `language` TEXT, `title` TEXT, `startsAt` TEXT, `slidesUrl` TEXT, `averageRating` REAL, `submittedAt` TEXT, `deletedAt` TEXT, `subtitle` TEXT, `createdAt` TEXT, `state` TEXT, `lastModifiedAt` TEXT, `videoUrl` TEXT, `audioUrl` TEXT, `sessionType` TEXT, `microlocation` TEXT, `track` TEXT, PRIMARY KEY(`id`))",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER NOT NULL, `shortAbstract` TEXT, `comments` TEXT, `longAbstract` TEXT, `level` TEXT, `signupUrl` TEXT, `endsAt` TEXT, `language` TEXT, `title` TEXT, `startsAt` TEXT, `slidesUrl` TEXT, `averageRating` REAL, `submittedAt` TEXT, `deletedAt` TEXT, `subtitle` TEXT, `createdAt` TEXT, `state` TEXT, `lastModifiedAt` TEXT, `videoUrl` TEXT, `audioUrl` TEXT, `sessionType` TEXT, `microlocation` TEXT, `track` TEXT, `event` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
Expand Down Expand Up @@ -1715,6 +1715,12 @@
"columnName": "track",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "event",
"columnName": "event",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
Expand Down Expand Up @@ -1747,6 +1753,14 @@
"track"
],
"createSql": "CREATE INDEX `index_Session_track` ON `${TABLE_NAME}` (`track`)"
},
{
"name": "index_Session_event",
"unique": false,
"columnNames": [
"event"
],
"createSql": "CREATE INDEX `index_Session_event` ON `${TABLE_NAME}` (`event`)"
}
],
"foreignKeys": []
Expand Down Expand Up @@ -1968,12 +1982,111 @@
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "Proposal",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER, `title` TEXT, `language` TEXT, `shortAbstract` TEXT, `comments` TEXT, `startsAt` TEXT, `endsAt` TEXT, `track` TEXT, `event` INTEGER, `speakers` TEXT NOT NULL, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "title",
"columnName": "title",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "language",
"columnName": "language",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "shortAbstract",
"columnName": "shortAbstract",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "comments",
"columnName": "comments",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "startsAt",
"columnName": "startsAt",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "endsAt",
"columnName": "endsAt",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "track",
"columnName": "track",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "event",
"columnName": "event",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "speakers",
"columnName": "speakers",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [
{
"name": "index_Proposal_track",
"unique": false,
"columnNames": [
"track"
],
"createSql": "CREATE INDEX `index_Proposal_track` ON `${TABLE_NAME}` (`track`)"
},
{
"name": "index_Proposal_event",
"unique": false,
"columnNames": [
"event"
],
"createSql": "CREATE INDEX `index_Proposal_event` ON `${TABLE_NAME}` (`event`)"
},
{
"name": "index_Proposal_speakers",
"unique": false,
"columnNames": [
"speakers"
],
"createSql": "CREATE INDEX `index_Proposal_speakers` ON `${TABLE_NAME}` (`speakers`)"
}
],
"foreignKeys": []
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '220a5a8960fa7289b6b6f4a9fe11c92d')"
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'c65ffea75fee1faf6cd199cbbc5c25ee')"
]
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ import org.fossasia.openevent.general.auth.UserIdConverter
import org.fossasia.openevent.general.event.Event
import org.fossasia.openevent.general.event.EventDao
import org.fossasia.openevent.general.event.EventIdConverter
import org.fossasia.openevent.general.speakercall.SpeakersCall
import org.fossasia.openevent.general.speakercall.SpeakersCallDao
import org.fossasia.openevent.general.event.subtopic.EventSubTopicConverter
import org.fossasia.openevent.general.event.topic.EventTopic
import org.fossasia.openevent.general.event.topic.EventTopicConverter
Expand All @@ -37,10 +35,14 @@ import org.fossasia.openevent.general.settings.SettingsDao
import org.fossasia.openevent.general.social.SocialLink
import org.fossasia.openevent.general.social.SocialLinksDao
import org.fossasia.openevent.general.speakercall.SpeakersCallConverter
import org.fossasia.openevent.general.speakercall.SpeakersCall
import org.fossasia.openevent.general.speakercall.Proposal
import org.fossasia.openevent.general.speakercall.SpeakersCallDao
import org.fossasia.openevent.general.speakers.Speaker
import org.fossasia.openevent.general.speakers.SpeakerDao
import org.fossasia.openevent.general.speakers.SpeakerWithEvent
import org.fossasia.openevent.general.speakers.SpeakerWithEventDao
import org.fossasia.openevent.general.speakers.ListSpeakerIdConverter
import org.fossasia.openevent.general.sponsor.Sponsor
import org.fossasia.openevent.general.sponsor.SponsorDao
import org.fossasia.openevent.general.sponsor.SponsorWithEvent
Expand All @@ -52,11 +54,11 @@ import org.fossasia.openevent.general.ticket.TicketIdConverter
@Database(entities = [Event::class, User::class, SocialLink::class, Ticket::class, Attendee::class,
EventTopic::class, Order::class, CustomForm::class, Speaker::class, SpeakerWithEvent::class, Sponsor::class,
SponsorWithEvent::class, Session::class, SpeakersCall::class, Feedback::class, Notification::class,
Settings::class], version = 8)
Settings::class, Proposal::class], version = 8)
@TypeConverters(EventIdConverter::class, EventTopicConverter::class, EventTypeConverter::class,
EventSubTopicConverter::class, TicketIdConverter::class, MicroLocationConverter::class, UserIdConverter::class,
AttendeeIdConverter::class, ListAttendeeIdConverter::class, SessionTypeConverter::class, TrackConverter::class,
SpeakersCallConverter::class)
SpeakersCallConverter::class, ListSpeakerIdConverter::class)
abstract class OpenEventDatabase : RoomDatabase() {

abstract fun eventDao(): EventDao
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import org.fossasia.openevent.general.event.EVENT_DETAIL_FRAGMENT
import org.fossasia.openevent.general.search.ORDER_COMPLETED_FRAGMENT
import org.fossasia.openevent.general.search.SEARCH_RESULTS_FRAGMENT
import org.fossasia.openevent.general.search.location.SEARCH_LOCATION_FRAGMENT
import org.fossasia.openevent.general.speakercall.SPEAKERS_CALL_FRAGMENT
import org.fossasia.openevent.general.ticket.TICKETS_FRAGMENT
import org.fossasia.openevent.general.utils.Utils.hideSoftKeyboard
import org.fossasia.openevent.general.utils.Utils.show
Expand Down Expand Up @@ -165,6 +166,7 @@ class AuthFragment : Fragment(), ComplexBackPressFragment {
PROFILE_FRAGMENT -> findNavController(rootView).popBackStack(R.id.profileFragment, false)
SEARCH_RESULTS_FRAGMENT -> findNavController(rootView).popBackStack(R.id.searchResultsFragment, false)
ORDER_COMPLETED_FRAGMENT -> findNavController(rootView).popBackStack(R.id.orderCompletedFragment, false)
SPEAKERS_CALL_FRAGMENT -> findNavController(rootView).popBackStack(R.id.speakersCallFragment, false)
else -> findNavController(rootView).navigate(AuthFragmentDirections.actionAuthToEventsPop())
}
}
Expand Down
11 changes: 6 additions & 5 deletions app/src/main/java/org/fossasia/openevent/general/di/Modules.kt
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,6 @@ import org.fossasia.openevent.general.paypal.Paypal
import org.fossasia.openevent.general.paypal.PaypalApi
import org.fossasia.openevent.general.search.location.GeoLocationViewModel
import org.fossasia.openevent.general.search.location.SearchLocationViewModel
import org.fossasia.openevent.general.speakercall.EditSpeakerViewModel
import org.fossasia.openevent.general.speakercall.SpeakersCallProposalViewModel
import org.fossasia.openevent.general.search.time.SearchTimeViewModel
import org.fossasia.openevent.general.search.SearchViewModel
import org.fossasia.openevent.general.search.location.LocationService
Expand Down Expand Up @@ -101,6 +99,9 @@ import org.fossasia.openevent.general.social.SocialLink
import org.fossasia.openevent.general.social.SocialLinkApi
import org.fossasia.openevent.general.social.SocialLinksService
import org.fossasia.openevent.general.speakercall.SpeakersCallViewModel
import org.fossasia.openevent.general.speakercall.SpeakersCallProposalViewModel
import org.fossasia.openevent.general.speakercall.Proposal
import org.fossasia.openevent.general.speakercall.EditSpeakerViewModel
import org.fossasia.openevent.general.speakers.Speaker
import org.fossasia.openevent.general.speakers.SpeakerApi
import org.fossasia.openevent.general.speakers.SpeakerService
Expand Down Expand Up @@ -255,8 +256,8 @@ val viewModelModule = module {
viewModel { SponsorsViewModel(get(), get()) }
viewModel { NotificationViewModel(get(), get(), get(), get()) }
viewModel { AuthViewModel(get(), get(), get()) }
viewModel { SpeakersCallViewModel(get(), get(), get(), get(), get()) }
viewModel { SpeakersCallProposalViewModel(get(), get()) }
viewModel { SpeakersCallViewModel(get(), get(), get(), get(), get(), get()) }
viewModel { SpeakersCallProposalViewModel(get(), get(), get(), get(), get()) }
viewModel { EditSpeakerViewModel(get(), get(), get(), get()) }
viewModel { FeedbackViewModel(get(), get()) }
}
Expand Down Expand Up @@ -309,7 +310,7 @@ val networkModule = module {
EventSubTopic::class.java, Feedback::class.java, Speaker::class.java, FavoriteEvent::class.java,
Session::class.java, SessionType::class.java, MicroLocation::class.java, SpeakersCall::class.java,
Sponsor::class.java, EventFAQ::class.java, Notification::class.java, Track::class.java,
DiscountCode::class.java, Settings::class.java)
DiscountCode::class.java, Settings::class.java, Proposal::class.java)

Retrofit.Builder()
.client(get())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.fossasia.openevent.general.event

import io.reactivex.Single
import org.fossasia.openevent.general.sessions.track.Track
import org.fossasia.openevent.general.speakercall.SpeakersCall
import retrofit2.http.GET
import retrofit2.http.Path
Expand Down Expand Up @@ -30,4 +31,7 @@ interface EventApi {

@GET("events")
fun eventsByQuery(@Query("filter") filter: String): Single<List<Event>>

@GET("events/{eventId}/tracks")
fun fetchTracksUnderEvent(@Path("eventId") eventId: Long): Single<List<Track>>
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import org.fossasia.openevent.general.event.types.EventType
import org.fossasia.openevent.general.event.types.EventTypesApi
import org.fossasia.openevent.general.favorite.FavoriteEvent
import org.fossasia.openevent.general.favorite.FavoriteEventApi
import org.fossasia.openevent.general.sessions.track.Track
import org.fossasia.openevent.general.speakercall.SpeakersCall
import org.fossasia.openevent.general.speakercall.SpeakersCallDao
import org.jetbrains.anko.collections.forEachWithIndex
Expand Down Expand Up @@ -167,4 +168,6 @@ class EventService(
speakersCallDao.insertSpeakerCall(it)
}
}

fun fetchTracksUnderEvent(eventId: Long): Single<List<Track>> = eventApi.fetchTracksUnderEvent(eventId)
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import com.github.jasminb.jsonapi.LongIdHandler
import com.github.jasminb.jsonapi.annotations.Id
import com.github.jasminb.jsonapi.annotations.Relationship
import com.github.jasminb.jsonapi.annotations.Type
import org.fossasia.openevent.general.event.EventId
import org.fossasia.openevent.general.sessions.microlocation.MicroLocation
import org.fossasia.openevent.general.sessions.sessiontype.SessionType
import org.fossasia.openevent.general.sessions.track.Track
Expand Down Expand Up @@ -43,11 +44,14 @@ data class Session(
val audioUrl: String? = null,
@ColumnInfo(index = true)
@Relationship("session-type", resolve = true)
var sessionType: SessionType? = null,
val sessionType: SessionType? = null,
@ColumnInfo(index = true)
@Relationship("microlocation", resolve = true)
var microlocation: MicroLocation? = null,
val microlocation: MicroLocation? = null,
@ColumnInfo(index = true)
@Relationship("track", resolve = true)
var track: Track? = null
val track: Track? = null,
@ColumnInfo(index = true)
@Relationship("event", resolve = true)
val event: EventId? = null
)
Original file line number Diff line number Diff line change
@@ -1,16 +1,35 @@
package org.fossasia.openevent.general.sessions

import io.reactivex.Single
import org.fossasia.openevent.general.speakercall.Proposal
import retrofit2.http.GET
import retrofit2.http.Path
import retrofit2.http.Query
import retrofit2.http.Body
import retrofit2.http.POST
import retrofit2.http.PATCH

interface SessionApi {

@GET("events/{eventId}/sessions?include=session-type,microlocation,track")
@GET("events/{eventId}/sessions?include=session-type,microlocation,track,event")
fun getSessionsForEvent(
@Path("eventId") eventId: Long,
@Query("sort") sort: String = "created-at",
@Query("filter") sessionName: String = "[]"
): Single<List<Session>>

@POST("sessions?include=track,session-type,event,creator,speakers")
fun createSession(@Body proposal: Proposal): Single<Session>

@PATCH("sessions/{sessionId}")
fun updateSession(@Path("sessionId") sessionId: Long, @Body proposal: Proposal): Single<Session>

@GET("speakers/{speakerId}/sessions?include=session-type,microlocation,track,event")
fun getSessionsUnderSpeaker(
@Path("speakerId") speakerId: Long,
@Query("filter") filter: String
): Single<List<Session>>

@GET("sessions/{sessionId}?include=track,session-type,event,creator,speakers")
fun getSessionById(@Path("sessionId") sessionId: Long): Single<Session>
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package org.fossasia.openevent.general.sessions

import io.reactivex.Flowable
import io.reactivex.Single
import org.fossasia.openevent.general.speakercall.Proposal

class SessionService(
private val sessionApi: SessionApi,
Expand All @@ -15,7 +15,19 @@ class SessionService(
}
}

fun fetchSession(id: Long): Flowable<Session> {
return sessionDao.getSessionById(id)
}
fun fetchSession(id: Long): Single<Session> =
sessionApi.getSessionById(id)

fun createSession(proposal: Proposal): Single<Session> =
sessionApi.createSession(proposal).doOnSuccess {
sessionDao.insertSession(it)
}

fun updateSession(sessionId: Long, proposal: Proposal): Single<Session> =
sessionApi.updateSession(sessionId, proposal).doOnSuccess {
sessionDao.insertSession(it)
}

fun getSessionsUnderSpeakerAndEvent(speakerId: Long, query: String): Single<List<Session>> =
sessionApi.getSessionsUnderSpeaker(speakerId, filter = query)
}
Loading