|
|
@@ -5,6 +5,7 @@ import { schema } from '@ioc:Adonis/Core/Validator'
|
|
|
import Decimal from 'decimal.js'
|
|
|
import Order, { OrderType } from 'App/Models/Order'
|
|
|
import Drive from '@ioc:Adonis/Core/Drive'
|
|
|
+import Membership from 'App/Models/Membership'
|
|
|
|
|
|
export default class EpisodesController {
|
|
|
private paginationService = new PaginationService(Episode)
|
|
|
@@ -34,23 +35,32 @@ export default class EpisodesController {
|
|
|
|
|
|
public async show({ params, auth }: HttpContextContract) {
|
|
|
const episode = await Episode.findOrFail(params.id)
|
|
|
+
|
|
|
if (episode.price.eq(0)) {
|
|
|
episode.purchased = true
|
|
|
} else if (auth.user) {
|
|
|
- let order = await Order.query()
|
|
|
+ const member = await Membership.query()
|
|
|
.where('userId', auth.user.id)
|
|
|
- .where('type', OrderType.Series)
|
|
|
- .where('seriesId', episode.seriesId)
|
|
|
+ .where('expireAt', '>', new Date())
|
|
|
.first()
|
|
|
- if (!order) {
|
|
|
- order = await Order.query()
|
|
|
+ if (member) {
|
|
|
+ episode.purchased = true
|
|
|
+ } else {
|
|
|
+ let order = await Order.query()
|
|
|
.where('userId', auth.user.id)
|
|
|
- .where('type', OrderType.Episode)
|
|
|
- .where('episodeId', episode.id)
|
|
|
+ .where('type', OrderType.Series)
|
|
|
+ .where('seriesId', episode.seriesId)
|
|
|
.first()
|
|
|
- }
|
|
|
- if (order) {
|
|
|
- episode.purchased = true
|
|
|
+ if (!order) {
|
|
|
+ order = await Order.query()
|
|
|
+ .where('userId', auth.user.id)
|
|
|
+ .where('type', OrderType.Episode)
|
|
|
+ .where('episodeId', episode.id)
|
|
|
+ .first()
|
|
|
+ }
|
|
|
+ if (order) {
|
|
|
+ episode.purchased = true
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
if (episode.purchased) {
|