Skip to content

Commit

Permalink
Step for creating multihunter account
Browse files Browse the repository at this point in the history
- added functions for creating user data
  • Loading branch information
Spamercz committed Jan 25, 2016
1 parent e535a1f commit 3316e61
Show file tree
Hide file tree
Showing 26 changed files with 541 additions and 3,627 deletions.
14 changes: 12 additions & 2 deletions App/Config/config.neon
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ extensions:
dibi: Dibi\Bridges\Nette\DibiExtension22

parameters:

storageCapacity: 800

php:
date.timezone: Europe/Prague
Expand All @@ -19,4 +19,14 @@ session:


services:
router: App\RouterFactory::createRouter
router: App\RouterFactory::createRouter

- App\FrontModule\Model\User\UserModel
- App\FrontModule\Model\ABData\ABDataModel
- App\FrontModule\Model\FData\FDataModel
- App\FrontModule\Model\TData\TDataModel
- App\FrontModule\Model\Units\UnitsModel
- App\FrontModule\Model\User\RegisterService
- App\FrontModule\Model\VData\VDataModel(%storageCapacity%, %storageMultiplier%)
- App\FrontModule\Model\VData\VillageService
- App\FrontModule\Model\WData\WDataModel
10 changes: 10 additions & 0 deletions App/FrontModule/Model/ABData/ABDataModel.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?php

namespace App\FrontModule\Model\ABData;

use App;

class ABDataModel extends App\Model\BaseModel
{
protected $table = 'abdata';
}
62 changes: 62 additions & 0 deletions App/FrontModule/Model/FData/FDataModel.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<?php

namespace App\FrontModule\Model\FData;

use App;

class FDataModel extends App\Model\BaseModel
{
protected $table = 'fdata';


/**
* @param int $type
* @param int $vid
*/
public function addResourceFields($type, $vid)
{
$query = FALSE;
switch ($type) {
case 1:
$query = "INSERT INTO " . $this->table . " (vref, f1t, f2t, f3t, f4t, f5t, f6t, f7t, f8t, f9t, f10t, f11t, f12t, f13t, f14t, f15t, f16t, f17t, f18t, f26, f26t) values($vid, 4, 4, 1, 4, 4, 2, 3, 4, 4, 3, 3, 4, 4, 1, 4, 2, 1, 2, 1, 15)";
break;
case 2:
$query = "INSERT INTO " . $this->table . " (vref, f1t, f2t, f3t, f4t, f5t, f6t, f7t, f8t, f9t, f10t, f11t, f12t, f13t, f14t, f15t, f16t, f17t, f18t, f26, f26t) values($vid, 3, 4, 1, 3, 2, 2, 3, 4, 4, 3, 3, 4, 4, 1, 4, 2, 1, 2, 1, 15)";
break;
case 3:
$query = "INSERT INTO " . $this->table . " (vref, f1t, f2t, f3t, f4t, f5t, f6t, f7t, f8t, f9t, f10t, f11t, f12t, f13t, f14t, f15t, f16t, f17t, f18t, f26, f26t) values($vid, 1, 4, 1, 3, 2, 2, 3, 4, 4, 3, 3, 4, 4, 1, 4, 2, 1, 2, 1, 15)";
break;
case 4:
$query = "INSERT INTO " . $this->table . " (vref, f1t, f2t, f3t, f4t, f5t, f6t, f7t, f8t, f9t, f10t, f11t, f12t, f13t, f14t, f15t, f16t, f17t, f18t, f26, f26t) values($vid, 1, 4, 1, 2, 2, 2, 3, 4, 4, 3, 3, 4, 4, 1, 4, 2, 1, 2, 1, 15)";
break;
case 5:
$query = "INSERT INTO " . $this->table . " (vref, f1t, f2t, f3t, f4t, f5t, f6t, f7t, f8t, f9t, f10t, f11t, f12t, f13t, f14t, f15t, f16t, f17t, f18t, f26, f26t) values($vid, 1, 4, 1, 3, 1, 2, 3, 4, 4, 3, 3, 4, 4, 1, 4, 2, 1, 2, 1, 15)";
break;
case 6:
$query = "INSERT INTO " . $this->table . " (vref, f1t, f2t, f3t, f4t, f5t, f6t, f7t, f8t, f9t, f10t, f11t, f12t, f13t, f14t, f15t, f16t, f17t, f18t, f26, f26t) values($vid, 4, 4, 1, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 1, 15)";
break;
case 7:
$query = "INSERT INTO " . $this->table . " (vref, f1t, f2t, f3t, f4t, f5t, f6t, f7t, f8t, f9t, f10t, f11t, f12t, f13t, f14t, f15t, f16t, f17t, f18t, f26, f26t) values($vid, 1, 4, 4, 1, 2, 2, 3, 4, 4, 3, 3, 4, 4, 1, 4, 2, 1, 2, 1, 15)";
break;
case 8:
$query = "INSERT INTO " . $this->table . " (vref, f1t, f2t, f3t, f4t, f5t, f6t, f7t, f8t, f9t, f10t, f11t, f12t, f13t, f14t, f15t, f16t, f17t, f18t, f26, f26t) values($vid, 3, 4, 4, 1, 2, 2, 3, 4, 4, 3, 3, 4, 4, 1, 4, 2, 1, 2, 1, 15)";
break;
case 9:
$query = "INSERT INTO " . $this->table . " (vref, f1t, f2t, f3t, f4t, f5t, f6t, f7t, f8t, f9t, f10t, f11t, f12t, f13t, f14t, f15t, f16t, f17t, f18t, f26, f26t) values($vid, 3, 4, 4, 1, 1, 2, 3, 4, 4, 3, 3, 4, 4, 1, 4, 2, 1, 2, 1, 15)";
break;
case 10:
$query = "INSERT INTO " . $this->table . " (vref, f1t, f2t, f3t, f4t, f5t, f6t, f7t, f8t, f9t, f10t, f11t, f12t, f13t, f14t, f15t, f16t, f17t, f18t, f26, f26t) values($vid, 3, 4, 1, 2, 2, 2, 3, 4, 4, 3, 3, 4, 4, 1, 4, 2, 1, 2, 1, 15)";
break;
case 11:
$query = "INSERT INTO " . $this->table . " (vref, f1t, f2t, f3t, f4t, f5t, f6t, f7t, f8t, f9t, f10t, f11t, f12t, f13t, f14t, f15t, f16t, f17t, f18t, f26, f26t) values($vid, 3, 1, 1, 3, 1, 4, 4, 3, 3, 2, 2, 3, 1, 4, 4, 2, 4, 4, 1, 15)";
break;
case 12:
$query = "INSERT INTO " . $this->table . " (vref, f1t, f2t, f3t, f4t, f5t, f6t, f7t, f8t, f9t, f10t, f11t, f12t, f13t, f14t, f15t, f16t, f17t, f18t, f26, f26t) values($vid, 1, 4, 1, 1, 2, 2, 3, 4, 4, 3, 3, 4, 4, 1, 4, 2, 1, 2, 1, 15)";
break;
}

if ($query) {
$this->database->query($query);
}
}
}
10 changes: 10 additions & 0 deletions App/FrontModule/Model/TData/TDataModel.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?php

