PageRenderTime 47ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/application/modules/user/controllers/ReserveController.php

http://rewardvn.googlecode.com/
PHP | 325 lines | 247 code | 46 blank | 32 comment | 51 complexity | d4c780665b5826d990bc65fc4abc75a2 MD5 | raw file
  1. <?php
  2. require_once 'Reward/Mvc/BaseUserController.php' ;
  3. require_once 'Reward/Util.php' ;
  4. require_once 'security/AES.class.php' ;
  5. require_once 'Reward/UserCommon.php';
  6. class ReserveController extends BaseUserController{
  7. public function init(){
  8. parent::init();
  9. $this->_helper->layout()->setLayout('layoutfooter');
  10. $bootstrap = $this->getInvokeArg('bootstrap');
  11. $this->config = $bootstrap->getOptions();
  12. }
  13. public function indexAction(){
  14. $tblHotel = new User_Model_Hotel();
  15. $tblRoom = new User_Model_Room();
  16. /*
  17. $hotelID = $this->getSessionUser();
  18. if(!isset($hotelID) || $hotelID <= 0 || isset($_POST['linkAdmin'])){
  19. $admin = $this->getSessionAdmin();
  20. if(!isset($admin) || $admin <= 0 || !isset($_POST['linkAdmin']) || !isset($_POST['hotelID']))
  21. $this->_redirect('/'.$_SESSION['lang']."/user/login/index");
  22. $hotelID = $_POST['hotelID'];
  23. $this->view->assign('typeUser','Admin');
  24. $this->view->assign('urlUser',$_POST['linkAdmin']);
  25. }else{
  26. $this->view->assign('typeUser','Client');
  27. $this->view->assign('urlUser','/'.$_SESSION['lang'].'/user/client/index');
  28. }
  29. */
  30. $hotelID = $this->getSessionUser();
  31. //$this->view->assign('HotelID',$hotelID);
  32. //********************* nam code *******************
  33. $admin = $this->getSessionAdmin();
  34. if(isset($hotelID )){
  35. $hotelID = $this->getSessionUser();
  36. }
  37. else if(isset($admin) && isset($_GET['HotelID']) ){
  38. $hotelID = $_GET['HotelID'];
  39. $this->view->assign('typeUser','Admin');
  40. $this->view->assign('urlUser',$_POST['linkAdmin']);
  41. $flag = 1;
  42. $this->view->assign('flag',$flag);
  43. }
  44. //****************************************************
  45. if(!isset($hotelID) || $hotelID <= 0 || isset($_POST['linkAdmin'])){
  46. $admin = $this->getSessionAdmin();
  47. if(!isset($admin) || $admin <= 0 || !isset($_POST['linkAdmin']) || !isset($_POST['hotelID']))
  48. $this->_redirect('/'.$_SESSION['lang']."/user/login/index");
  49. $hotelID = $_POST['hotelID'];
  50. $this->view->assign('typeUser','Admin');
  51. $this->view->assign('urlUser','/'.$_SESSION['lang'].'/admin/login/index');
  52. }else{
  53. $this->view->assign('typeUser','Client');
  54. $this->view->assign('urlUser','/'.$_SESSION['lang'].'/user/viewbooking/index');
  55. }
  56. //**************** phan language ******************
  57. $translate = Util::language();
  58. $this->view->assign('BackToPage', $translate->_('BackToPage'));
  59. $this->view->assign('NewHotelName', $translate->_('NewHotelName'));
  60. $this->view->assign('NewDescription', $translate->_('NewDescription'));
  61. $this->view->assign('NewRating', $translate->_('NewRating'));
  62. $this->view->assign('UploadandRemove', $translate->_('UploadandRemove'));
  63. $this->view->assign('HotelFeature', $translate->_('HotelFeature'));
  64. $this->view->assign('AdditionalFeatures', $translate->_('AdditionalFeatures'));
  65. $this->view->assign('CheckInTime', $translate->_('CheckInTime'));
  66. $this->view->assign('CheckOutTime', $translate->_('CheckOutTime'));
  67. $this->view->assign('ClickThumbnail', $translate->_('ClickThumbnail'));
  68. $this->view->assign('Days', $translate->_('Days'));
  69. $this->view->assign('HowToGetThere', $translate->_('HowToGetThere'));
  70. $this->view->assign('Parking', $translate->_('Parking'));
  71. $this->view->assign('Thingstodo', $translate->_('Thingstodo'));
  72. $this->view->assign('CheckinInstruction', $translate->_('CheckinInstruction'));
  73. $this->view->assign('BussinessFacility', $translate->_('BussinessFacility'));
  74. $this->view->assign('EditSubroomName', $translate->_('EditSubroomName'));
  75. $this->view->assign('TypicalPrice', $translate->_('TypicalPrice'));
  76. $this->view->assign('MinNightStay', $translate->_('MinNightStay'));
  77. $this->view->assign('RoomChange', $translate->_('RoomChange'));
  78. $this->view->assign('RoomType', $translate->_('RoomType'));
  79. $this->view->assign('RoomFeatures', $translate->_('RoomFeatures'));
  80. $this->view->assign('BedConfiguration', $translate->_('BedConfiguration'));
  81. $this->view->assign('RoomCondition', $translate->_('RoomCondition'));
  82. $this->view->assign('CancellationPolicy', $translate->_('CancellationPolicy'));
  83. $this->view->assign('Or', $translate->_('Or'));
  84. $this->view->assign('TypicalPrice', $translate->_('TypicalPrice'));
  85. $this->view->assign('MinStay', $translate->_('MinStay'));
  86. $this->view->assign('FullRate', $translate->_('FullRate'));
  87. $this->view->assign('StarRating', $translate->_('StarRating'));
  88. $this->view->assign('Confirm', $translate->_('Confirm'));
  89. $this->view->assign('Single', $translate->_('Single'));
  90. $this->view->assign('Double', $translate->_('Double'));
  91. $this->view->assign('BunkBed', $translate->_('BunkBed'));
  92. $this->view->assign('QueenBed', $translate->_('QueenBed'));
  93. $this->view->assign('KingBed', $translate->_('KingBed'));
  94. $this->view->assign('TwinBed', $translate->_('TwinBed'));
  95. // * phan footer * //
  96. $this->view->assign('HotelPartners', $translate->_('HotelPartners'));
  97. $this->view->assign('ContactUs', $translate->_('ContactUs'));
  98. $this->view->assign('AboutUs', $translate->_('AboutUs'));
  99. $this->view->assign('TermAndCondition', $translate->_('TermAndCondition'));
  100. $this->view->assign('Privacy', $translate->_('Privacy'));
  101. $this->view->assign('Security', $translate->_('Security'));
  102. $this->view->assign('Feedback', $translate->_('Feedback'));
  103. $this->view->assign('Help', $translate->_('Help'));
  104. //*************************************************
  105. $hotelInfor = $tblHotel->getHotelByID($hotelID);
  106. $this->view->assign('hotelID',$hotelID);
  107. if(count($hotelInfor) > 0){
  108. if(isset($_GET['date']) && $_GET['date'] > 0){
  109. $temp = $_GET['date'];
  110. }else{
  111. $temp = time();
  112. }
  113. $datenow = mktime(0,0,0,date('m',time()),date('d',time()),date('y',time()));
  114. if($datenow >= $temp)
  115. $dateToGet = $datenow;
  116. else
  117. $dateToGet = mktime(0,0,0,date('m',$temp),date('d',$temp),date('y',$temp));
  118. if(isset($hotelInfor['PropertyName'])){
  119. $hotelInfor['PropertyName'] = stripslashes($hotelInfor['PropertyName']);
  120. }
  121. if(isset($hotelInfor['PropertyDescription'])){
  122. $hotelInfor['PropertyDescription'] = stripslashes($hotelInfor['PropertyDescription_lang']);
  123. }
  124. $roomInfor = $tblRoom->getAllRoom($hotelID,$dateToGet);
  125. $hotelFeat = $tblHotel->getHotelFeature($hotelID);
  126. if(count($roomInfor) > 0){
  127. $roomType = array();
  128. $tblCurrency = new User_Model_Currency();
  129. $currency = $tblCurrency->getHotelCurrency($hotelID);
  130. foreach ($roomInfor as $infor){
  131. $all_bed = $tblRoom->getAllBed($infor['RoomID']);
  132. $roomType[] = array(
  133. 'RoomID' => $infor['RoomID'],
  134. 'Name' => stripslashes($infor['RoomName']),
  135. 'Decription' => stripslashes($infor['Decription_lang']),
  136. 'Condition' => stripslashes($infor['RoomCondition_lang']),
  137. 'Image' => $infor['RoomImage'],
  138. 'NumberofRooms' => $infor['NumberofRooms'],
  139. 'FullRate' => $currency['CurrencyText'].''.$infor['FullRatePrice'],
  140. 'MinStay' => $infor['MinStay'],
  141. 'RoomFeatures' => $tblRoom->getRoomFeature($infor['RoomID']),
  142. 'PriceList' => $this->getListPriceOfRoom($infor['RoomID'],$infor['NumberofRooms'],$dateToGet,14,$infor['TypicalPrice']),
  143. 'DateList' => $this->getListDate($dateToGet,14),
  144. 'BedType' => $all_bed
  145. );
  146. }
  147. $this->view->assign('listRoom', $roomType);
  148. }
  149. $n_date = $dateToGet + (7*24*60*60);
  150. $p_temp = mktime(0,0,0,date('m',time()),date('d',time()),date('y',time())) + (24*60*60)*7;
  151. if($dateToGet >= $p_temp){
  152. $p_date = $dateToGet - (7*24*60*60);
  153. }else{
  154. $p_date = $dateToGet;
  155. }
  156. $next = '/'.$_SESSION['lang']."/user/reserve/index?HotelID=".$hotelID."&date=".$n_date;
  157. $previous = '/'.$_SESSION['lang']."/user/reserve/index?HotelID=".$hotelID."&date=".$p_date;
  158. $listImage = $tblHotel->getImageOfHotel($hotelID);
  159. $tblFeature = new User_Model_Feature();
  160. $listRoomFeature = $tblFeature->getRows(1);
  161. $listHotelFeature = $tblFeature->getRows(0);
  162. $listImage = $tblHotel->getImageOfHotel($hotelID);
  163. $this->view->assign('listRoomFeature',$listRoomFeature);
  164. $this->view->assign('listHotelFeature',$listHotelFeature);
  165. if(count($listHotelFeature) > 0 ){
  166. $temp = ceil(count($listHotelFeature) / 3);
  167. $this->view->assign('totalHotelFeature',$temp);
  168. }
  169. $t_Hfea =array();
  170. if(isset($sdata['HotelFeature'])){
  171. foreach ($sdata['HotelFeature'] as $fea) {
  172. $t_Hfea[] = array('FeatureID' => $fea);
  173. }
  174. }else{
  175. $t_Hfea = $tblHotel->getHotelFeature($hotelID);
  176. }
  177. $this->view->assign('hotelFeature',$t_Hfea);
  178. $this->view->assign('HotelFeatures' ,$hotelFeat);
  179. $this->view->assign('listImage',$listImage);
  180. $this->view->assign('next',$next);
  181. $this->view->assign('previous',$previous);
  182. $this->view->assign('listDate', $this->getListDate($dateToGet,14));
  183. $this->view->assign('hotelInfor', $hotelInfor);
  184. }else{
  185. //$this->_redirect("/");
  186. }
  187. }
  188. public function successAction(){
  189. $hotelID = $this->getSessionUser();
  190. if(!isset($hotelID) || $hotelID <= 0 || isset($_POST['linkAdmin'])){
  191. $admin = $this->getSessionAdmin();
  192. if(!isset($admin) || $admin <= 0 || !isset($_POST['linkAdmin']) || !isset($_POST['hotelID']))
  193. $this->_redirect('/'.$_SESSION['lang']."/user/login/index");
  194. $hotelID = $_POST['hotelID'];
  195. $this->view->assign('typeUser','Admin');
  196. $this->view->assign('urlUser',$_POST['linkAdmin']);
  197. }else{
  198. $this->view->assign('typeUser','Client');
  199. $this->view->assign('urlUser','/'.$_SESSION['lang'].'/user/client/index');
  200. }
  201. if(!isset($_POST['r_id']) || !isset($_POST['d_s']) || !isset($_POST['d_e']) || !isset($_POST['n_r']))
  202. $this->_redirect("/".$_SESSION['lang'].'/user/');
  203. $id = $_POST['r_id'];
  204. $start = $_POST['d_s'];
  205. $end = $_POST['d_e'];
  206. $numb = $_POST['n_r'];
  207. $check_success = 1;
  208. $tblRoom = new User_Model_Room();
  209. for($i = $start ; $i <= $end ; $i = $i + 60*60*24){
  210. $room = $tblRoom->getRoomStock($id,$i);
  211. $stock = $room['StockRoom'] - $numb;
  212. if ($stock < 0){
  213. $check_success = 0;
  214. break;
  215. }
  216. $sold = $room['SoldRoom'] + $numb;
  217. $result = $tblRoom->updateStockRoom($id,$i,$stock,$sold);
  218. if($result == -1){
  219. $check_success = 0;
  220. }
  221. }
  222. $this->view->assign('result',$check_success);
  223. $this->_helper->layout()->setLayout('layoutsuccess');
  224. $this->view->assign('hotelID',$hotelID);
  225. }
  226. /**
  227. * Funtion to get list of room price by date
  228. * @param : $RoomID,$NumberOfRoom,$startDate,$toDate
  229. */
  230. Function getListPriceOfRoom($RoomID,$NumberOfRoom,$startDate,$toDate,$roomRate){
  231. $tblRoom = new User_Model_Room();
  232. $roomInfor = $tblRoom->getInforByDate($RoomID,$startDate);
  233. $list = array();
  234. for($i = 0; $i < $toDate ; $i++){
  235. $temp = $startDate + (24*60*60)*$i;
  236. $check = false;
  237. $idx = 0;
  238. for($j =0;$j<count($roomInfor);$j++){
  239. if($roomInfor[$j]['StayDate'] == $temp){
  240. $check = true;
  241. $idx = $j;
  242. break;
  243. }
  244. }
  245. if($check == true && $roomInfor[$idx]['Active'] == 1){
  246. if($roomInfor[$idx]['StockRoom'] == 0 && $roomInfor[$idx]['SoldRoom'] >= $NumberOfRoom){
  247. $list[$i] = array('price' => 'SOLD','stock' => '0');
  248. }else{
  249. if($roomInfor[$idx]['Price'] != NULL && $roomInfor[$idx]['Price'] > 0){
  250. $list[$i] = array('price' => $roomInfor[$idx]['Price'],'stock' => $roomInfor[$idx]['StockRoom']);
  251. }else{
  252. $list[$i] = array('price' => $roomRate,'stock' => $roomInfor[$idx]['StockRoom'] );
  253. }
  254. }
  255. }else{
  256. $list[$i] = array('price' => '0','stock' => '0');
  257. }
  258. }
  259. return $list;
  260. }
  261. /**
  262. *
  263. * Function to get list of Date
  264. * @param $startDate ,$toDate
  265. */
  266. function getListDate($startDate,$toDate){
  267. $list = array();
  268. for($i = 0 ; $i < $toDate ;$i++){
  269. $temp = $startDate + (24*60*60)*$i;
  270. $list[$i] = array(
  271. 'date' => date('D',$temp)." <br />".date('d M',$temp),
  272. 'time' => mktime(0,0,0,date('m',$temp),date('d',$temp),date('y',$temp))
  273. );
  274. }
  275. return $list;
  276. }
  277. }