// Обработка запроса GET public override void handleGETRequest(HttpProcessor p) { try { PortalCore pc = new PortalCore(p); // Разбираем параметры if (p.httpHeaders["Cookie"] != null) { parseCookie(pc._cookie, p.httpHeaders["Cookie"].ToString()); } if (p.http_url.IndexOf('?') != -1) { parseGet(pc._get, p.http_url.Substring(p.http_url.IndexOf('?') + 1)); } // Получаем страницу от портала Template html = pc.getResult(); // Выводим её в результат p.writeSuccess(); p.outputStream.WriteLine(html.HTML()); } catch (Exception e) { p.writeSuccess(); p.outputStream.WriteLine("Error in portal app:<br><b>" + e.Message + "</b>"); } }
// Получение обработанного шаблона сайта public Template getResult() { bool conn = ObjModule.OpenChannel(); bool conn2 = ObjModule.OpenChannel2(); bool conn3 = ObjModule.OpenChannel3(); // Получение пользователя из сессии userid = getCookie("PortalUser"); // Получение текущей страницы String page = getVar("page"); if (page == "") { page = "start"; } Template html = new Template("main"); Template subpage = null; if ((!conn) || (!conn2) || (!conn3)) { page = "error"; } // Обработка стартовой страницы if (page == "start") { subpage = new Template(page); } else if (page == "error") { subpage = new Template(page); subpage.setVar("SERVICE", Config.ArendaURL); subpage.setVar("ERRMSG", ObjModule.errmsg); } else if (page == "about") { subpage = new Template(page); } else if (page == "reg") { subpage = new Template("reg"); // Если пришла регистрация, то добавляем пользователя if (getVar("login") != "") { String msg = ""; DataModule.addUser(getVar("login"), getVar("pass"), getVar("email"), ref msg); subpage.setVar("MSG", msg); } else { subpage.setVar("MSG", ""); } } else if (page == "bill") { subpage = new Template("bill"); // Если оплата if (getVar("sum") != "") { ObjModule.channel2.IncSum(userid, Int32.Parse(getVar("sum"))); subpage.setVar("MSG", "Успешное пополнение счета"); } else { subpage.setVar("MSG", ""); } } else if (page == "reserve") { subpage = new Template("reserve"); // Бронь string selid = getVar("selid"); subpage.setVar("SELID", selid); ArendaItem item = ObjModule.channel.GetItemByID(selid); subpage.setVar("ID", item.id); subpage.setVar("TYPE", item.roomtype); subpage.setVar("PRICE", item.price); subpage.setVar("S", item.s); subpage.setVar("CITY", item.city); subpage.setVar("ADDRESS", item.address); subpage.setVar("ELITE", item.elite ? "Премиум" : "Стандарт"); if (getVar("isok") != "") { if (!ObjModule.channel2.DecSum(userid, item.price)) { subpage.setVar("MSG", "Недостаточно средств на счете"); } else { ObjModule.channel3.DoReserveRoom(userid, item.id); subpage.setVar("REDIR", "1"); subpage.setVar("MSG", "Успешное бронирование"); } } else { subpage.setVar("MSG", ""); } } else if (page == "auth") { subpage = new Template("auth"); if (getVar("login") != "") { // И выполняем авторизацию if (DataModule.isAuthOK(getVar("login"), getVar("pass"), ref userid)) { subpage.setVar("MSG", "Авторизация успешна"); subpage.setVar("REDIR", "1"); // с установкой сессии в cookie p.setCookie("PortalUser", userid); } else { subpage.setVar("MSG", "Неправильный логин или пароль"); } } subpage.setVar("MSG", ""); } else // Обработка страницы поиска if (page == "findrooms") { subpage = new Template(page); string tekcity = getVar("citylist"); subpage.setVar("USER_ID", userid); List <String> citylist = ObjModule.channel.GetCityList(); string options = ""; foreach (var opt in citylist) { options += "<option value='" + opt + "' " + (tekcity.Equals(opt) ? "selected" : "") + ">" + opt + "</option>"; } subpage.setVar("CITYLIST", options); List <String> ids = ObjModule.channel.GetItems(); string roomshtml = ""; foreach (var id in ids) { ArendaItem item = ObjModule.channel.GetItemByID(id); if ((tekcity == "") || (tekcity.Equals(item.city))) { Template roomtpl = new Template("_room"); roomtpl.setVar("ID", id); roomtpl.setVar("TYPE", item.roomtype); roomtpl.setVar("PRICE", item.price); roomtpl.setVar("S", item.s); roomtpl.setVar("CITY", item.city); roomtpl.setVar("ADDRESS", item.address); roomtpl.setVar("ELITE", item.elite ? "Премиум" : "Стандарт"); bool isres = ObjModule.channel3.IsRoomReserved(userid, id); roomtpl.setVar("RESERVED", isres ? "none" : ""); roomtpl.setVar("NORESERVED", isres ? "" : "none"); roomshtml += roomtpl.HTML(); } } subpage.setVar("ROOMS", roomshtml); } else { subpage = new Template("notfound"); subpage.setVar("PAGE", page); } if (isAuthMode()) { html.setVar("AUTHIN", "none"); html.setVar("NOAUTHIN", ""); html.setVar("USERNAME", DataModule.getUserName(userid)); html.setVar("SUM", ObjModule.channel2.GetAccountID(userid)); } else { html.setVar("AUTHIN", ""); html.setVar("NOAUTHIN", "none"); html.setVar("USERNAME", "Гость"); } html.setVar("PAGEDATA", subpage.HTML()); // Добавляем случайное значения для защиты от кэширования html.setVar("RND", (new Random()).Next(10000).ToString("D")); html.setVar("PAGE", page); return(html); }