public function action_index() { //device types $data['d_type'] = Model_Device_Category::find('all', array('order_by' => array('id' => 'asc'))); //raid types $data['raids'] = Model_Raid_Type::find('all', array('order_by' => array('id' => 'asc'))); //ram types $data['rams'] = Model_Ram_Type::find('all', array('order_by' => array('id' => 'asc'))); return \Response::forge(\View::forge('windows', $data)); }
public function action_ram($id = null) { if ($_POST) { $val = \Validation::forge(); $val->add_field('eid', 'Device fieldset id', 'required|min_length[1]|max_length[20]'); $val->add_field('tmp', 'Device or template', 'required|min_length[1]|max_length[20]'); //get ram table data if ($id == 'get') { if ($val->run()) { if ($val->validated('tmp') == 'true') { $field = Model_Device_Template_Field::find($val->validated('eid')); $ram = Model_Ram::find()->where('tempfieldID', $field->id)->get_one(); if (!$ram) { $props = array('tempfieldID' => $field->id, 'ram_type' => 1, 'size' => 0, 'total' => 0, 'meta_update_time' => time(), 'meta_update_user' => $this->user); $ram = new Model_Ram($props); $ram->save(); $field->value = 'Type:none, modules:0'; $field->save(); } } else { $field = Model_Device_Fieldset::find($val->validated('eid')); $ram = Model_Ram::find()->where('fieldsetID', $field->id)->get_one(); //no raid element in database, create one.. if (!$ram) { $props = array('fieldsetID' => $field->id, 'ram_type' => 1, 'size' => 0, 'total' => 0, 'meta_update_time' => time(), 'meta_update_user' => $this->user); $ram = new Model_Ram($props); $ram->save(); $field->value = 'Type:none, modules:0'; $field->save(); } } $data['eid'] = $field->id; $data['ram'] = $ram; return \Response::forge(\View::forge('device/ram', $data)); } } //change total capacity if ($id == 'total') { $val->add_field('total', 'Ram total', 'required|min_length[1]|max_length[300]'); if ($val->run()) { if ($val->validated('tmp') == 'true') { $field = Model_Device_Template_Field::find($val->validated('eid')); $ram = Model_Ram::find()->where('tempfieldID', $field->id)->get_one(); } else { $field = Model_Device_Fieldset::find($val->validated('eid')); $ram = Model_Ram::find()->where('fieldsetID', $field->id)->get_one(); } $total = $val->validated('total'); $ram_type = 'none'; if ($ram->ram_type > 0) { $rt = Model_Ram_Type::find($ram->ram_type); $ram_type = $rt->name; } $field->value = $ram_type . ', modules:' . $ram->size . ', cap:' . $total . ' MB'; $field->save(); $ram->total = $total; $ram->save(); } $data['eid'] = $field->id; $data['ram'] = $ram; return \Response::forge(\View::forge('device/ram', $data)); } //change type if ($id == 'type') { $val->add_field('type', 'Ram new type', 'required|min_length[1]|max_length[3]'); if ($val->run()) { if ($val->validated('tmp') == 'true') { $field = Model_Device_Template_Field::find($val->validated('eid')); $ram = Model_Ram::find()->where('tempfieldID', $field->id)->get_one(); } else { $field = Model_Device_Fieldset::find($val->validated('eid')); $ram = Model_Ram::find()->where('fieldsetID', $field->id)->get_one(); } $new_type = $val->validated('type'); if ($new_type > 1) { $ram_type = Model_Ram_Type::find($new_type); $field->value = $ram_type['name'] . ', modules:' . $ram->size . ', cap:' . $ram->total . ' MB'; } else { $field->value = 'Type:none, modules:' . $ram->size . ', cap:' . $ram->total . ' MB'; } $field->save(); $ram->ram_type = $new_type; $ram->save(); } $data['eid'] = $field->id; $data['ram'] = $ram; return \Response::forge(\View::forge('device/ram', $data)); } //change size if ($id == 'size') { $val->add_field('size', 'Raid new size', 'required|min_length[1]|max_length[20]'); if ($val->run()) { if ($val->validated('tmp') == 'true') { $field = Model_Device_Template_Field::find($val->validated('eid')); $ram = Model_Ram::find()->where('tempfieldID', $field->id)->get_one(); } else { $field = Model_Device_Fieldset::find($val->validated('eid')); $ram = Model_Ram::find()->where('fieldsetID', $field->id)->get_one(); } $new_size = $val->validated('size'); $total = Model_Ram_Data::find()->where('hardware_ram', $ram->id)->count(); if ($new_size > 50) { $new_size = 50; } $ram->size = $new_size; $ram->save(); if ($new_size < $total) { $dif = $total - $new_size; } else { $dif = $new_size - $total; } if ($total > $new_size) { //delete overage fileds $ram_data = Model_Ram_Data::find()->where('hardware_ram', $ram->id)->limit($dif)->order_by('id', 'desc')->get(); foreach ($ram_data as $modul) { $modul->delete(); } } else { //add new empty fields (diference) if ($total < $new_size) { for ($i = 0; $i < $dif; $i++) { $prop = array('hardware_ram' => $ram->id, 'model' => '', 'size' => '', 'port' => '', 'meta_update_time' => time(), 'meta_update_user' => $this->user, 'serial_number' => ''); $hdata = new Model_Ram_Data($prop); $hdata->save(); } } } // update total $sum = 0; $ram_type = Model_Ram_Type::find($ram->ram_type); $ram_data = Model_Ram_Data::find()->where('hardware_ram', $ram->id)->order_by('id', 'desc')->get(); foreach ($ram_data as $dd) { $sum += $dd->size; } if ($ram->ram_type > 0) { $field->value = $ram_type['name'] . ', modules:' . $new_size . ', cap:' . $sum . ' MB'; } else { $field->value = 'Type:none, modules:' . $new_size . ', cap:' . $sum . ' MB'; } $field->save(); $data['eid'] = $field->id; $data['ram'] = $ram; return \Response::forge(\View::forge('device/ram', $data)); } } //set value of elements if ($id == 'set') { $val->add_field('type', 'number of input element', 'required|min_length[1]|max_length[5]'); $val->add_field('rid', 'data element id', 'required|min_length[1]|max_length[20]'); $val->add_field('val', 'data element id', 'required|min_length[0]|max_length[250]'); if ($val->run()) { $ram_data = Model_Ram_Data::find($val->validated('rid')); if ($ram_data) { switch ($val->validated('type')) { case 1: $ram_data->port = $val->validated('val'); break; case 2: $ram_data->size = $val->validated('val'); break; case 3: $ram_data->model = $val->validated('val'); break; case 4: $ram_data->serial_number = $val->validated('val'); break; default: echo 'nop'; break; } $ram_data->save(); } } } //add if ($id == 'new') { $val->add_field('val', 'Ram add', 'required|min_length[1]|max_length[20]'); if ($val->run()) { if ($val->validated('tmp') == 'true') { $field = Model_Device_Template_Field::find($val->validated('eid')); $ram = Model_Ram::find()->where('tempfieldID', $field->id)->get_one(); } else { $field = Model_Device_Fieldset::find($val->validated('eid')); $ram = Model_Ram::find()->where('fieldsetID', $field->id)->get_one(); } $new_size = $val->validated('val'); if ($ram->ram_type > 1) { $ram_type = Model_Ram_Type::find($ram->ram_type); $field->value = $ram_type['name'] . ', modules:' . $new_size . ', cap:' . $ram->total . ' MB'; } else { $field->value = 'Type:none, modules:' . $new_size . ', cap:' . $ram->total . ' MB'; } $field->save(); $total = Model_Ram_Data::find()->where('hardware_ram', $ram->id)->count(); if ($new_size > 50) { $new_size = 50; } $ram->size = $new_size; $ram->save(); if ($new_size < $total) { $dif = $total - $new_size; } else { $dif = $new_size - $total; } if ($total > $new_size) { //delete overage fileds $ram_data = Model_Ram_Data::find()->where('hardware_ram', $ram->id)->limit($dif)->order_by('id', 'desc')->get(); foreach ($ram_data as $modul) { $modul->delete(); } } else { //add new empty fields (diference) if ($total < $new_size) { for ($i = 0; $i < $dif; $i++) { $prop = array('hardware_ram' => $ram->id, 'model' => \Input::post('dmodel'), 'size' => \Input::post('dsize'), 'port' => \Input::post('vport'), 'meta_update_time' => time(), 'meta_update_user' => $this->user, 'serial_number' => \Input::post('dsn')); $hdata = new Model_Ram_Data($prop); $hdata->save(); } } } $data['eid'] = $field->id; $data['ram'] = $ram; return \Response::forge(\View::forge('device/ram', $data)); } } //delete element if ($id == 'delete') { $val->add_field('rid', 'data element id', 'required|min_length[1]|max_length[20]'); if ($val->run()) { $raid_data = Model_Ram_Data::find($val->validated('rid')); $raid_data->delete(); echo json_encode(array('deleted' => 1)); } } } }
private function ram_field($id, $name) { $rams = Model_Ram::find()->where('fieldsetID', $id)->get_one(); if ($rams) { $modules = $rams->rows; $this->SetFont('Verdana', '', 10); if ($rams['ram_type']) { $rt = Model_Ram_Type::find($rams['ram_type']); $this->add_line($name, $rt['name']); } $this->SetLineWidth(0.7); $this->SetDrawColor(100, 100, 100); $this->SetFont('Verdana', '', 7); $this->SetTextColor(100, 100, 100); $this->SetFillColor(248, 248, 248); $this->Cell(30, 10, 'Slot', 'B', 0, 'L', true); $this->Cell(40, 10, 'Size', 'B', 0, 'L', true); $this->Cell(100, 10, 'Model', 'B', 0, 'L', true); $this->Cell(100, 10, 'Serial', 'B', 0, 'L', true); $this->Ln(15); foreach ($modules as $mod) { if ($this->GetY() >= $this->heightlimit) { $this->_AddPage(); } $d = array('Slot' => $this->validate($mod['port']), 'Size' => $mod['size'], 'Model' => $mod['model'], 'Serial' => $mod['serial_number']); $this->add_ram($d); $this->Ln(10); } $this->Ln(10); } }