fixes resolve_claims & split_and_share
This commit is contained in:
@@ -100,21 +100,19 @@ pub fn fetch_claims(conn: &DbConnection) -> QueryResult<Vec<models::Claim>> {
|
|||||||
pub fn resolve_claims(conn: &DbConnection) -> QueryResult<()> {
|
pub fn resolve_claims(conn: &DbConnection) -> QueryResult<()> {
|
||||||
let data = models::claim::Claims(conn).grouped_by_item()?;
|
let data = models::claim::Claims(conn).grouped_by_item()?;
|
||||||
dbg!(&data);
|
dbg!(&data);
|
||||||
|
for (item, mut claims) in data {
|
||||||
for (item, claims) in data {
|
if claims.len() > 1 {
|
||||||
match claims.len() {
|
// TODO: better sorting mechanism :)
|
||||||
1 => {
|
claims.sort_by(|a,b| a.resolve.cmp(&b.resolve));
|
||||||
let claim = claims.get(0).unwrap();
|
}
|
||||||
let player_id = claim.player_id;
|
let winner = claims.get(0).expect("Claims should not be empty !");
|
||||||
|
let player_id = winner.player_id;
|
||||||
conn.transaction(|| {
|
conn.transaction(|| {
|
||||||
claim.resolve_claim(conn)?;
|
winner.resolve_claim(conn)?;
|
||||||
//models::item::LootManager(self.0, 0).set_owner(claim.loot_id, claim.player_id)?;
|
models::player::AsPlayer(conn, player_id)
|
||||||
models::player::AsPlayer(conn, player_id).update_debt(item.sell_value())
|
.update_debt(item.sell_value())
|
||||||
})?;
|
})?;
|
||||||
}
|
}
|
||||||
_ => (),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -125,8 +123,18 @@ pub fn split_and_share(conn: &DbConnection, amount: i32, players: Vec<i32>) -> Q
|
|||||||
) as f64;
|
) as f64;
|
||||||
conn.transaction(|| {
|
conn.transaction(|| {
|
||||||
for p in players.into_iter() {
|
for p in players.into_iter() {
|
||||||
AsPlayer(conn, p).update_wealth(share)?;
|
let player = Players(conn).find(p)?;
|
||||||
AsPlayer(conn, 0).update_wealth(-share)?;
|
// Take debt into account
|
||||||
|
match share - player.debt as f64 {
|
||||||
|
rest if rest > 0.0 => {
|
||||||
|
AsPlayer(conn, p).update_debt(-player.debt)?;
|
||||||
|
AsPlayer(conn, p).update_wealth(rest)?;
|
||||||
|
AsPlayer(conn, 0).update_wealth(-rest)?;
|
||||||
|
},
|
||||||
|
_ => {
|
||||||
|
AsPlayer(conn, p).update_debt(-share as i32)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Ok(Wealth::from_gp(share))
|
Ok(Wealth::from_gp(share))
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user