namespace App\FrontModule\Model\TData;

use App;

class TDataModel extends App\Model\BaseModel
{
protected $table = 'tdata';
}
10 changes: 10 additions & 0 deletions App/FrontModule/Model/Units/UnitsModel.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?php

namespace App\FrontModule\Model\Units;

use App;

class UnitsModel extends App\Model\BaseModel
{
protected $table = 'units';
}
118 changes: 118 additions & 0 deletions App/FrontModule/Model/User/RegisterService.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
<?php

namespace App\FrontModule\Model\User;

use App;
use Nette;

class RegisterService
{
/**
* @var UserModel
*/
private $userModel;
/**
* @var App\FrontModule\Model\WData\WDataModel
*/
private $WDataModel;
/**
* @var App\FrontModule\Model\FData\FDataModel
*/
private $FDataModel;
/**
* @var App\FrontModule\Model\Units\UnitsModel
*/
private $unitsModel;
/**
* @var App\FrontModule\Model\TData\TDataModel
*/
private $TDataModel;
/**
* @var App\FrontModule\Model\ABData\ABDataModel
*/
private $ABDataModel;
/**
* @var App\FrontModule\Model\VData\VDataModel
*/
private $VDataModel;
/**
* @var App\FrontModule\Model\VData\VillageService
*/
private $villageService;


public function __construct(
UserModel $userModel,
App\FrontModule\Model\WData\WDataModel $WDataModel,
App\FrontModule\Model\FData\FDataModel $FDataModel,
App\FrontModule\Model\Units\UnitsModel $unitsModel,
App\FrontModule\Model\TData\TDataModel $TDataModel,
App\FrontModule\Model\ABData\ABDataModel $ABDataModel,
App\FrontModule\Model\VData\VDataModel $VDataModel,
App\FrontModule\Model\VData\VillageService $villageService
) {
$this->userModel = $userModel;
$this->WDataModel = $WDataModel;
$this->FDataModel = $FDataModel;
$this->unitsModel = $unitsModel;
$this->TDataModel = $TDataModel;
$this->ABDataModel = $ABDataModel;
$this->VDataModel = $VDataModel;
$this->villageService = $villageService;
}


public function createMultihunter($data)
{
/** @var \stdClass $multihunter */
$this->userModel->update(UserModel::MULTIHUNTER_ID, [
'password' => Nette\Security\Passwords::hash($data->password),
]);
$multihunter = $this->userModel->get(UserModel::MULTIHUNTER_ID);

/** @var \stdClass $field */
$field = $this->WDataModel->getByCoordinates(0, 0);
if ($field->occupied != 0 || $field->oasistype != 0) {
$this->WDataModel->setFieldTaken($field->id);
$villageName = $this->villageService->getNewVillageName($multihunter);
$vid = $this->VDataModel->addVillageForUser($multihunter, $field, $villageName);
$this->FDataModel->addResourceFields($field->fieldtype, $vid);
$this->unitsModel->add([
'vref' => $vid,
]);
$this->TDataModel->add([
'vref' => $vid,
]);
$this->ABDataModel->add([
'vref' => $vid,
]);
}
}


/**
* Save registration form.
*
* @param \stdClass $data
* @return \stdClass
*/
public function registerUser($data)
{
$userId = $this->userModel->add([
'email' => $data->email,
'username' => $data->username,
'password' => Nette\Security\Passwords::hash($data->password),
]);

return $this->userModel->get($userId);
}


/**
* Handle all related to create new user.
*/
public function createUser()
{

}
}
12 changes: 12 additions & 0 deletions App/FrontModule/Model/User/UserModel.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

