Exemplo n.º 1
0
 /**
  * 
  * Toteuttaa uuden ratkaisun tallentamisen. Välittää Palaute-luokan oliolle
  * tiedot sisällöstä yms.
  *
  * @param Palaute $palauteolio
  */
 function toteuta_tallenna_uusi(&$palauteolio)
 {
     $parametriolio = $this->get_parametriolio();
     $omaid = $parametriolio->get_omaid();
     $vastaus_ratk = $parametriolio->vastaus_ratk;
     $ratkaisu_ratk = $parametriolio->ratkaisu_ratk;
     $nakyvyys = $parametriolio->nakyvyys_ratk;
     $id_teht = $parametriolio->id_teht;
     $elem_id = $parametriolio->elementti_id;
     $elemryhma_id = $parametriolio->elemryhma_id;
     /**
      * @var Tietokantaolio 
      */
     $tietokantaolio = $parametriolio->get_tietokantaolio();
     $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_TALLENNUS);
     $tallennettava = new Ratkaisu(Ratkaisu::$MUUTTUJAA_EI_MAARITELTY, $tietokantaolio);
     $tallennettava->set_arvo(time(), Ratkaisu::$sarakenimi_luomishetki_sek);
     $tallennettava->set_arvo(-1, Ratkaisu::$sarakenimi_ed_muutos_sek);
     $tallennettava->setRatkaisu($ratkaisu_ratk);
     $tallennettava->setVastaus($vastaus_ratk);
     $tallennettava->setNakyvyys($nakyvyys);
     $tallennettava->setHenkilo_id($omaid);
     $tallennettava->setTeht_id($id_teht);
     $palaute = $tallennettava->tallenna_uusi();
     if ($palaute === Ratkaisu::$OPERAATIO_ONNISTUI) {
         // Aktiivisuusmerkintä:
         $aktiivisuuspalaute = paivita_aktiivisuus($omaid, $tietokantaolio, time(), Aktiivisuus::$UUDEN_RATKAISUN_TALLENNUS);
         if (!$aktiivisuuspalaute) {
             $this->lisaa_virheilmoitus(Tekstit::$virheilm_aktiivisuuden_tallennus_eiok);
         } else {
             $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_KAIKKI_OK);
         }
         // Tarkistetaan, mistä ollaan tulossa ja minne menossa:
         $koostekontrolleri = new Koostekontrolleri($tietokantaolio, $parametriolio);
         if ($elemryhma_id != Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY) {
             $koostekontrolleri->toteuta_nayta_elementtiryhma($palauteolio);
             $palauteolio->set_muokatun_id($elem_id);
         } else {
             if ($elem_id != Elementti::$MUUTTUJAA_EI_MAARITELTY) {
                 $koostekontrolleri->toteuta_nayta($palauteolio);
                 $palauteolio->set_muokatun_id($elem_id);
             } else {
                 $this->toteuta_nayta($palauteolio);
                 $palauteolio->set_muokatun_id($tallennettava->getId());
             }
         }
         $palauteolio->set_ilmoitus(Tekstit::$ratkaisu_ilm_tallennus_uusi_ok . "<br/>" . $this->tulosta_virheilmoitukset());
     } else {
         $palauteolio->set_ilmoitus(Tekstit::$ratkaisu_virheilm_tallennus_uusi_eiok . "<br/>" . $this->tulosta_virheilmoitukset() . "<br/>" . $tallennettava->tulosta_virheilmoitukset());
         $lomake = $this->ratkaisunakymat->nayta_ratkaisulomake($parametriolio);
         $palauteolio->set_sisalto($lomake);
     }
     $palauteolio->set_valikkonaytto(false);
 }