Exemplo n.º 1
0
    /**
     * Endre garasjekapasitet
     */
    protected function garasje_endre_show()
    {
        ess::$b->page->add_title("Endre kapasitet");
        // hent informasjon om garasjen
        $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT ugg_time, ugg_time_next_rent, ugg_ff_id, ugg_cost_total, ugg_places\n\t\t\tFROM users_garage\n\t\t\tWHERE ugg_up_id = {$this->gta->up->id} AND ugg_b_id = {$this->gta->up->data['up_b_id']}");
        $garasje = $result->fetch();
        // har vi ingen garasje?
        if (!$garasje) {
            redirect::handle("/gta/garasje", redirect::ROOT);
        }
        // hent alle firmaene og plukk ut det korrekte
        $ff_list = $this->gta->get_ff();
        if (!isset($ff_list[$garasje['ugg_ff_id']])) {
            throw new HSException("Mangler firma for garasje.");
        }
        $ff = $ff_list[$garasje['ugg_ff_id']];
        // finn ut antall biler i garasjen
        $result = \Kofradia\DB::get()->query("SELECT COUNT(*) FROM users_gta WHERE ug_up_id = {$this->gta->up->id} AND b_id = {$this->gta->up->data['up_b_id']}");
        $ug_num = $result->fetchColumn(0);
        $limit = $this->gta->get_places_limit();
        // valgt kapasitet?
        if (isset($_POST['places'])) {
            $price_place = (int) postval("price");
            $places = (int) postval("places");
            $places_old = (int) postval("placeso");
            // bydel forandret seg
            if (postval("b_id") != $this->gta->up->data['up_b_id']) {
                ess::$b->page->add_message("Du har reist til en annen bydel siden du sist viste siden.", "error");
                redirect::handle("/gta/garasje", redirect::ROOT);
            } elseif ($ff['price'] != $price_place && $places > $garasje['ugg_places']) {
                ess::$b->page->add_message("Utleieprisen for firmaet har forandret seg.", "error");
            } elseif ($places_old != $garasje['ugg_places']) {
                ess::$b->page->add_message("Kapasiteten i garasjen har endret.", "error");
            } elseif ($places == $garasje['ugg_places']) {
                ess::$b->page->add_message("Du må fylle inn en annen kapasitet enn hva den er i dag.", "error");
            } elseif ($places < 1 || $places > $limit) {
                ess::$b->page->add_message("Ugyldig antall for antall plasser du ønsker å leie.", "error");
            } elseif ($places < $ug_num) {
                ess::$b->page->add_message("Du kan ikke sette kapasiteten lavere enn antall biler som er i garasjen. Det er for øyeblikket " . fwords("%d bil", "%d biler", $ug_num) . " i garasjen.", "error");
            } else {
                $change = $places - $garasje['ugg_places'];
                // beregn penger
                if ($change > 0) {
                    $days_left = max(1, ceil(($garasje['ugg_time_next_rent'] - time()) / 86400));
                    $price = $change * $ff['price'] * $days_left / 7;
                }
                // bekreftet?
                if (isset($_POST['confirm'])) {
                    // senkes?
                    if ($change < 0) {
                        // oppdater
                        $a = \Kofradia\DB::get()->exec("UPDATE users_garage SET ugg_places = {$places} WHERE ugg_up_id = {$this->gta->up->id} AND ugg_b_id = {$this->gta->up->data['up_b_id']} AND ugg_places = {$garasje['ugg_places']}");
                        if ($a > 0) {
                            ess::$b->page->add_message("Du nedjusterte kapasiteten i garasjen fra " . $garasje['ugg_places'] . " plasser til " . fwords("%d plass", "%d plasser", $places) . ".");
                            redirect::handle("/gta/garasje", redirect::ROOT);
                        }
                    } else {
                        // forsøk å trekk fra pengene
                        $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash - {$price} WHERE up_id = {$this->gta->up->id} AND up_cash >= {$price}");
                        if ($a == 0) {
                            ess::$b->page->add_message("Du har ikke råd til å leie så mange plasser hos dette firmaet.", "error");
                        } else {
                            // oppdater antall plasser
                            $a = \Kofradia\DB::get()->exec("UPDATE users_garage SET ugg_places = {$places}, ugg_cost_total = ugg_cost_total + {$price} WHERE ugg_up_id = {$this->gta->up->id} AND ugg_b_id = {$this->gta->up->data['up_b_id']} AND ugg_places = {$garasje['ugg_places']}");
                            if ($a == 0) {
                                // kunne ikke oppdatere garasje; gi tilbake pengene
                                \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash + {$price} WHERE up_id = {$this->gta->up->id}");
                            } else {
                                // gi pengene til firmaet
                                ff::bank_static(ff::BANK_TJENT, round($price * ff::GTA_PERCENT), $ff['ff_id']);
                                ess::$b->page->add_message('Du oppjusterte kapasiteten i garasjen med ' . fwords("%d plass", "%d plasser", $change) . ' til ' . $places . ' plasser for ' . game::format_cash($price) . '.');
                                redirect::handle("/gta/garasje", redirect::ROOT);
                            }
                        }
                    }
                }
                echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">Endre kapasitet for garasje på ' . htmlspecialchars($this->gta->up->bydel['name']) . '<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">
		<dl class="dd_right">
			<dt>Utleiefirma</dt>
			<dd><a href="&rpath;/ff/?ff_id=' . $ff['ff_id'] . '">' . htmlspecialchars($ff['ff_name']) . '</a></dd>
			<dt>Leiepris per plass</dt>
			<dd>' . game::format_cash($ff['price']) . '</dd>
			<dt>Neste betalingsfrist</dt>
			<dd>' . ess::$b->date->get($garasje['ugg_time_next_rent'])->format() . '</dd>
		</dl>
		<form action="" method="post">
			<input type="hidden" name="price" value="' . $ff['price'] . '" />
			<input type="hidden" name="placeso" value="' . $garasje['ugg_places'] . '" />
			<input type="hidden" name="places" value="' . $places . '" />
			<input type="hidden" name="b_id" value="' . $this->gta->up->data['up_b_id'] . '" />
			<dl class="dd_right">
				<dt>Endring i kapasitet</dt>
				<dd>Fra ' . game::format_num($garasje['ugg_places']) . ' til ' . game::format_num($places) . '</dd>' . ($change > 0 ? '
				<dt>Kostnad for endring</dt>
				<dd>' . game::format_cash($price) . '</dd>' : '') . '
			</dl>
			<p class="c">' . show_sbutton("Utfør endringer", 'name="confirm"') . ' <a href="&rpath;/gta/garasje/endre">Tilbake</a></p>
		</form>
	</div>
</div>';
                ess::$b->page->load();
            }
        }
        echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">Endre kapasitet for garasje på ' . htmlspecialchars($this->gta->up->bydel['name']) . '<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">
		<p class="c"><a href="&rpath;/gta/garasje/detaljer">Tilbake</a></p>
		<dl class="dd_right">
			<dt>Utleiefirma</dt>
			<dd><a href="&rpath;/ff/?ff_id=' . $ff['ff_id'] . '">' . htmlspecialchars($ff['ff_name']) . '</a></dd>
			<dt>Leiepris per plass</dt>
			<dd>' . game::format_cash($ff['price']) . '</dd>
			<dt>Neste betalingsfrist</dt>
			<dd>' . ess::$b->date->get($garasje['ugg_time_next_rent'])->format() . '</dd>
		</dl>
		<form action="" method="post">
			<input type="hidden" name="price" value="' . $ff['price'] . '" />
			<input type="hidden" name="placeso" value="' . $garasje['ugg_places'] . '" />
			<input type="hidden" name="b_id" value="' . $this->gta->up->data['up_b_id'] . '" />
			<dl class="dd_right">
				<dt>Nåværende kapasitet</dt>
				<dd>' . game::format_num($garasje['ugg_places']) . '</dd>
				<dt>Maksimal kapasitet</dt>
				<dd>' . game::format_num($limit) . '</dd>
				<dt>Ønsket kapasitet</dt>
				<dd><input type="text" class="styled w40" name="places" id="gta_places" value="' . game::format_num(intval(postval("places", $garasje['ugg_places']))) . '" /></dd>
			</dl>
			<p class="c">' . show_sbutton("Fortsett") . '</p>
		</form>
		<p class="c">Husk at det kan hende det lønner seg å bytte til et <a href="&rpath;/gta/garasje/detaljer">annet firma</a>.</p>
	</div>
</div>';
    }