<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Kategoriler extends CI_Controller
{
	public $viewFolder = "";

	public function __construct()
    {
        parent::__construct();
        $this->viewFolder = "kategoriler_v";

        $this->load->model("kategoriler_model");
        $this->load->model("imageupload_model");


        if (!get_active_user()){
            redirect(base_url("login"));
        }
    }

	public function index ()
    {
        $viewData = new stdClass();

        /*Tablodan verilerin getirildiği satır*/

        if ($this->input->post("searchword") == "") {
            $items = $this->kategoriler_model->get_all
            (
                array(), "rank ASC"
            );
            $viewData->aramaVar = "hayir";
        }
        else {
            $viewData->aramaVar = "evet";
            $items = $this->kategoriler_model->get_all_like(
                array(
                    "baslik"    => $this->input->post("searchword")
                ), "rank ASC"
            );
        }
        $viewData->viewFolder = $this->viewFolder;
        $viewData->viewTitle = "Kategoriler";
        $viewData->items = $items;
        //$viewData->subViewFolder = "list";
        $this->load->view("{$viewData->viewFolder}/index", $viewData);
    }



    /*EKRANA BASILAN YNİ KAYIT FORMU*/
    public function yenikayitFormu()
    {
        $viewData = new stdClass();
        $viewData->viewFolder   = $this->viewFolder;
    
        $viewData->subViewFolder= "add";
        $viewData->viewTitle    = "Kategoriler";
        $this->load->view("{$viewData->viewFolder}/{$viewData->subViewFolder}/index", $viewData);
    }

    /*yeni kayıt veritabanı ve form kontrol işlemleri yapılıyor*/
    public function formKaydet()
    {
        $this->load->library("form_validation");

        //kurallar yazılır
        $this->form_validation->set_rules("title_tr", "Başlık", "required|trim");
        $this->form_validation->set_message(
            array(
                "required" => "<strong>{field}</strong> Alanını Doldurunuz"
            )
        );
        //form validation çalıştırılı
        $validate = $this->form_validation->run();

        //başarılı ise kayıt işlemi başlar
        if ($validate) {

                $ekle = $this->kategoriler_model->add (
                    array
                    (
                        "ustid"        => $this->security->xss_clean($this->input->post("kategori")),
                        "baslik_tr"    => $this->security->xss_clean($this->input->post("title_tr")),
                        "baslik_en"    => $this->security->xss_clean($this->input->post("title_en")),
                        "baslik_ru"    => $this->security->xss_clean($this->input->post("title_ru")),
                        "baslik_ar"    => $this->security->xss_clean($this->input->post("title_ar")),
                        "baslik_fr"    => $this->security->xss_clean($this->input->post("title_fr")),
                        "baslik_dl"    => $this->security->xss_clean($this->input->post("title_dl")),
                        "baslik_es"    => $this->security->xss_clean($this->input->post("title_es")),
                        "addDate"   => date("Y-m-d H:i:s"),
                        "addTime"   => date("H:i:s"),
                        "isactive"  => 1
                    )
                );
                //$soneklenenId = $this->db->insert_id();

                if ($ekle)
                {
                    $alert = array
                    (
                        "text"  => "Kayıt İşlemi Başarı ile Yapıldı ",
                        "type"  => "success"
                    );
                }
                else {
                    $alert = array
                    (
                        "text"  => "İşlem Başarısız",
                        "type"  => "error"
                    );
                }
                //İşlemin sonucunu sessiona yazma işlemi...
                $this->session->set_flashdata("alert", $alert);
                redirect(base_url("Kategoriler"));
        }

        //formda boşluklar yada şarta uymayan bişey varsa ekrana hata basılır
        else
            {
                $viewData = new stdClass();
                $viewData->viewFolder = $this->viewFolder;
                $viewData->subViewFolder = "add";
                $viewData->form_hatasi = true;
                $viewData->viewTitle = "Kategoriler";
                $this->load->view("{$viewData->viewFolder}/{$viewData->subViewFolder}/index", $viewData);
            }

    }

    /*kayıt güncelleme formunu ekrana basan fonksiyon*/
    public function guncellemeFormu($id)
    {
        $viewData = new stdClass();
        $items = $this->kategoriler_model->get
        (
            array
            (
                "id"    => $id
            )
        );
        $viewData->viewFolder = $this->viewFolder;
        $viewData->subViewFolder = "update";
        $viewData->item = $items;
        $viewData->viewTitle = "Kategoriler";
        $this->load->view("{$viewData->viewFolder}/{$viewData->subViewFolder}/index", $viewData);
    }

    /*güncelleme islemleri*/
    public function guncellemeformKaydet($id)
    {
        $this->load->library("form_validation");

        //kurallar yazılır
        $this->form_validation->set_rules("title_tr", "Başlık", "required|trim");

        $this->form_validation->set_message(
            array(
                "required" => "<strong>{field}</strong> Alanını Doldurunuz"
            )
        );
        //form validation çalıştırılı
        $validate = $this->form_validation->run();

        //başarılı ise kayıt işlemi başlar
        if ($validate)
        {
            $guncelle = $this->kategoriler_model->update(
                array (
                    "id" => $id
                ),
                array
                (
                    "ustid"     => $this->security->xss_clean($this->input->post("kategori")),
                    "baslik_tr"    => $this->security->xss_clean($this->input->post("title_tr")),
                    "baslik_en"    => $this->security->xss_clean($this->input->post("title_en")),
                    "baslik_ru"    => $this->security->xss_clean($this->input->post("title_ru")),
                    "baslik_ar"    => $this->security->xss_clean($this->input->post("title_ar")),
                    "baslik_fr"    => $this->security->xss_clean($this->input->post("title_fr")),
                    "baslik_dl"    => $this->security->xss_clean($this->input->post("title_dl")),
                    "baslik_es"    => $this->security->xss_clean($this->input->post("title_es")),
                    "updateDate"   => date("Y-m-d H:i:s"),
                    "updateTime"   => date("H:i:s")
                )
            );
            //$soneklenenId = $this->db->insert_id();

            if ($guncelle)
            {
                $alert = array
                (
                    "text"  => "Güncelleme işlemi başarı ile gerçekleştirildi ",
                    "type"  => "success"
                );
            }
            else {
                $alert = array
                (
                    "text"  => "Güncelleme esnasında bir hata meydana geldi",
                    "type"  => "error"
                );
            }
            //İşlemin sonucunu sessiona yazma işlemi...
            $this->session->set_flashdata("alert", $alert);
            redirect(base_url("kategoriler"));
        }

        //formda boşluklar yada şarta uymayan bişey varsa ekrana hata basılır
        else
        {
            $viewData = new stdClass();
            $items = $this->kategoriler_model->get(
                array (
                    "id"        => $id
                )
            );
            $viewData->viewFolder = $this->viewFolder;
            $viewData->subViewFolder = "update";
            $viewData->form_hatasi = true;
            $viewData->item = $items;
            $viewData->viewTitle = "Kategoriler";
            $this->load->view("{$viewData->viewFolder}/{$viewData->subViewFolder}/index", $viewData);
        }
    }

    /*KAYIT SİLME İŞLEMLERİ*/
    public function veriSil ($id)
    {
        $delete = $this->kategoriler_model->delete(
            array(
                "id" => $id
            )
        );

        if ($delete)
        {
            $alert = array
            (
                "text"  => "Silme işlemi başarı ile gerçekleştirildi ",
                "type"  => "success"
            );
        }
        else
        {
            $alert = array
            (
                "text"  => "Silme işleminde bir hata meydana geldi",
                "type"  => "error"
            );
        }

        $this->session->set_flashdata("alert", $alert);
        redirect(base_url("kategoriler"));
    }

    /*AKTİF PSAİF İŞLEMLERİ*/
    public function veriAktifPasif ($id)
    {
        if ($id)
        {
            $isActive = ($this->input->post("data") == "true") ? 1 : 0;
            $this->kategoriler_model->update(
                array (
                    "id" => $id,
                ),
                array (
                    "isactive" => $isActive
                )
            );
        }
    }

    /*sıralama işlemleri*/
    public function veriSirala ()
    {
        $data = $this->input->post("data");
        parse_str($data, $order);
        $items = $order["ord"];

        foreach ($items as $rank => $id)
        {
            $this->kategoriler_model->update(
                array (
                    "id"        => $id,
                    "rank !="   =>$rank
                ),
                array (
                    "rank" => $rank
                )
            );
        }
    }


    /*foto galeri listeleme*/
    public function fotoYukleform ($id)
    {
        $viewData = new stdClass();

        $viewData->item = $this->kategoriler_model->get(
            array (
                "id" => $id
            )
        );

        $viewData->image_item = $this->imageupload_model->get_all
        (
            array
            (
               "urunid" => $id,
               "kind"   => "kategoriler"
            ), "rank ASC"
        );

        $viewData->viewFolder = $this->viewFolder;
        $viewData->subViewFolder = "image";
        $viewData->viewTitle = "Kategoriler";
        $this->load->view("{$viewData->viewFolder}/{$viewData->subViewFolder}/index", $viewData);
    }

    public function image_upload ($id)
    {
        $rasgele        = sifre_uretici(5);
        $yenidosyaismi  = date("YmdHis")."_".$rasgele;
        $file_ext       = pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION); // codeigniter dosya uzantısı alma işlemi
        $newfileName    = $yenidosyaismi.".".$file_ext; // uzantı ve isim birleştirilir

        $config["allowed_types"]    = "jpg|png|jpeg"; // kabul edilecek dosya tipleri
        $config["upload_path"]      = "uploads/$this->viewFolder/"; /*dosyanın yükleneceği dizin*/
        $config["file_name"]        = $newfileName;

        $this->load->library("upload", $config); /*upload libryisini ekliyoruz*/
        $upload = $this->upload->do_upload("file");
        if ($upload)
        {
            $uploaded_file  =   $this->upload->data("file_name"); /*upload edilen resmin ismini alıyoruz*/
            $ekleimage = $this->imageupload_model->add
            (array
                (
                    "urunid"        => $id,
                    "resim"         => $uploaded_file,
                    "isactive"      => 1,
                    "rank"          => 0,
                    "addDate"       => date("Y-m-d H:i:s"),
                    "addTime"       => date("H:i:s"),
                    "kind"          => "kategoriler"
                )
            );
        } else {
            echo "başarısız";
        }
    }

    /*resim silinmesi*/
    public function fotoSil ($id,$kayitid)
    {
        $this->subViewFolder = "kategoriler_v";
        $item = $this->imageupload_model->get
        (
            array(
                "id"    => $id
            )
        );

        if (unlink("uploads/{$this->subViewFolder}/".$item->resim))
        {
            $delete = $this->imageupload_model->delete(
                array(
                    "id" => $id
                )
            );

            if ($delete)
            {
                $alert = array
                (
                    "text"  => "Silme işlemi başarı ile gerçekleştirildi ",
                    "type"  => "success"
                );
            }
            else
            {
                $alert = array
                (
                    "text"  => "Silme işleminde bir hata meydana geldi",
                    "type"  => "error"
                );
            }

            $this->session->set_flashdata("alert", $alert);
            redirect(base_url("kategoriler/fotoYukleform/$kayitid"));
        }
    }

    /*resim aktif pasif etme*/
    public function resimAktifPasif ($id) {
        if ($id)
        {
            $isActive = ($this->input->post("data") === "true") ? 1 : 0;
            $this->imageupload_model->update(
                array (
                    "id" => $id,
                ),
                array (
                    "isactive" => $isActive
                )
            );
        }
    }

    /*yenilenen image listesini çalıştıran view*/
    public function refresh_image_list($id)
    {
        $viewData = new stdClass();

       $viewData->item = $this->kategoriler_model->get(
            array (
                "id" => $id
            )
        );

        $viewData->viewFolder = $this->viewFolder;
        $viewData->subViewFolder = "image";
        $viewData->viewTitle = "Kategoriler";
        $viewData->image_item = $this->imageupload_model->get_all
        (
            array
            (
                "urunid" => $id,
                "kind"  => "kategoriler"
            ), "rank ASC"
        );
        $render_html = $this->load->view("{$viewData->viewFolder}/{$viewData->subViewFolder}/render_elements/image_list_v", $viewData, true);
        echo $render_html;
    }

    public function isCoverSetter ($id, $parent_id) {
        if ($id && $parent_id)
        {
            /*Kapak yapılan kayıt*/
            $isCover = ($this->input->post("data") === "true") ? 1 : 0;
            $this->imageupload_model->update(
                array (
                    "id"       => $id,
                    "urunid"   => $parent_id
                ),
                array (
                    "isCover" => $isCover
                )
            );

            /*Kapak yapılmayan diğer kayıtlar*/
            $this->imageupload_model->update(
                array (
                    "id !="    => $id,
                    "urunid"   => $parent_id
                ),
                array (
                    "isCover" => 0
                )
            );

            $viewData = new stdClass();
            $viewData->viewFolder = $this->viewFolder;
            $viewData->subViewFolder = "image";

            $viewData->item = $this->kategoriler_model->get(
                array(
                    "id"    => $parent_id
                )
            );

            $viewData->image_item = $this->imageupload_model->get_all(
                array(
                   "urunid"    => $parent_id,
                   "kind"     => "kategoriler"
                ), "rank ASC"
            );

            $render_html = $this->load->view("{$viewData->viewFolder}/{$viewData->subViewFolder}/render_elements/image_list_v", $viewData, true);
            echo $render_html;
        }
    }
}
