public function actionIndex()
 {
     $TypeTicket = TypeTicket::find()->all();
     $model = new PriceTicket();
     $model2 = new PriceTicket2();
     $model3 = new PriceTicket3();
     $model_programms = new PriceProgramms();
     $dt = Yii::$app->getRequest()->post('PriceTicket');
     $dt2 = Yii::$app->getRequest()->post('PriceTicket2');
     $dt3 = Yii::$app->getRequest()->post('PriceTicket3');
     $dt_dop_price = Yii::$app->getRequest()->post("DopPrice");
     if ($dt["price"]) {
         foreach ($dt["price"] as $type_day => $value) {
             foreach ($value as $type_ticket => $val) {
                 foreach ($val as $hours => $price) {
                     $res = PriceTicket::find()->where("type_day={$type_day} AND type_ticket={$type_ticket} AND hours={$hours}")->all();
                     if ($res) {
                         $id = $res[0]->id;
                         $record = PriceTicket::findOne($id);
                         $record->price = $price;
                         $record->update();
                     } else {
                         $record = new PriceTicket();
                         $record->type_day = $type_day;
                         $record->type_ticket = $type_ticket;
                         $record->hours = $hours;
                         $record->price = $price;
                         $record->insert();
                     }
                 }
             }
         }
     }
     if ($dt2["price"]) {
         foreach ($dt2["price"] as $type_day => $value) {
             foreach ($value as $type_ticket => $val) {
                 foreach ($val as $hours => $price) {
                     $res = PriceTicket2::find()->where("type_day={$type_day} AND type_ticket={$type_ticket} AND hours={$hours}")->all();
                     if ($res) {
                         $id = $res[0]->id;
                         $record = PriceTicket2::findOne($id);
                         $record->price = $price;
                         $record->update();
                     } else {
                         $record = new PriceTicket2();
                         $record->type_day = $type_day;
                         $record->type_ticket = $type_ticket;
                         $record->hours = $hours;
                         $record->price = $price;
                         $record->insert();
                     }
                 }
             }
         }
     }
     if ($dt3["price"]) {
         foreach ($dt3["price"] as $type_day => $value) {
             foreach ($value as $type_ticket => $val) {
                 foreach ($val as $hours => $price) {
                     $res = PriceTicket3::find()->where("type_day={$type_day} AND type_ticket={$type_ticket} AND hours={$hours}")->all();
                     if ($res) {
                         $id = $res[0]->id;
                         $record = PriceTicket3::findOne($id);
                         $record->price = $price;
                         $record->update();
                     } else {
                         $record = new PriceTicket3();
                         $record->type_day = $type_day;
                         $record->type_ticket = $type_ticket;
                         $record->hours = $hours;
                         $record->price = $price;
                         $record->insert();
                     }
                 }
             }
         }
     }
     $dt_programms = Yii::$app->getRequest()->post('PriceProgramms');
     if ($dt_programms["programms"]) {
         foreach ($dt_programms["programms"] as $id_programm => $programm) {
             foreach ($programm as $id_type_day => $price) {
                 $res = PriceProgramms::findOne(["id_programm" => $id_programm, "id_time" => $id_type_day]);
                 if ($res) {
                     $res->price = $price;
                     $res->save();
                 } else {
                     $res = new PriceProgramms();
                     $res->id_programm = $id_programm;
                     $res->id_time = $id_type_day;
                     $res->price = $price;
                     $res->save();
                 }
             }
         }
     }
     $data = PriceTicket::find()->all();
     $data2 = PriceTicket2::find()->all();
     $data3 = PriceTicket3::find()->all();
     foreach ($data as $key => $val) {
         $dt_val[$val["type_day"]][$val["type_ticket"]][$val["hours"]] = $val["price"];
     }
     foreach ($data2 as $key => $val) {
         $dt_val2[$val["type_day"]][$val["type_ticket"]][$val["hours"]] = $val["price"];
     }
     foreach ($data3 as $key => $val) {
         $dt_val3[$val["type_day"]][$val["type_ticket"]][$val["hours"]] = $val["price"];
     }
     $TypeHours = TypeHours::find()->all();
     foreach ($TypeHours as $val) {
         $dt_type_hours[$val->id] = $val->value;
     }
     $programms = Programms::find()->all();
     $programms_type_day = TypeDayProgramms::find()->all();
     $data_programms = PriceProgramms::find()->all();
     $dt_programms_val = "";
     foreach ($data_programms as $val) {
         $dt_programms_val[$val["id_programm"]][$val["id_time"]] = $val["price"];
     }
     $model_dop_price = new DopPrice();
     if (count($dt_dop_price) > 0) {
         foreach ($dt_dop_price as $key => $value) {
             $res = DopPrice::find()->where(["name" => $key])->all();
             $res[0]->price = $value;
             $res[0]->update();
         }
     }
     $DopPrice = DopPrice::find()->all();
     return $this->render('index', ['TypeTicket' => $TypeTicket, 'model' => $model, 'model2' => $model2, 'model3' => $model3, 'dt' => $dt, 'dt2' => $dt2, 'dt3' => $dt3, 'dt_val' => $dt_val, 'dt_val2' => $dt_val2, 'dt_val3' => $dt_val3, 'dt_type_hours' => $dt_type_hours, 'DopPrice' => $DopPrice, 'model_dop_price' => $model_dop_price, 'programms' => $programms, 'programms_type_day' => $programms_type_day, 'model_programms' => $model_programms, 'dt_val_programms' => $dt_programms_val]);
 }
 public function actionAddPeople()
 {
     $session = Yii::$app->session;
     $name = $_REQUEST["name"];
     $surname = $_REQUEST["surname"];
     $father_name = $_REQUEST["father_name"];
     $date_birthday = strtotime($_REQUEST["date_birthday"]);
     $phone = $_REQUEST["phone"];
     $type_ticket = 0;
     $id_programm = 0;
     if ($_REQUEST["type_adult"] != "") {
         $type_adult = $_REQUEST["type_adult"];
     }
     $order_id = $session["order_id"];
     $order = Order::findOne($order_id);
     if (!$order->getIsSufficiency(true)) {
         $result["status"] = "error";
         $result["msg"] = "Недостаточно мест";
         return json_encode($result);
     }
     $now_date = date("N", $order->date);
     if ($now_date <= 5) {
         $type_day = 1;
     } else {
         $type_day = 2;
     }
     if (($order->count_hours == 11 or $order->count_hours == 12) and $now_date == 1) {
         $now_day = date("d.m.Y", $order->date);
         $dateString = 'first Monday of ' . date("Y", $order->date) . '-' . date("m", $order->date);
         if (!strtotime($dateString)) {
             throw new \Exception('"' . $dateString . '" is not a valid strtotime');
         }
         $startDay = new \DateTime($dateString);
         //if ($startDay->format('j') > 2) {
         //	$startDay->modify('- 7 days');
         //}
         $mDays = array();
         while ($startDay->format('Y-m') <= date("Y", $order->date) . '-' . str_pad(date("m", $order->date), 2, 0, STR_PAD_LEFT)) {
             $mDays[] = clone $startDay;
             $startDay->modify('+ 7 days');
         }
         if ($now_day == $mDays[1]->format("d.m.Y")) {
             if ($order->count_hours == 11) {
                 $order->count_hours = 17;
             } else {
                 if ($order->count_hours == 12) {
                     $order->count_hours = 18;
                 }
             }
         }
         if ($now_day == $mDays[3]->format("d.m.Y")) {
             if ($order->count_hours == 11) {
                 $order->count_hours = 17;
             } else {
                 if ($order->count_hours == 12) {
                     $order->count_hours = 18;
                 }
             }
         }
     }
     $old = $this->getyeardiff($date_birthday, $order_id);
     if ($order->type_ticket == 6) {
         $kids = Kids::find()->where("LOWER(`name`)='" . mb_strtolower($name) . "' AND LOWER(`surname`) = '" . mb_strtolower($surname) . "' AND \n\t\t\t\t\tLOWER(`father_name`) = '" . mb_strtolower($father_name) . "' AND `birthday` = " . $date_birthday)->all();
         $type_people = 2;
         if (count($kids) != 0) {
             $id_people = $kids[0]->id;
         } else {
             $kids = new Kids();
             $kids->name = $name;
             $kids->surname = $surname;
             $kids->father_name = $father_name;
             $kids->birthday = $date_birthday;
             $kids->phone = $phone;
             $kids->save();
             $id_people = $kids->id;
         }
         $id_programm = $order->id_programm;
         $id_time = $order->count_hours;
         $price = PriceProgramms::findOne(["id_programm" => $id_programm, "id_time" => $id_time]);
         $result["price"] = $price->price;
         if (isset($_REQUEST["pitanie"])) {
             if ($_REQUEST["pitanie"] == "true") {
                 $type_day = TypeDayProgramms::findOne($id_time);
                 $pitanie = DopPrice::find()->where(["name" => "pitanie"])->all();
                 $result["price"] += $pitanie[0]->price * $type_day->value;
             }
         }
         if ($old <= 7) {
             $result["old"] = $old;
         }
     } else {
         if ($order->type_ticket == 3) {
             $TypeTicket = TypeTicket::find()->where("`id`=12")->all();
         } else {
             $TypeTicket = TypeTicket::find()->where("`age_min` <= '{$old}' AND `age_max` >= '{$old}'")->all();
         }
         $type_ticket = $TypeTicket[0]->id;
         $o_date = $order->date;
         $TimePriceTicket = TimePriceTicket::find()->where("`date1` <= '{$o_date}' AND `date2` >= '{$o_date}'")->all();
         if (count($TimePriceTicket) == 0) {
             $classPriceTicket = PriceTicket::find();
         } elseif ($TimePriceTicket[0]->type == 1) {
             $classPriceTicket = PriceTicket::find();
         } elseif ($TimePriceTicket[0]->type == 2) {
             $classPriceTicket = PriceTicket2::find();
         } elseif ($TimePriceTicket[0]->type == 3) {
             $classPriceTicket = PriceTicket3::find();
         }
         $type = $_REQUEST["type"];
         if ($type == 1) {
             $people = Parents::find()->where("LOWER(`name`)='" . mb_strtolower($name) . "' AND LOWER(`surname`) = '" . mb_strtolower($surname) . "' AND \n\t\t\t\t\tLOWER(`father_name`) = '" . mb_strtolower($father_name) . "' AND `birthday` = " . $date_birthday)->all();
             $type_people = 1;
             if (count($people) != 0) {
                 $id_people = $people[0]->id;
             } else {
                 $people = new Parents();
                 $people->name = $name;
                 $people->surname = $surname;
                 $people->father_name = $father_name;
                 $people->birthday = $date_birthday;
                 $people->phone = $phone;
                 $people->save();
                 $id_people = $people->id;
             }
             //Перерасчет сопровождающий - гость
             if ($type_adult == 2) {
                 $type_adult = 11;
             } else {
                 $type_adult = 10;
             }
             $price = $classPriceTicket->where(["type_ticket" => $type_adult, "type_day" => $type_day, "hours" => $order->count_hours])->all();
             $result["price"] = $price[0]->price;
             if (isset($_REQUEST["besplatno"])) {
                 if ($_REQUEST["besplatno"] == "besplatno") {
                     $result["price"] = 0;
                 }
             }
         } elseif ($type == 2) {
             $kids = Kids::find()->where("LOWER(`name`)='" . mb_strtolower($name) . "' AND LOWER(`surname`) = '" . mb_strtolower($surname) . "' AND \n\t\t\t\t\tLOWER(`father_name`) = '" . mb_strtolower($father_name) . "' AND `birthday` = " . $date_birthday)->all();
             $type_people = 2;
             if (count($kids) != 0) {
                 $id_people = $kids[0]->id;
             } else {
                 $kids = new Kids();
                 $kids->name = $name;
                 $kids->surname = $surname;
                 $kids->father_name = $father_name;
                 $kids->birthday = $date_birthday;
                 $kids->phone = $phone;
                 $kids->save();
                 $id_people = $kids->id;
             }
             $price = $classPriceTicket->where(["type_ticket" => $type_ticket, "type_day" => $type_day, "hours" => $order->count_hours])->all();
             $result["price"] = $price[0]->price;
             if (isset($_REQUEST["pitanie"])) {
                 if ($_REQUEST["pitanie"] == "true") {
                     $pitanie = DopPrice::find()->where(["name" => "pitanie"])->all();
                     $result["price"] += $pitanie[0]->price;
                 }
             }
             if ($old <= 7) {
                 $result["old"] = $old;
             }
         }
     }
     $RelOrderPeople = RelOrderPeople::find()->where(["id_order" => $session["order_id"], "id_people" => $id_people, "type_people" => $type_people])->all();
     if (count($RelOrderPeople) == 0) {
         if ($_REQUEST["id_rel"] == "") {
             $RelOrderPeople = new RelOrderPeople();
         } else {
             $RelOrderPeople = RelOrderPeople::findOne($_REQUEST["id_rel"]);
         }
         $RelOrderPeople->id_order = $session["order_id"];
         $RelOrderPeople->id_people = $id_people;
         $RelOrderPeople->type_people = $type_people;
         $RelOrderPeople->type_tiket = $type_ticket;
         $RelOrderPeople->id_programm = $id_programm;
         $RelOrderPeople->qr = md5(time() . $id_people . $session["order_id"]);
         if (isset($_REQUEST["pitanie"])) {
             if ($_REQUEST["pitanie"] == "true") {
                 $RelOrderPeople->pitanie = 1;
             }
         }
         $RelOrderPeople->summ = $result["price"] * 100;
         $RelOrderPeople->save();
     }
     $RelOrderPeople = RelOrderPeople::find()->where(["id_order" => $session["order_id"], "id_people" => $id_people, "type_people" => $type_people])->all();
     $result["id_rel"] = $RelOrderPeople[0]->id;
     $result["status"] = 'ok';
     return json_encode($result);
 }