$numberPage = intval($_GET["page"]);
$sortType = $_GET["sort"];
$simpleKeyword = $_GET["keyword"];
$kid = $_GET["kid"];
if ($sortType == NULL || $sortType == '') {
    $sortType = 'id DESC';
}
if ($numberPage === NULL || $numberPage < 0) {
    echo "<script src='../JS/functions.js'></script><script>nextPage('set', '0')</script>";
}
//Getting all registries
if ($simpleKeyword !== NULL) {
    $defuntionRegistries = DefuntionManager::simpleSearchDefuntion($simpleKeyword, $sortType, $numberPage);
} else {
    if ($kid !== NULL) {
        $defuntionSearch = new Defuntion();
        $kcelebration = DatabaseManager::singleDateToDatabaseDate($_GET["kcelebration"]);
        $kbornp = $_GET["kbornp"];
        $kbornd = DatabaseManager::singleDateToDatabaseDate($_GET["kbornd"]);
        $knamec = $_GET["knamec"];
        $klastname1c = $_GET["klastname1c"];
        $klastname2c = $_GET["klastname2c"];
        $knamef = $_GET["knamef"];
        $kchurch = $_GET["kchurch"];
        $defuntionSearch->setId($kid);
        $defuntionSearch->setDeadDate($kcelebration);
        $posibleNames[0] = PersonManager::searchPersonsByNames($knamec, $klastname1c, $klastname2c, false);
        $defuntionSearch->setIdOwner($posibleNames);
        $posibleChurch = ChurchManager::simpleSearchChurch($kchurch, 'id', -1);
        $defuntionSearch->setIdChurch($posibleChurch);
        $defuntionRegistries = DefuntionManager::advancedSearchDefuntion($defuntionSearch, 'AND', $sortType, $numberPage);
 /**
  * Search one defuntion by one similar name
  * 
  * @author Jonathan Sandoval <*****@*****.**>
  * @param  Defuntion        $defuntion      Pseudo-defuntion with the data to search
  * @param  string         $operator     To search with 'or' or 'and'
  * @param  string         $order        The type of sort of the Defuntion
  * @param  integer        $begin        The number of page to display the registry
  * @return Array[Defuntion] $defuntions     Defuntion objects with the similar name or null
  */
 static function advancedSearchDefuntion($defuntion = null, $operator = 'AND', $order = 'id', $begin = 0)
 {
     if ($defuntion === null) {
         return null;
     }
     $tableDefuntion = DatabaseManager::getNameTable('TABLE_DEFUNTION');
     $tablePerson = DatabaseManager::getNameTable('TABLE_PERSON');
     $tableChurch = DatabaseManager::getNameTable('TABLE_CHURCH');
     $celebrationDate = $defuntion->getDeadDate();
     $queryOwner = "(";
     $posibleOwner = $defuntion->getIdOwner()[0];
     $queryChurch = "(";
     $posibleChurch = $defuntion->getIdChurch();
     if ($posibleOwner !== NULL) {
         for ($i = 0; $i < sizeof($posibleOwner) - 1; $i++) {
             $queryOwner = $queryOwner . $posibleOwner[$i]->getId() . ",";
         }
         $queryOwner = $queryOwner . $posibleOwner[sizeof($posibleOwner) - 1]->getId() . ")";
         $queryOwner = "(o.id IN " . $queryOwner . ")";
     }
     if ($posibleChurch !== NULL) {
         for ($i = 0; $i < sizeof($posibleChurch) - 1; $i++) {
             $queryChurch = $queryChurch . $posibleChurch[$i]->getId() . ",";
         }
         $queryChurch = $queryChurch . $posibleChurch[sizeof($posibleChurch) - 1]->getId() . ")";
         $queryChurch = "(c.id IN " . $queryChurch . ")";
     }
     $defuntion->getId() == 0 ? $id = '' : ($id = $defuntion->getId());
     $query = "SELECT b.* \r\n                        FROM {$tableDefuntion} AS b LEFT JOIN {$tablePerson} AS o ON b.idOwner = o.id \r\n                        JOIN {$tableChurch} AS c  ON b.idChurch = c.id\r\n                        WHERE b.id          LIKE '%{$id}%'              {$operator}\r\n                              b.deadDate    LIKE '%{$celebrationDate}%' {$operator} ";
     //Join the Query with the posibiitation query
     if ($queryOwner != '(') {
         $query = $query . $queryOwner . " " . $operator . " ";
     } else {
         $query = $query . "(o.id IN ())" . $operator . " ";
     }
     if ($queryChurch != '(') {
         $query = $query . $queryChurch . " ";
     } else {
         $query = $query . "(c.id IN ())" . " ";
     }
     if ($order == 'nameChild') {
         $query = $query . " ORDER BY o.names";
     } else {
         if ($order == 'nameChurch') {
             $query = $query . " ORDER BY c.name";
         } else {
             $query = $query . " ORDER BY b.id DESC";
         }
     }
     $query = $query . " LIMIT " . strval($begin * 10) . ", 11 ";
     $arrayDefuntions = DatabaseManager::multiFetchAssoc($query);
     $defuntions = array();
     if ($arrayDefuntions !== NULL) {
         $i = 0;
         foreach ($arrayDefuntions as $defuntion) {
             if ($i == 10) {
                 continue;
             }
             $defuntions[] = self::ArrayToDefuntion($defuntion);
             $i++;
         }
         return $defuntions;
     } else {
         return null;
     }
 }
require_once __DIR__ . "/../../../Backend/DefuntionManager.php";
require_once __DIR__ . "/../../../Backend/PersonManager.php";
if (!isset($_POST) || $_POST["idChild"] === NULL) {
    echo "KO";
    die;
}
$church = ChurchManager::getSingleChurch('name', $_POST["celebrationChurch"]);
$child = new Person();
if ($_POST["idChild"] !== '0') {
    $child = PersonManager::getSinglePerson('id', $_POST["idChild"]);
}
$child->setId($_POST["idChild"]);
$child->setNames($_POST["nameChild"]);
$child->setLastname1($_POST["lastname1Child"]);
$child->setLastname2($_POST["lastname2Child"]);
$defuntion = new Defuntion();
$defuntion->setId($_POST["idDefuntion"]);
$defuntion->setDeadDate(DatabaseManager::singleDateToDatabaseDate($_POST["celebrationDate"]));
$defuntion->setIdChurch($church->getId());
$defuntion->setIdOwner($child->getId());
//Get the defuntion Crypt
if ($_POST["idCrypt"] == '0') {
    if ($_POST["inCrypt"] == "true") {
        $myCrypt = new Crypt();
        $myCrypt->setIdNiche($church->getIdNiche());
        $myCrypt->setCol($_POST["cryptColumn"]);
        $myCrypt->setRow($_POST["cryptRow"]);
        $myCrypt->setNumber($_POST["cryptNumber"]);
        DefuntionManager::addCrypt($myCrypt);
        $singleCrypt = DefuntionManager::getSingleCrypt('col', $myCrypt->getCol(), 'row', $myCrypt->getRow(), 'idNiche', $myCrypt->getIdNiche(), 'number', $myCrypt->getNumber());
        $defuntion->setIdCrypt($singleCrypt->getId());