namespace App\FrontModule\Model\User;

use App;

class UserModel extends App\Model\BaseModel
{
protected $table = 'users';

const MULTIHUNTER_ID = 5;
}
83 changes: 83 additions & 0 deletions App/FrontModule/Model/VData/VDataModel.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
<?php

namespace App\FrontModule\Model\VData;

use App;
use Dibi;

class VDataModel extends App\Model\BaseModel
{
protected $table = 'vdata';

/** @var int */
private $storageCapacity;
/** @var int */
private $storageMultiplier;


public function __construct(
$storageCapacity,
$storageMultiplier,
Dibi\Connection $database
) {
$this->storageCapacity = $storageCapacity;
$this->storageMultiplier = $storageMultiplier;
parent::__construct($database);
}


public function getByWId()
{

}


/**
* @param int $user
* @return \Dibi\Row|FALSE
*/
public function getByUser($user)
{
return $this->database->select('*')->from($this->table)
->where('owner = %i', $user)
->fetch();
}


/**
* @param int $user
* @return int|FALSE
*/
public function countByUser($user)
{
return $this->database->select('count(wref)')->from($this->table)
->where('owner = %i', $user)
->fetchSingle();
}


/**
* @param \stdClass $user
* @param \stdClass $field
* @return bool
*/
public function addVillageForUser($user, $field, $villageName)
{
$this->database->insert($this->table, [
'wref' => $field->id,
'owner' => $user->id,
'name' => $villageName,
'capital' => $this->countByUser($user->id) ? TRUE : FALSE,
'pop' => 2,
'cp' => 1,
'wood' => 750,
'clay' => 750,
'iron' => 750,
'crop' => 750,
'maxstore' => $this->storageCapacity * $this->storageMultiplier,
'maxcrop' => $this->storageCapacity * $this->storageMultiplier,
])->execute();

return $field->id;
}
}
37 changes: 37 additions & 0 deletions App/FrontModule/Model/VData/VillageService.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?php

namespace App\FrontModule\Model\VData;

use App;

class VillageService
{
/**
* @var VDataModel
*/
private $VDataModel;


public function __construct(
VDataModel $VDataModel
) {
$this->VDataModel = $VDataModel;
}


/**
* @param \stdClass $user
* @return string
*/
public function getNewVillageName($user)
{
$total = $this->VDataModel->countByUser($user->id);
if ($total >= 1) {
$villageName = $user->username . "'s village " . ($total + 1);
} else {
$villageName = $user->username . "'s village";
}

return $villageName;
}
}
Loading

0 comments on commit 3316e61

Please sign in to comment.