Skip to content

Commit

Permalink
fifth IVP handler
Browse files Browse the repository at this point in the history
  • Loading branch information
tedch committed Jun 6, 2011
1 parent ff6972b commit c6a2aac
Show file tree
Hide file tree
Showing 4 changed files with 222 additions and 11 deletions.
28 changes: 21 additions & 7 deletions application/controllers/ivp.php
Expand Up @@ -7,6 +7,14 @@ function __construct() {
$this->load->library('tank_auth');
}

function empty_or_numeric($str) {
if (!empty($str) && !is_numeric($str)) {
$this->form_validation->set_message('empty_or_numeric', 'Fältet %s får bara innehålla siffror.');
return FALSE;
}
return TRUE;
}

function edit($token = -1, $date = -1) {
//
// Vägar in hit:
Expand All @@ -30,15 +38,21 @@ function edit($token = -1, $date = -1) {
die("Failed searching for future IVP");
}
} else if ($submit = $this->input->post('submit')) { // från submit
//echo '<pre>'; var_dump($this->input->post()); echo '</pre>'; die();
$this->load->library('form_validation');
$this->form_validation->set_rules('occasion', 'Besökstillfälle', 'numeric');
$this->form_validation->set_rules('dialogue', 'FaR-samtal', 'numeric');
$this->form_validation->set_rules('iv_minutes', 'Tidsåtgång FaR-samtal', 'numeric');
$this->form_validation->set_rules('professions[nurse]', 'Tidsåtgång sjuksköterska', 'numeric');
$this->form_validation->set_rules('professions[doctor]', 'Tidsåtgång läkare', 'numeric');
$this->form_validation->set_rules('professions[physiotherapist]', 'Tidsåtgång sjukgymnast', 'numeric');
$this->form_validation->set_rules('professions[psycologist]', 'Tidsåtgång psykolog', 'numeric');
$this->form_validation->set_rules('professions[occupationaltherapist]', 'Tidsåtgång arbetsterapeut', 'numeric');
$this->form_validation->set_rules('professions[nurse]', 'Tidsåtgång sjuksköterska', 'callback_empty_or_numeric');
$this->form_validation->set_rules('professions[doctor]', 'Tidsåtgång läkare', 'callback_empty_or_numeric');
$this->form_validation->set_rules('professions[physiotherapist]', 'Tidsåtgång sjukgymnast', 'callback_empty_or_numeric');
$this->form_validation->set_rules('professions[psycologist]', 'Tidsåtgång psykolog', 'callback_empty_or_numeric');
$this->form_validation->set_rules('professions[occupationaltherapist]', 'Tidsåtgång arbetsterapeut', 'callback_empty_or_numeric');

$this->form_validation->set_error_delimiters("<div class='error'>", "</div>");

$this->form_validation->set_message('numeric', 'Fältet %s får bara innehålla siffror.');
$this->form_validation->set_message('required', '%s måste anges.');

if ($this->form_validation->run() == FALSE) {
$this->load->model('IvpModel');
Expand All @@ -56,8 +70,8 @@ function edit($token = -1, $date = -1) {
//echo "<pre>"; var_dump($this->input->post()); echo "</pre>"; die();
$this->IvpModel->save();
} else {
echo "<pre>"; var_dump($old_ivp); echo "</pre>\n";
echo "<pre>"; var_dump($this->input->post()); echo "</pre>\n"; die();
//echo "<pre>"; var_dump($old_ivp); echo "</pre>\n";
//echo "<pre>"; var_dump($this->input->post()); echo "</pre>\n"; die();
$this->IvpModel->update($old_ivp);
}
redirect('/');
Expand Down
179 changes: 178 additions & 1 deletion application/models/ivpmodel.php
Expand Up @@ -159,7 +159,7 @@ function save() {
$ivps_professions = array(
'ivp' => $ivpid,
'profession' => $p['id'],
'minutes' => ($minutes !== FALSE) ? $minutes : 0);
'minutes' => ($minutes !== FALSE && !empty($minutes)) ? $minutes : 0);

$this->db->insert('ivps_professions', $ivps_professions);
}
Expand All @@ -185,6 +185,183 @@ function save() {
}

function update($old_ivp) {
//echo '<pre>'; var_dump($old_ivp); echo '</pre>'; die();

$ivpid = $old_ivp['id'];
$changed = FALSE;

$consultation = '';
if ($cstr = $this->input->post('consultation')) { // "visit" eller "phone"
$cid = $this->db
->select('id')
->from('consultations')
->where('name', $cstr)
->limit(1)
->get();
if ($cid->num_rows() > 0) {
$row = $cid->row_array();
$consultation = $row['id'];
}
}

$changes = array();

$local_attribs = array('consultation', 'occasion', 'dialogue',
'measure', 'iv_minutes', 'own', 'group', 'misc');

foreach ($local_attribs as $la) {
if ($new = $this->input->post($la)) {
if (isset($old_ivp[$la]) && $old_ivp[$la] === $new) {
continue;
} else {
$changes[$la] = $new;
}
} else {
if (isset($old_ivp[$la])) {
$changes[$la] = NULL;
}
}
}
//echo '<pre>'; var_dump($changes); echo '</pre>'; die();

if (!empty($changes)) {
$this->db->where('id', $ivpid);
$this->db->update('ivps', $changes);
$changed = TRUE;
}

//echo '<pre>'; var_dump($this->input->post('professions')); echo '</pre>';
// PROFESSIONS
$professions = array();
$q_professions = $this->db
->select('id')
->select('name')
->from('professions')
->order_by('id', 'asc')
->get();
foreach ($q_professions->result_array() as $p) {
$professions[$p['id']] = $p['name'];
}
$old_p = array();
foreach ($old_ivp['professions'] as $pname => $p) {
$old_p[$pname] = $p;
}
//echo '<pre>professions = '; var_dump($professions); echo '</pre>';
//echo '<pre>old_p = '; var_dump($old_p); echo '</pre>';
if ($posted_professions = $this->input->post('professions')) { // minst en angiven
//echo "<pre>posted_professions = "; var_dump($posted_professions); echo "</pre>";
$upd = array();
$ins = array();
foreach ($professions as $pid => $p) {
if (!isset($posted_professions[$p])) continue;
/* else */
$posted_value = $posted_professions[$p];
if (empty($posted_value)) $posted_value = 0;
if (isset($old_p[$p])) {
if ($old_p[$p] !== $posted_value) {
$upd[] = array(
'ivp' => $ivpid,
'profession' => $pid,
'minutes' => $posted_value);
}
} else {
$ins[] = array(
'ivp' => $ivpid,
'profession' => $pid,
'minutes' => $posted_value);
}
}
//echo '<pre>$upd ='; var_dump($upd); echo '</pre>';
//echo '<pre>$ins ='; var_dump($ins); echo '</pre>';
foreach ($ins as $i) {
$this->db->insert('ivps_professions', $i);
}
foreach ($upd as $u) {
$this->db
->where('ivp', $u['ivp'])
->where('profession', $u['profession'])
->update('ivps_professions', array('minutes' => $u['minutes']));
}
}

// MEASURES
$old_measures = array();
$q_om = $this->db
->select('ivp')
->select('measures.name as name')
->from('ivps_measures')
->join('measures', 'ivps_measures.measure = measures.id', 'inner')
->where('ivp', $ivpid)
->get();
foreach ($q_om->result_array() as $om) {
$old_measures[$om['name']] = 1;
}

$measures = array();
$q_measures = $this->db
->select('id as mid')
->select('name')
->from('measures')
->order_by('mid', 'asc')
->get();
foreach ($q_measures->result_array() as $m) {
//echo "<pre>m = "; var_dump($m); echo "</pre>";
$measures[$m['name']] = array(
'mid' => $m['mid'],
'ivp' => (isset($old_measures[$m['name']])) ? $ivpid : NULL);
}
//echo "<pre>measures = "; var_dump($measures); echo "</pre>";
if ($posted_measures = $this->input->post('measures')) {
$ipm = array(); // inverted posted measures
foreach ($posted_measures as $pm) {
$ipm[$pm] = 1;
}
//echo "<pre>ipm = "; var_dump($ipm); echo "</pre>";
$ins = array();
$del = array();
foreach ($measures as $name => $m) {
if (isset($ipm[$name])) {
if (!isset($m['ivp'])) {
$ins[] = array(
'ivp' => $ivpid,
'measure' => $m['mid']);
}
} else {
if (isset($m['ivp'])) {
$del[] = array(
'ivp' => $ivpid,
'measure' => $m['mid']);
}
}
}
//echo "<pre>ins = "; var_dump($ins); echo "</pre>";
//echo "<pre>del = "; var_dump($del); echo "</pre>"; die();

foreach ($ins as $i) {
$this->db->insert('ivps_measures', $i);
$changed = TRUE;
}

foreach ($del as $d) {
$this->db
->where('ivp', $ivpid)
->where('measure', $d['measure'])
->delete('ivps_measures');
$changed = TRUE;
}
} else {
$this->db
->where('ivp', $ivpid)
->truncate('ivps_measures');
$changed = TRUE;
}

if ($changed) {
$edtr = array(
'user' => $this->tank_auth->get_user_id(),
'ivp' => $ivpid);
$this->db->insert('ivp_editors', $edtr);
}
}
}

