<?php

/**
 * home actions.
 *
 * @package    tvtl
 * @subpackage home
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 2692 2006-11-15 21:03:55Z fabien $
 */
class homeActions extends sfActions
{
  public function getVersionFromKey($key) {
    $a = explode('-', $key);
    $id = $a[0] * 1000 + $a[1];
    if ($id < 900) return '1.5';
    if ($id < 12000) return '1.6';
    return '1.8';
  }
  /**
   * Executes index action
   *
   */
  public function executeIndex()
  {
    $this->prokey = $this->getRequestParameter('prokey', '');
    $this->license = $this->getRequestParameter('license_type', 0);
    $this->username = $this->getRequestParameter('username', '');
    $this->school_id = $this->getRequestParameter('ci_school', 0);
    $this->district_id = $this->getRequestParameter('ci_district', 0);
    $this->province_id = $this->getRequestParameter('ci_province', 0);
    $this->phone = $this->getRequestParameter('phone', '');
    $this->email = $this->getRequestParameter('email', '');
    $this->headmaster = $this->getRequestParameter('headmaster', '');
    $this->taxcode = $this->getRequestParameter('taxcode', '');
    $this->upgrade = false;

    $this->tblblogshools_province = Tblblogschools::getItemWithGuide(0, 0, 'Chọn Tỉnh/Thành');

    if ($this->getRequest()->getMethod() == sfRequest::POST) {
      //check xem san pham nay co ton tai khong?
      $violetprokey = VioletprokeyPeer::retrieveByPK($this->prokey);
      //var_dump($violetprokey); exit();
      if (!$violetprokey) {
        $this->getRequest()->setError('prokey', 'Mã sản phẩm này không tồn tại');
        return sfView::SUCCESS ;
      } else {
        //check xem san pham nay da duoc active chua
        if ($violetprokey->getVpType() == 1) {
          //lay thong tin da kich hoat de show ro cho khach hang
          $c = new Criteria();
          $c->add(VioletactivePeer::VA_PROKEY, $this->prokey);
          if ($this->license == 0) $c->add(VioletactivePeer::VA_CUSTOMERID, $this->school_id);
          else $c->add(VioletactivePeer::VA_ACTIVEKEY, $this->username);
          $violetactive = VioletactivePeer::doSelectOne($c);
          if ($violetactive) {
            if ($this->license == 0) {
            $school = TblblogschoolsPeer::retrieveByPK($this->school_id);
            $this->school_name = $school->getScName();
            $active_key = explode(',',$this->createActiveKey($this->school_name));
            } else {
              $active_key = explode(',',$this->createActiveKey($this->username));
            }
            if ($violetactive->getVaVersion() != $active_key[0])
            $this->message = "Quý vị đang sử dụng Violet ".$violetactive->getVaVersion()."<br/>
                        Phiên bản hiện tại của Violet là ".$active_key[0]."<br/>
                        Hãy liên hệ với công ty Bạch Kim (04.37624015, 0912268437) để nâng cấp phiên bản mới<br/>
                        Chúc quý vị thành công";
            else
            $this->message = "Quý vị đã được cấp quyền sử dụng phần mềm VIOLET $active_key[0] từ trước
                        <br/>
                        Mã kích hoạt của quý vị là: <span style='color: blue; font-weight: bold'>".$active_key[1]."</span>
                        <br/>
                        Quý vị có thể sử dụng mã kích hoạt này để cài đặt phần mềm Violet trên mọi máy tính thuộc đơn vị: $this->school_name";
            $this->setTemplate('active');
            return sfView::SUCCESS ;
          } else {
            $this->getRequest()->setError('prokey', 'Mã này đã được cung cấp cho đơn vị hoặc cá nhân khác');
            return sfView::SUCCESS ;
          }
        } else {
          if ($this->license == 0) { // đăng ký trường
          $c = new Criteria();
          $c->add(VioletactivePeer::VA_CUSTOMERID, $this->school_id);
          $c->add(VioletactivePeer::VA_PAY, 0);
          $violetactive = VioletactivePeer::doSelectOne($c);
          //neu ma san pham chua duoc su dung ma truong nay da mua san pham roi
          if ($violetactive) {
            $version = $this->getVersionFromKey($this->prokey);
            if ($violetactive->getVaVersion() == $version) {
            $this->message =
              "Trường của quý vị đã được cấp quyền sử dụng phần mềm VIOLET $version rồi nên không cần phải đăng ký nữa<br/>
               Quý vị hãy gửi trả lại sản phẩm và giấy chứng nhận mà quý vị đang giữ cho nhà cung cấp";
            $this->setTemplate('active');
            return sfView::SUCCESS ;
            }
            $this->upgrade = true;
          }
          }

          //chuyen sang trang confirm
          $school = TblblogschoolsPeer::retrieveByPK($this->school_id);
          $district = TblblogschoolsPeer::retrieveByPK($this->district_id);
          $province = TblblogschoolsPeer::retrieveByPK($this->province_id);
          $this->school_id = $school->getScId();
          $this->school_name = $school->getScName();
          $this->district_name = $district->getScName();
          $this->province_name = $province->getScname();
          $this->setTemplate('confirm');

          //captcha
          //$g = new Captcha();
          //$this->getUser()->setAttribute('captcha', $g->generate());

          return sfView::SUCCESS;
        } //if (!$violetactive)
      }//if (!$violetprokey)
    }
  }

