Beispiel #1
0
 public function uploadProductPhotos($images, $id_product)
 {
     $product = $this->database->findById('product', $id_product);
     if ($product) {
         // projedu vsechny fotografie
         foreach ($images as $img) {
             // priprava pro vlozeni do db
             $image = $this->prepareImageForUpload($img);
             $values['name'] = $this->generateHash();
             $values['extension'] = $image['extension'];
             $values['id_product'] = $product->id;
             $values['added'] = $this->now;
             // upravy obrazku, zmena velikosti a dostreni
             $img_tmp = Nette\Utils\Image::fromFile($img);
             if ($img_tmp->width > 800) {
                 $img_tmp->resize(800, null);
             }
             // w = 800px, h = auto
             $img_tmp->sharpen();
             // doostreni obrazku
             // vlozeni fotografie do db
             $row = $this->database->insert('image', $values);
             // upload fotografie na server
             $img->move($this->root_img_dir . 'products/' . $product->id . '_' . $row->id . '_' . $values['name'] . '.' . $values['extension']);
         }
     }
 }
 public function nemovitostFormSucceeded($button)
 {
     $values = $button->getForm()->getValues(true);
     $id = (int) $this->getParameter('id');
     // aktualni datum a cas, potrebuji pro presmerovani a vkladani public_timu pri insertu
     $now = date('Y-m-d H:i:s');
     // pokud nemovitost prechazi ze stavu ne-public do public
     if ($values['was_public'] == false && $values['is_public'] == true) {
         $values['public_date'] = $now;
         // zmenim datum publikovani (razena bude tedy jako nove pridana)
         unset($values['was_public']);
     } else {
         unset($values['was_public']);
     }
     if ($id) {
         $this->database->findById('nemovitost', $id)->update($values);
         $this->flashMessage('Nemovitost byla upravena.');
         // pri uprave presmeruji na detail nemovitosti
         $this->redirect('DetailNemovitosti', $id);
     } else {
         $values['public_date'] = $now;
         // pri vkladani datumu k nove nemovitosti na stavu public nezalezi
         $this->database->insert('nemovitost', $values);
         $this->flashMessage('Nemovitost byla vložena.');
         // pri vkladani ne-public premeruji na ne-public vypis
         if ($values['is_public'] == 0) {
             $this->redirect('vypisNepublikovanych');
         } else {
             // pri vkladani public nemovitost presmeruji na vypis
             switch ($values['mod']) {
                 case 1:
                     // aukce
                     if ($values['datum_zacatek'] > $now) {
                         $this->redirect('vypis', 1);
                         // drazba nemovitosti nezacala
                     } elseif ($values['datum_konec'] < $now) {
                         $this->redirect('vypis', 2);
                         // drazba nemovitosti skoncila
                     } else {
                         $this->redirect('vypis', 3);
                         // drazba nemovitosti probiha
                     }
                     break;
                 case 2:
                     // prodej
                     $this->redirect('vypis', 4);
                     break;
                 case 3:
                     // prodane
                     $this->redirect('vypis', 5);
                     break;
             }
         }
     }
 }