7 changes: 4 additions & 3 deletions application/views/ivpform.php
Expand Up @@ -156,9 +156,10 @@
</table>

<h2>Yrkeskategori</h2>
<p>Utelämnat värde är likvärdigt med 0. Om två personer av samma yrkeskategori
(eller fler) är verksamma under samma dag får en person (eller fler) addera
till föregående angivelse.</p>
<!--div class='info'><p>Alla fem fälten måste fyllas i, eventuellt med en nolla. Det
är en bugg, som kommer att rätas till så snart som möjligt. Utelämnat värde
ska såklart snarare vara likvärdigt med 0.</p></div-->
<p>Utelämnat värde är likvärdigt med 0.</p>
<table>
<?php
foreach ($f_professions as $p) {
Expand Down
19 changes: 19 additions & 0 deletions htdocs/cpf.css
Expand Up @@ -18,6 +18,25 @@ div#topright {
padding-left: 650px;
}

div.error {
font-family: Courier;
font-size: small;
font-weight: bold;
margin-right: 50%;
border: 1pt solid red;
padding-left: 1ex;
padding-right: 1ex;
color: red;
}

div.info {
font-family: Courier;
font-size: small;
font-weight: bold;
margin-right: 50%;
color: blue;
}

tt {
font-family: Courier;
font-size: 108%;
Expand Down

0 comments on commit c6a2aac

Please sign in to comment.