<?php
/*******************************************************************************
 * Copyright (c) 2007, 2015 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Nathan Gervais (Eclipse Foundation)- initial API and implementation
 *    Christopher Guindon (Eclipse Foundation)
 *******************************************************************************/
require_once(realpath(dirname(__FILE__) . "/../../system/app.class.php"));

class Contribution {

  private $friend_id = "";

  private $contribution_id = NULL;

  private $date_expired = NULL;

  private $amount = "";

  private $message = "";

  private $transaction_id = "";

  private $currency = NULL;

  private $process_id = NULL;

  private $table_prefix = '';

  public function __construct($testmode = FALSE) {
    if ($testmode === TRUE){
      $this->table_prefix = 'testing_';
    }
  }

  function getFriendID() {
    return $this->friend_id;
  }

  function getContributionID() {
    return $this->contribution_id;
  }

  function getDateExpired() {
    return $this->date_expired;
  }

  function getAmount() {
    return $this->amount;
  }

  function getMessage() {
    return $this->message;
  }

  function getTransactionID() {
    return $this->transaction_id;
  }

  function getCurrency() {
    return $this->currency;
  }

  function getProcessId() {
    return $this->process_id;
  }

  function setFriendID($_friend_id){
    $this->friend_id = $_friend_id;
  }

  function setContributionID($_contribution_id){
    $this->contribution_id = $_contribution_id;
  }

  function setDateExpired($_date_expired){
    $this->date_expired = $_date_expired;
  }

  function setAmount($_amount){
    $this->amount = $_amount;
  }

  function setMessage($_message){
    $this->message = $_message;
  }

  function setTransactionID($_transaction_id){
    $this->transaction_id = $_transaction_id;
  }

  function setCurrency($currency = NULL) {
    $this->currency = $currency;
  }

  function setProcessId($id = NULL) {
    $this->process_id = $id;
  }

  function insertContribution(){
    $result = 0;
    $App = new App();

    if ($this->selectContributionExists($this->getTransactionID())){
      $result = -1;
    }
    else {
      if ($this->date_expired == NULL) {
        $default_date_expired = "DATE_ADD(NOW(), INTERVAL 1 YEAR)";
      }
      else {
        $default_date_expired = $App->returnQuotedString($App->sqlSanitize($this->date_expired));
      }
      # insert
      $sql = "INSERT INTO " . $this->table_prefix . "friends_contributions (
          friend_id,
          date_expired,
          amount,
          message,
          transaction_id,
          currency,
          process_id
        )
          VALUES (
          " . $App->returnQuotedString($App->sqlSanitize($this->getFriendID())) . ",
          " . $default_date_expired . ",
          " . $App->returnQuotedString($App->sqlSanitize($this->getAmount())) . ",
          " . $App->returnQuotedString($App->sqlSanitize($this->getMessage())) . ",
          " . $App->returnQuotedString($App->sqlSanitize($this->getTransactionID())) . ",
          " . $App->returnQuotedString($App->sqlSanitize($this->getCurrency())) . ",
          " . $App->returnQuotedString($App->sqlSanitize($this->getProcessId())) .
          ")";
      return $App->eclipse_sql($sql);
    }
    return $result;
  }

    function updateContribution() {
    $result = 0;
    $App = new App();
    if ($this->selectContributionExists($this->getTransactionID())){
      $default_date_expired = $App->returnQuotedString($App->sqlSanitize($this->date_expired));
      $sql = "UPDATE " . $this->table_prefix . "friends_contributions SET
          friend_id = " . $App->returnQuotedString($App->sqlSanitize($this->getFriendID())) . ",
          date_expired = " . $default_date_expired . ",
          amount = " . $App->returnQuotedString($App->sqlSanitize($this->getAmount())) . ",
          message = " . $App->returnQuotedString($App->sqlSanitize($this->getMessage())) . ",
          transaction_id = " . $App->returnQuotedString($App->sqlSanitize($this->getTransactionID())) . ",
          currency = " . $App->returnQuotedString($App->sqlSanitize($this->getCurrency())) . ",
          process_id = " . $App->returnQuotedString($App->sqlSanitize($this->getProcessId())) . "
          WHERE contribution_id = " . $App->returnQuotedString($App->sqlSanitize($this->getContributionID()));
      return $App->eclipse_sql($sql);
    }
    else {
      $result = -1;
    }
    return $result;
  }

  function selectContributionExists($_transaction_id){
    $retVal = FALSE;
    if ($_transaction_id != "") {
      $App = new App();

      $sql = "SELECT /* USE MASTER */ transaction_id
          FROM " . $this->table_prefix . "friends_contributions
          WHERE transaction_id = " . $App->returnQuotedString($App->sqlSanitize($_transaction_id));

      $result = $App->eclipse_sql($sql);
      if ($result) {
        $myrow = mysql_fetch_array($result);
        if ($myrow['transaction_id'] == $_transaction_id) {
          $retVal = TRUE;
        }
      }
    }
    return $retVal;
  }

  function selectContribution($_contribution_id) {
    if ($_contribution_id != "")  {
      $App = new App();

      $sql = "SELECT /* USE MASTER */ friend_id,
              contribution_id,
              date_expired,
              amount,
              message,
              transaction_id,
              currency,
              process_id
          FROM " . $this->table_prefix . "friends_contributions
          WHERE contribution_id = " . $App->returnQuotedString($App->sqlSanitize($_contribution_id));

      $result = $App->eclipse_sql($sql);

      if ($myrow = mysql_fetch_array($result))  {
        $this->setFriendID($myrow["friend_id"]);
        $this->setContributionID($myrow["contribution_id"]);
        $this->setDateExpired($myrow["date_expired"]);
        $this->setAmount($myrow["amount"]);
        $this->setMessage($myrow["message"]);
        $this->setTransactionID($myrow["transaction_id"]);
        $this->setCurrency($myrow["currency"]);
        $this->setProcessId($myrow["process_id"]);
      }
    }
  }

  function selectContributionWithTransaction($_transaction_id)
  {
    if($_transaction_id != "")  {
      $App = new App();

      $sql = "SELECT /* USE MASTER */ friend_id,
              contribution_id,
              date_expired,
              amount,
              message,
              transaction_id,
              currency,
              process_id
          FROM " . $this->table_prefix . "friends_contributions
          WHERE transaction_id = " . $App->returnQuotedString($App->sqlSanitize($_transaction_id));

      $result = $App->eclipse_sql($sql);

      if ($myrow = mysql_fetch_array($result))  {
        $this->setFriendID($myrow["friend_id"]);
        $this->setContributionID($myrow["contribution_id"]);
        $this->setDateExpired($myrow["date_expired"]);
        $this->setAmount($myrow["amount"]);
        $this->setMessage($myrow["message"]);
        $this->setTransactionID($myrow["transaction_id"]);
        $this->setCurrency($myrow["currency"]);
        $this->setProcessId($myrow["process_id"]);
      }
    }
  }
}