Beispiel #3
0
 public function endOfAuction($product)
 {
     // priprava na posilani emailu
     $email_manager = new Model\Email($this->database);
     // celkova cena
     $cost = $product->cost + $product->related('bid.id_product')->sum('deposit');
     /* --- vyrozumneni pro vyherce aukce --- */
     $winners_bid = $this->database->findAll('bid')->where('id_product', $product->id)->order('id DESC')->fetch();
     // priprava alertu pro viteze aukce
     $val['id_user'] = $winners_bid->id_user;
     $val['id_type_alert'] = 1;
     $val['added'] = $this->now;
     $val['visited'] = 0;
     $val['body'] = 'Vyhráli jste aukci produktu ' . $product->name . ' (id ' . $product->id . '). Cena produktu činí ' . number_format($cost) . ' Kč. Pro další informace k předání produktu kontaktujte ' . $product->user->name . ' (tel: ' . $product->user->phone . ', email: ' . $product->user->email . ').';
     // vlozeni alertu pro viteze do db
     $row = $this->database->insert('alert', $val);
     // a poslani emailu vitezi aukce
     $email_manager->sendEmail($winners_bid->user->email, 'end_auction_winner', $product, $winners_bid, $cost, $row->type_alert->name);
     /* --- vyrozumneni pro zbyle ucastniky aukce --- */
     $bids = $this->database->findAll('bid')->where('id_product', $product->id)->group('id_user');
     foreach ($bids as $bid) {
         if ($bid->id_user != $winners_bid->id_user) {
             // vitez aukce uz informovan byl
             // uprava alertu
             $val['id_user'] = $bid->id_user;
             $val['body'] = 'Aukci produktu ' . $product->name . ' (id ' . $product->id . '), do které jste zasáhli, vyhrál jiný účastník.';
             // vlozeni do db
             $row = $this->database->insert('alert', $val);
             // a poslani emailu porazenym
             $email_manager->sendEmail($bid->user->email, 'end_auction_others', $product, $bid, $cost, $row->type_alert->name);
         }
     }
     /* --- vyrozumneni pro zadavatele aukce --- */
     $val['id_user'] = $product->id_user;
     $val['body'] = 'Aukce produktu ' . $product->name . ' (id ' . $product->id . ') je u konce. Výherce aukce je ' . $winners_bid->user->name . ' (tel: ' . $winners_bid->user->phone . ', email: ' . $winners_bid->user->email . '), který produkt koupil za ' . number_format($cost) . ' Kč.';
     // vlozeni do db
     $row = $this->database->insert('alert', $val);
     // a poslani emailu zadavateli
     $email_manager->sendEmail($product->user->email, 'end_auction_seller', $product, $winners_bid, $cost, $row->type_alert->name);
 }
 public function uploadPhotoFormSucceeded($button)
 {
     $values = $button->getForm()->getValues(true);
     $id = (int) $this->getParameter('id');
     $values['id_property'] = $id;
     $images = $values['img'];
     // ulozim si pole s obrazky do pomocne promene
     unset($values['img']);
     // unsetnu formularove pole s obrazky, abych mohl beztrestne vkladat data do db
     $citac = 0;
     foreach ($images as $img) {
         // operace pro nahrani fota k nemovitosti
         if ($img->isOk() && $img->isImage()) {
             // citac pouzivam k modifikaci nazvu, abych nenahral dve fotografie se stejnym timestampem
             // je jasne ze 100. uploadovana fotka nebude mit stejny timestamp jako prvni
             $citac++;
             if ($citac > 99) {
                 $citac = 0;
             }
             $timestamp = date('YmdHis', time());
             $typ = substr($img->getName(), -4);
             // umisteni fotografie ../id_nemovitosti/citac&timestamp.typ
             $values['name'] = $citac . $timestamp . $typ;
             // pomoci nette si obrazek zmensim a ulozim na server j*z zmenseny, z duvodu setreni mista, neni duvod ukladat vetsi rozliseni nez vyuziji
             // kdybych se rozhodl, ze chci obr v plne velikosti, smazu radky az po $img->move a odkomentuji $img->move
             $img_tmp = Nette\Utils\Image::fromFile($img);
             // pokud nahravany obrazek presahuje velikosti 800px, tak ho upravim
             if ($img_tmp->width > 800) {
                 $img_tmp->resize(800, null);
             }
             // w = 342px, h = auto
             $img_tmp->sharpen();
             // doostreni obrazku
             if (!is_dir(WWW_DIR . "/images/auction/" . $id . "/")) {
                 mkdir(WWW_DIR . "/images/auction/" . $id . "/", 0700);
                 // vytvorení složky
                 chmod(WWW_DIR . "/images/auction/" . $id . "/", 0777);
                 // nastaveni atributu
             }
             $img_tmp->save(WWW_DIR . "/images/auction/" . $id . "/" . $values['name']);
             //$img->move(WWW_DIR . "/images/auction/". $id . "/" . $values['name']);
             $this->database->insert('photo', $values);
         }
     }
     $this->flashMessage('Fotografie byly nahrány.');
     $this->redirect('Nemovitosti:detailNemovitosti', $id);
 }
 public function prvniPrihozFormSucceeded($button)
 {
     $values = $button->getForm()->getValues(true);
     $values['datum_vkladu'] = date('Y-m-d H:i:s');
     $values['vkladana_castka'] = 0;
     // prvni prihoz je nulovy, pouze se potvrdi zadana castka
     if ($values['pocet'] == $this->database->findAll('drazba')->where('id_nemovitost', $values['id_nemovitost'])->count('*')) {
         // pokud se shoduji pocty prihozu pri nacteni a tesne pred prihozenim, pak vse ok
         unset($values['pocet']);
         $this->database->insert('drazba', $values);
         $this->flashMessage('Podal(a) jste první nabídku.');
         $this->redirect('Nemovitosti:detailNemovitosti', $values['id_nemovitost']);
     } else {
         $this->flashMessage('Znovu zvažte přihození, někdo před Vámi ještě navýšil cenu.');
         $this->redirect('Aukce:prihodit', $values['id_nemovitost']);
     }
 }
