Fix patron gift when the receiver is already patron.

Previously nothing was changed for the receiver.
deepcrayonfish^2
kraktus 2021-11-17 17:43:31 +01:00
parent d68fb2c5e7
commit 61eb1b5533
1 changed files with 18 additions and 19 deletions

View File

@ -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]] =