Fix patron gift when the receiver is already patron.
Previously nothing was changed for the receiver.deepcrayonfish^2
parent
d68fb2c5e7
commit
61eb1b5533
|
@ -282,25 +282,24 @@ final class PlanApi(
|
||||||
.void >> setDbUserPlanOnCharge(user, levelUp = false)
|
.void >> setDbUserPlanOnCharge(user, levelUp = false)
|
||||||
|
|
||||||
def gift(from: User, to: User, money: Money): Funit =
|
def gift(from: User, to: User, money: Money): Funit =
|
||||||
!to.isPatron ?? {
|
for {
|
||||||
for {
|
toPatronOpt <- userPatron(to)
|
||||||
isLifetime <- pricingApi isLifetime money
|
isLifetime <- fuccess(~toPatronOpt.map(_.isLifetime)) >>| (pricingApi isLifetime money)
|
||||||
_ <- patronColl.update
|
_ <- patronColl.update
|
||||||
.one(
|
.one(
|
||||||
$id(to.id),
|
$id(to.id),
|
||||||
$set(
|
$set(
|
||||||
"lastLevelUp" -> DateTime.now,
|
"lastLevelUp" -> DateTime.now,
|
||||||
"lifetime" -> isLifetime,
|
"lifetime" -> isLifetime,
|
||||||
"free" -> Patron.Free(DateTime.now, by = from.id.some),
|
"free" -> Patron.Free(DateTime.now, by = from.id.some),
|
||||||
"expiresAt" -> (!isLifetime option DateTime.now.plusMonths(1))
|
"expiresAt" -> (!isLifetime option DateTime.now.plusMonths(1))
|
||||||
),
|
),
|
||||||
upsert = true
|
upsert = true
|
||||||
)
|
)
|
||||||
newTo = to.mapPlan(_.incMonths)
|
newTo = to.mapPlan(p => if (~toPatronOpt.map(_.canLevelUp)) p.incMonths else p.enable)
|
||||||
_ <- setDbUserPlan(newTo)
|
_ <- setDbUserPlan(newTo)
|
||||||
} yield {
|
} yield {
|
||||||
notifier.onGift(from, newTo, isLifetime)
|
notifier.onGift(from, newTo, isLifetime)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def recentGiftFrom(from: User): Fu[Option[Patron]] =
|
def recentGiftFrom(from: User): Fu[Option[Patron]] =
|
||||||
|
|
Loading…
Reference in New Issue