works on resolve_claims

This commit is contained in:
2019-10-14 15:27:49 +02:00
parent 0df875d6a6
commit b2e319dc15
4 changed files with 65 additions and 42 deletions

View File

@@ -247,13 +247,7 @@ impl<'q> AsAdmin<'q> {
///
/// When a player gets an item, it's debt is increased by this item sell value
pub fn resolve_claims(self) -> ActionResult<()> {
// Fetch all claims, grouped by items.
let loot = models::item::Loot::owned_by(0).load(self.0)?;
let claims = schema::claims::table
.load::<models::Claim>(self.0)?
.grouped_by(&loot);
// For each claimed item
let data = loot.into_iter().zip(claims).collect::<Vec<_>>();
let data = models::claim::Claims(self.0).grouped_by_loot()?;
dbg!(&data);
for (loot, claims) in data {
@@ -262,18 +256,12 @@ impl<'q> AsAdmin<'q> {
let claim = claims.get(0).unwrap();
let player_id = claim.player_id;
self.0.transaction(|| {
use schema::looted::dsl::*;
diesel::update(looted.find(claim.loot_id))
.set(owner_id.eq(player_id))
loot.set_owner(claim.player_id)
.execute(self.0)?;
diesel::delete(schema::claims::table.find(claim.id))
.execute(self.0)?;
{
use schema::players::dsl::*;
diesel::update(players.find(player_id))
.set(debt.eq(debt + (loot.base_price / 2)))
.execute(self.0)
}
models::player::AsPlayer(self.0, player_id)
.update_debt(loot.sell_value())?;
models::claim::Claims(self.0).remove(player_id, claim.loot_id)?;
Ok(())
})?;
},
_ => (),