12. Чистякова В.И. Проектирование информационных систем. Учебник для студентов учреждений высшего профессионального образования / В.И.
13. Чистякова, В.В.Белов - М.: Академия, 2013. - 352 с.
14. Электронные ресурсы
15. Интеллектуальный дизайнер для MySQL dbForge Studio for MySQL
16. Компания «GuardCRM»
17. Gilmore W.J. Beginnig PHP and MySQL. -3rd Edition, 2011.
18. Models and Analysis in Distributed Systems / ed. by S. Haddad, F. Kordon,
19. L. Pautet, L. Petrucci. - London-Hoboken: Wiley-ISTE, 2011. -368 p.
20. Nixon R. Learning PHP, MySQL, JavaScript, CSS & HTML5 - 3rd Edition, 2014.
21. Jacobs S. Security Management of Next Generation Telecommunications Networks and Services / S.Jacobs. - New Jersey: IEEE Press, 2014.
22. Van der Aalst W.M.P. Process-Aware Information Systems: Lessons to be Learned from Process Mining / W.M.P. van der Aalst // Transactions on Petri Nets and Other Models of Concurrency II, 2009. - P. 1-26.
ПРИЛОЖЕНИЕ
Фрагмент программного кода ИС
/**
This is the model class for table "request".
*
@property integer $id
@property integer $date
@property integer $status
@property string $description
@property integer $client_id
*/
class Request extends \yii\db\ActiveRecord
{
const STATUS_CREATED = 0; const STATUS_PROCESSED = 1; const STATUS_APPLIED = 2; const STATUS_CLOSED = 3;
/**
* @inheritdoc
*/
public static function tableName()
{
return 'request';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['date', 'status', 'client_id'], 'integer'], [['date_formated'], 'safe'],
[['description'], 'string'],
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => Yii::t('app', 'ID'),
'date' => Yii::t('app', 'Date'),
'date_formated' => Yii::t('app', 'Date'),
'status' => Yii::t('app', 'Status'),
'status_str' => Yii::t('app', 'Status'), 'description' => Yii::t('app', 'Description'), 'client_id' => Yii::t('app', 'Client'),
'sum' => Yii::t('app', 'Sum'),
];
}
public static function getStatusList() { return [
self::STATUS_CREATED => 'Создана', self::STATUS_PROCESSED => 'В обработке', self::STATUS_APPLIED => 'Принята', self::STATUS_CLOSED => 'Закрыта',
];
}
public function getStatus_str() {
$list = self::getStatusList();
return isset($list[$this->status]) ? $list[$this->status] : '';
}
public function getDate_formated() { return $this->date
? Yii::$app->formatter->asDate($this->date)
: '';
}
public function setDate_formated($value) {
$this->date = !empty($value)
? Yii::$app->formatter->asTimestamp($value)
: 0 ;
}
public function getClient()
{
return $this->hasOne(Client::className(), ['id' => 'client_id']);
}
public function getPlace()
{
return $this->hasOne(Place::className(), ['request_id' => 'id']);
}
public function toString()
{
return $this->client.' / '.$this->date_formated;
}
public function getOrders()
{
return $this->hasMany(RequestOrder::className(), ['request_id' => 'id']);
}
public function getSum()
{
$sum = 0;
foreach ($this->orders as $order) {
$sum += $order->sum;
}
return $sum;
}
}
require({ baseUrl: "./js", paths: {
jquery: "jquery-1.8.3",
'jquery-throttle': 'jquery-throttle.min'
},
'shim': { bootstrap: {
deps: ['jquery']
},
'spine/spine': { deps: ['jquery']
},
'spine/route': {
deps: ['spine/spine']
},
'spine/manager': { deps: ['spine/spine']
},
'spine/list': {
deps: ['spine/spine']
},
'jquery-throttle': { deps: ['jquery']
}
}
});
require(['jquery','bootstrap','underscore','spine/spine','spine/route','spine/manager','spi ne/list','jquery-throttle'], function(){
var App = Spine.Controller.sub({
loadPage: function(pageName, callback){
$.get('/pages/'+pageName+'.html').done(function(d){
$('#main-container').html(d);
callback();
require(['bootstrap-datepicker'], function(){
$('[data-toggle="datepicker"]').datepicker({ format: 'dd.mm.yyyy',
viewMode: 0,
weekStart: 1
});
$('[data-toggle="typeahead"]').typeahead();
});
});
},
changeNavBar: function(url){ var navBar = $('.navbar .nav');
navBar.find('li').removeClass('active');
navBar.find('li a[href="#'+url+'"]').parent().addClass('active');
},
init: function(){ this.routes({
"/": function(){ this.changeNavBar('/'); this.loadPage('request', function(){
});
},
"/createRequest": function(){ this.changeNavBar('/'); this.loadPage('createRequest', function(){
});
},
"/clients": function(){
this.changeNavBar('/clients'); this.loadPage('clients', function(){
});
},
"/activeRaces": function(){ this.changeNavBar('/races'); this.loadPage('activeRaces', function(){
});
},
"/races": function(){ this.changeNavBar('/races'); this.loadPage('races', function(){
});
},
"/createRace": function(){ this.changeNavBar('/races'); this.loadPage('createRace', function(){
});
},
"*glob": function(){
this.navigate("/");
}
})
}
});
new App(); Spine.Route.setup();
});