Beispiel #6
0
 public function addDur($values)
 {
     $this->database->insert('duration_auction', $values);
 }
 public function uploadFileFormSucceeded($button)
 {
     $values = $button->getForm()->getValues(true);
     // nacteni potrebnych id
     $id = (int) $this->getParameter('id');
     $file_id = (int) $this->getParameter('file_id');
     // ulozeni id nemovitosti k souboru
     $values['id_property'] = $id;
     // smazu diakritiku a mezery nahradim pomlckou
     $values['hid_name'] = Strings::webalize($values['name'], NULL, FALSE);
     // pokud vytvrarim nove a mam povoleny upload, tak uploadovany soubor zpracuji
     if (!isset($file_id) || isset($file_id) && $file_id == 0) {
         // vytvorim si prom pro praci s uploadovanym souborem
         $file = $values['file'];
         unset($values['file']);
         // do db tuto promenou neukladam tak ji unsetnu
     } else {
         // pokud jsem v editovacim rezimu
         $file = $this->database->findById('file', $file_id);
         // pokud se mi nepodari najit soubor a nebo soubor nepatri nemovitosti, ze ktere se na ni snazi uzivatel dostat
         if (!$file || isset($file) && $file->id_property != $id) {
             $this->flashMessage('Požadovaný soubor není dostupný.');
             $this->redirect('File:vypis', $id);
         }
         // prejmenuji soubor ve slozce
         $oldname = WWW_DIR . "/files/auction/" . $file->id_property . "/" . $file->hid_name . "-" . $file->timestamp . "." . $file->type;
         $newname = WWW_DIR . "/files/auction/" . $file->id_property . "/" . $values['hid_name'] . "-" . $file->timestamp . "." . $file->type;
         $rename = rename($oldname, $newname);
         if ($rename == true) {
             // pokud se zmena povedla, zmenim i nazev v db
             $file->update($values);
             $this->flashMessage('Soubor byl úspěšně přejmenován na "' . $file->name . '".');
             $this->redirect('File:vypis', $id);
         } else {
             // pokud ne pouze uzivatele informuji
             $this->flashMessage('Soubor se nepodařilo přejmenovat.');
             $this->redirect('File:vypis', $id);
         }
     }
     if ($file->isOK()) {
         /* Zjisteni a ulozeni typu */
         // nactu si jmeno uploadovaneho souboru
         $tmp_file_name = $file->getName();
         // rozdelim si nazev souboru dle tecek
         $tmp_file_name_separated = explode(".", $tmp_file_name);
         $c = count($tmp_file_name_separated) - 1;
         // zjistim velikost pole (odecitam jednicku, protoze php pocita pole od 0)
         // typ je schovan na konci
         $values['type'] = $tmp_file_name_separated[$c];
         // presmerovani pokud se jedna o jiny soubor nez pdf
         if ($values['type'] != "pdf") {
             $this->flashMessage('Soubor "' . $values['name'] . '" se nepodařilo přidat. Přidávat lze pouze PDF soubory.');
             $this->redirect('Nemovitosti:detailNemovitosti', $id);
         }
         // zjistim velikost souboru
         $values['size'] = round($file->getSize() / (1024 * 1024), 2);
         // prepocet na MB
         /* Priprava pro upload */
         // ulozim si timestamp abych zarucil unikatnost odkazu
         $values['timestamp'] = date('YmdHis', time());
         // koncova destinace
         $destination = $values['hid_name'] . "-" . $values['timestamp'] . "." . $values['type'];
         /* Upload */
         $file->move(WWW_DIR . "/files/auction/" . $id . "/" . $destination);
         // presun na server
         $this->database->insert('file', $values);
         // ulozeni do db
         // nastaveni flash zpravy a presmerovani po uspesnem vykonani
         $this->flashMessage('Soubor "' . $values['name'] . '" byl úspěšně nahrán.');
         $this->redirect('Nemovitosti:detailNemovitosti', $id);
     } else {
         // nastaveni flash zpravy a presmerovani po neuspesnem vykonani
         $this->flashMessage('Soubor se nepodařilo nahrát. Zkontrolujte prosím své připojení k internetu a opakujte akci.');
         $this->redirect('Nemovitosti:detailNemovitosti', $id);
     }
 }
 public function add($values)
 {
     $this->database->insert('category', $values);
 }