You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
information-system/webht/controllers/demandform.php

168 lines
6.1 KiB
PHP

<?php
if (!defined('BASEPATH')) {
exit('No direct script access allowed');
}
class Demandform extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->model('Demandform_model');
}
/*!
* @author LYT <lyt@hainatravel.com>
* @date 2018-01-23
* @param [type] $coli_sn 订单主表的COLI_SN
* @param integer $form_id 默认值2是0.1版本固定的
*/
public function index($coli_sn = null, $form_id = 2)
{
header("Cache-Control: no-store");
// 已填则返回成功
$is_replied = $this->Demandform_model->get_reply($coli_sn);
$form_id = intval(trim($form_id));
$_raw_data = $this->Demandform_model->get_form_detail($form_id);
$part = array();
foreach ($_raw_data->formdetail as $key => $fd) {
$tmp_a = array();
$tmp_r = array();
foreach ($_raw_data->answer as $ka => $a) {
if ($fd->FD_id === $a->A_FD_id) {
$tmp_a[] = $a;
}
}
if ( ! empty($is_replied)) {
foreach ($is_replied as $kr => $re) {
if ($re->FD_id === $fd->FD_id) {
$tmp_r[] = $re->CRD_content;
}
}
}
$fd->reply = $tmp_r;
$fd->answer = (object) $tmp_a;
// part set
$part["part1"]["title"] = "PART 1 -- Travel Preference";
$part["part2"]["title"] = "PART 2";
if (intval(trim($fd->FD_section)) === 1) {
$part["part1"]["data"][] = $fd;
}
if (intval(trim($fd->FD_section)) === 2) {
$part["part2"]["data"][] = $fd;
}
}
$_raw_data->part = $part;
unset($_raw_data->formdetail);
unset($_raw_data->answer);
$_raw_data->coli = $coli_sn;
if ( ! empty($is_replied)) {
$this->load->view('demandform/thanks', $_raw_data);
return;
}
$this->load->view('demandform/index', $_raw_data);
return;
}
public function form_save()
{
$all_post = $this->input->post();
$ret["code"] = 1;
$ret["msg"] = "";
// 已填则返回成功 -- todo
$check_input = array();
foreach ($all_post["q"] as $key => $value) {
if ($value["required"] == 1 && empty($value["answer"])) {
$ret["code"] = 0;
$ret["msg"][] = $key;
}
}
if ($ret["code"] == 0) {
return $this->output->set_content_type('text/plain')->set_output(json_encode($ret));
}
// CD_CustomerReply
$this->Demandform_model->CR_COLI_sn = trim($this->input->post("coli_sn"));
$this->Demandform_model->CR_F_id = trim($this->input->post("fid"));
$d = $a = $c = "";
foreach ($all_post["q"] as $key => $value) {
$split_answer = null;
$class_max = 0;
if (trim($value["ismain"]) != 1) {
continue;
}
$class_max = (count($value["answer"])-1);
$split_answer = explode("=_", $value["answer"][$class_max]);
if (trim($value["qclass"]) === 'D' && ! empty($split_answer)) {
$d = (isset($split_answer) ? $split_answer[1] : "?");
}
if (trim($value["qclass"]) === 'A' && ! empty($split_answer)) {
$a = (isset($split_answer) ? $split_answer[1] : "?");
}
if (trim($value["qclass"]) === 'C' && ! empty($split_answer)) {
$c = (isset($split_answer) ? $split_answer[1] : "?");
}
}
$this->Demandform_model->CR_result = $d . $a . $c;
// CD_CustomerReplyDetail
$this->Demandform_model->CRD_CR_id = $this->Demandform_model->reply_save();
$reply_detail = array();
foreach ($all_post["q"] as $key => $value) {
if (empty($value["atext"]) && empty($value["answer"])) {
continue;
}
$this->Demandform_model->CRD_FD_id = $value["fdid"];
$this->Demandform_model->CRD_result = null;
$this->Demandform_model->CRD_Answer = null;
$this->Demandform_model->CRD_content = null;
if (isset($value["answer"])) {
foreach ($value["answer"] as $ka => $va) {
$split_answer = null;
$split_answer = explode("=_", trim($value["answer"][$ka]));
$this->Demandform_model->CRD_Answer = $split_answer[0];
$this->Demandform_model->CRD_content = (!empty($split_answer) ? ($split_answer[2]) : "");
if ( ! empty($value["qclass"]) && ! empty($split_answer)) {
$this->Demandform_model->CRD_result = (!empty($split_answer) ? $split_answer[1] : "?");
}
// 这里是 选择题others选项的可填入项
$this->Demandform_model->CRD_content .= (isset($value["atext"]) ? $value["atext"] : "");
$this->Demandform_model->replydetail_save();
}
} else {
// 这里是填空题的输入
$this->Demandform_model->CRD_content = $value["atext"];
$this->Demandform_model->replydetail_save();
}
}
return $this->output->set_content_type('text/plain')->set_output(json_encode($ret));
}
public function view_reply($coli)
{
$reply = $this->Demandform_model->get_reply($coli);
$reply_arr = array();
$reply_fd_arr = array();
foreach ($reply as $key => $r) {
$class_key = trim($r->FD_class) ? trim($r->FD_class) : "normal";
$reply_arr["CR_result"] = $r->CR_result;
$reply_arr[$class_key]["q" . $r->FD_id][] = $r;
}
$this->load->view('demandform/reply', $reply_arr);
}
public function converet_answer($answer)
{
$ret = ord($answer)-64;
$ret = ($ret > 3) ? 3 : $ret;
return $ret;
}
}