  public function executeLoadSchool(){
    $id = $this->getRequestParameter('id', 0);
    $type = $this->getRequestParameter('type', 0);
    if ($type == 1) {
      $this->options = Tblblogschools::getItemWithGuide(1, $id, 'Chọn Quận/Huyện');
    }
    if ($type > 1) {
      $this->options = Tblblogschools::getItemWithGuide(-1, $id, 'Chọn Đơn vị');
    }

  }

  public function executeActive() {
    $this->prokey = $this->getRequestParameter('prokey', '');
    $this->license = $this->getRequestParameter('license_type', 0);
    $this->username = $this->getRequestParameter('username', '');
    $this->school_id = $this->getRequestParameter('ci_school', 0);
    $this->school_name = $this->getRequestParameter('school_name', '');
    $this->district_name = $this->getRequestParameter('ci_district', '');
    $this->province_name = $this->getRequestParameter('ci_province', '');

    $this->phone = $this->getRequestParameter('phone', '');
    $this->email = $this->getRequestParameter('email', '');
    $this->headmaster = $this->getRequestParameter('headmaster', '');
    $this->taxcode = $this->getRequestParameter('taxcode', '');
    $this->upgrade = $this->getRequestParameter('upgrade');

/*
    include_once('lib.backend/captcha/Captcha.php');

    $opt['sessionName'] = 'vihash';
  	$opt['fontPath'] = "lib.backend/captcha/";
  	$opt['fontFile'] = "anonymous.gdf";
  	$opt['imageWidth'] = 150;
  	$opt['imageHeight'] = 50;
  	$opt['allowedChars'] = '1234567890';
  	$opt['stringLength'] = 4;
  	$opt['charWidth'] = 40;
  	$opt['blurRadius'] = 3.0;
  	$opt['secretKey'] = 'mySecRetkEy';
  	$captcha = new Captcha($opt);
  	if (!$captcha->isKeyRight($this->getRequestParameter('captcha', ''))){
      $this->setTemplate('confirm');
      $this->getRequest()->setError('captcha', 'Quý vị nhập sai dãy số trên, mời nhập lại!');
      return sfView::SUCCESS ;
  	} else {
      //luu thong tin kich hoat
*/
      if ($this->license == 0) {
      $active_key = explode(',',$this->createActiveKey($this->school_name));//split version va ma kich hoat
      $violetactive = new Violetactive();
      $violetactive->setVaProkey($this->prokey);
      $violetactive->setVaActivekey($active_key[1]);
      $violetactive->setVaCustomerid($this->school_id);
      $violetactive->setVaActivedate(date('Y-m-d'));
      $violetactive->setVaVersion($active_key[0]);
      $violetactive->setVaPay(0);
      $violetactive->save();
      } else {
        $active_key = explode(',',$this->createActiveKey($this->username));//split version va ma kich hoat
        $violetactive = new Violetactive();
        $violetactive->setVaProkey($this->prokey);
        $violetactive->setVaActivekey($this->username);
        $violetactive->setVaCustomerid($this->school_id);
        $violetactive->setVaActivedate(date('Y-m-d'));
        $violetactive->setVaVersion($active_key[0]);
        $violetactive->setVaPay(1);
        $violetactive->save();
      }

      //danh dau san pham nay da duoc ban
      $violetprokey = VioletprokeyPeer::retrieveByPK($this->prokey);
      $violetprokey->setVpType(1);
      $violetprokey->save();

      if ($this->license == 0) {
      //lu cac thong tin them vao tblblogschools
      $tblblogschool = TblblogschoolsPeer::retrieveByPK($this->school_id);
      $tblblogschool->setScPhone($this->phone);
      $tblblogschool->setScEmail($this->email);
      $tblblogschool->setScHeadmaster($this->headmaster);
      $tblblogschool->setScTaxcode($this->taxcode);
      $tblblogschool->save();
      }

      if ($this->upgrade) {
      $this->message = "Chúc mừng quý vị đã được cấp quyền sử dụng phần mềm VIOLET $active_key[0]
                        <br/>
                        Mã kích hoạt của quý vị là: <span style='color: blue; font-weight: bold'>".$active_key[1]."</span>
                        <br/>
                        Quý vị có thể sử dụng mã kích hoạt này để cài đặt phần mềm Violet trên mọi máy tính thuộc đơn vị: $this->school_name";
      } else {
      $this->message = "Chúc mừng quý vị đã nâng cấp thành công phần mềm VIOLET lên phiên bản $active_key[0]
                        <br/>
                        Mã kích hoạt mới của quý vị là: <span style='color: blue; font-weight: bold'>".$active_key[1]."</span>
                        <br/>
                        Quý vị có thể sử dụng mã kích hoạt này để cài đặt phần mềm Violet trên mọi máy tính thuộc đơn vị: $this->school_name";
      }
      return sfView::SUCCESS;
#  	}
  }

  protected function createActiveKey($school_name) {
    $school_name = myUtility::vietDecode($school_name);
    //@exec("KeyGen15.exe '$school_name' 2>&1", $keygen);
    $version = $this->getVersionFromKey($this->prokey);
    @exec("/usr/local/bin/keygen{$version} \"{$school_name}\" 2>&1", $keygen);
    return $keygen[0];
  }
}
