top-image

Αεροπορικά Ταξίδια Εξωτερικού


<%@ Control Language="C#" Inherits="Bone.Ascx" %> <%@ Import Namespace="Bone" %> <%@ Import Namespace="Cms" %> <%@ Import Namespace="Metabyte" %> <%@ Import Namespace="System.Text" %> <%@ Import Namespace="System.Linq" %> <%@ Import Namespace="System.Collections.Generic" %> <% Bone.Widget x = (Bone.Widget)obj; %> <% Bone.DBItem item = (Bone.DBItem)obj2; %> <% string ObjectType = (string)obj3; %> <% Bone.ID idObject = (Bone.ID)obj4; %> <% Dictionary parameters = (Dictionary)obj5; %> <% StringBuilder s=new StringBuilder(); bool proceed = true; bool filterApplied=false; string groupTitle=""; Dictionary Options = new Dictionary(); Options.Add((ID)1, BONE.Dictionary["SpecialOffer"]); IDList OptionsList = IDList.Parse(Http.Get["GroupOptions"]); DBList Destinations = new DBList(); if(parameters.ContainsKey("Destinations"))foreach(string key in parameters["Destinations"].Split(','))if(!string.IsNullOrEmpty(key))Destinations.Add(GroupListData.Retrieve(Bone.ID.ParseHex(key))); DBList Seasons = new DBList(); if(parameters.ContainsKey("Seasons"))foreach(string key in parameters["Seasons"].Split(','))if(!string.IsNullOrEmpty(key))Seasons.Add(GroupListData.Retrieve(Bone.ID.ParseHex(key))); DateTime? PeriodFrom = null; if(parameters.ContainsKey("DateFrom")){try{ PeriodFrom=DateTime.ParseExact(parameters["DateFrom"],"dd/MM/yyyy",BONE.Culture); }catch(Exception){}} DateTime? PeriodTill = null; if(parameters.ContainsKey("DateTill")){try{ PeriodTill=DateTime.ParseExact(parameters["DateTill"],"dd/MM/yyyy",BONE.Culture); }catch(Exception){}} List TravelBy = new List(); if(parameters.ContainsKey("TravelBy"))foreach(string key in parameters["TravelBy"].Split(','))if(!string.IsNullOrEmpty(key))TravelBy.Add(byte.Parse(key)); DBList Groups = new DBList(); if(parameters.ContainsKey("Groups"))foreach(string key in parameters["Groups"].Split(','))if(!string.IsNullOrEmpty(key))Groups.Add(Metabyte.PackageGroup.Retrieve(Bone.ID.ParseHex(key))); List Durations = new List(); if(parameters.ContainsKey("Duration"))foreach(string key in parameters["Duration"].Split(','))if(!string.IsNullOrEmpty(key))Durations.Add(int.Parse(key)); int pagesize=12; if(parameters.ContainsKey("Paging")){try{ pagesize=int.Parse(parameters["Paging"]); }catch(Exception){}} List Grouping = new List(); //if(parameters.ContainsKey("Grouping"))foreach(string key in parameters["Grouping"].Split(','))if(!string.IsNullOrEmpty(key))Grouping.Add(key); string PackagesList = null; if (parameters.ContainsKey("Packages")) PackagesList = parameters["Packages"].Trim(','); List DepartureFrom = new List(); if (parameters.ContainsKey("DepartureFrom"))foreach(string key in parameters["DepartureFrom"].Split(','))if(!string.IsNullOrEmpty(key))DepartureFrom.Add(key); string DisplayAs = null; if (parameters.ContainsKey("DisplayAs"))foreach(string key in parameters["DisplayAs"].Split(','))if(!string.IsNullOrEmpty(key)){DisplayAs=key; break;} if(!string.IsNullOrEmpty(DisplayAs) && DisplayAs.ToLower()=="table" && Grouping.Count==0)Grouping.Add("destination"); string where = null; if (Destinations.Count>0) { where += (!string.IsNullOrEmpty(where) ? " AND " : " ") + " (Destination IN (" + string.Join(",",Destinations.Select(ss=>""+(Js)ss.Data).ToArray()) + ")"; foreach(GroupListData destination in Destinations) where+=" OR ExtraDestinations LIKE '%"+destination.id.Hex+"%' "; where +=")"; } if(!string.IsNullOrEmpty(Http.Get["GroupByDestination"])){ IDList destinationGroups=IDList.Parse(Http.Get["GroupByDestination"]); DBList DestinationGroups = new DBList();foreach(Bone.ID id in destinationGroups)DestinationGroups.Add(GroupListData.Retrieve(id)); if(DestinationGroups.Count>0){ where += (!string.IsNullOrEmpty(where) ? " AND " : " ") + " (Destination IN (" + string.Join(",",DestinationGroups.Select(ss=>""+(Js)ss.Data).ToArray()) + ")"; foreach(GroupListData destination in DestinationGroups) where+=" OR ExtraDestinations LIKE '%"+destination.id.Hex+"%' "; where +=")"; groupTitle+=(!string.IsNullOrEmpty(groupTitle)?" - ":"")+string.Join(", ",DestinationGroups.Select(ss=>""+ss.Data).ToArray()); } filterApplied=true; } if (Seasons.Count>0) where += (!string.IsNullOrEmpty(where) ? " AND " : " ") + " (SeasonCategory IN (" + string.Join(",",Seasons.Select(ss=>""+(Js)ss.Data).ToArray()) + "))"; if (!string.IsNullOrEmpty(PackagesList)) where += (!string.IsNullOrEmpty(where) ? " AND " : " ") + " (id IN (" + PackagesList + "))"; if (Durations.Count>0) where += (!string.IsNullOrEmpty(where) ? " AND " : " ") + " (Duration IN (" + string.Join(",",Durations.Select(ss=>""+ss).ToArray()) + "))"; if(!string.IsNullOrEmpty(Http.Get["GroupByDuration"])){ int DurationGroup=Http.Get["GroupByDuration"]; if(DurationGroup>0){ where += (!string.IsNullOrEmpty(where) ? " AND " : " ") + " (Duration IN (" + DurationGroup + ")"; where +=")"; groupTitle+=(!string.IsNullOrEmpty(groupTitle)?" - ":"")+DurationGroup+" "+BONE.Dictionary["Days"]; } filterApplied=true; } if (TravelBy.Count>0) where += (!string.IsNullOrEmpty(where) ? " AND " : " ") + " (PackageType IN (" + string.Join(",",TravelBy.Select(ss=>""+ss).ToArray()) + "))"; if(!string.IsNullOrEmpty(Http.Get["GroupByTravelBy"])){ byte? TravelByGroup=Http.Get["GroupByTravelBy"]; if(TravelByGroup!=null){ where += (!string.IsNullOrEmpty(where) ? " AND " : " ") + " (PackageType IN (" + TravelByGroup + ")"; where +=")"; groupTitle+=(!string.IsNullOrEmpty(groupTitle)?" - ":"")+BONE.GetEnumerationCaption(typeof(Package.PackageTypeEnum), (object)(Package.PackageTypeEnum)TravelByGroup); } filterApplied=true; } if(!string.IsNullOrEmpty(Http.Get["GroupBySeason"])){ IDList seasonGroups=IDList.Parse(Http.Get["GroupBySeason"]); DBList SeasonGroups = new DBList();foreach(Bone.ID id in seasonGroups)SeasonGroups.Add(GroupListData.Retrieve(id)); if(SeasonGroups.Count>0){ where += (!string.IsNullOrEmpty(where) ? " AND " : " ") + " (SeasonCategory IN (" + string.Join(",",SeasonGroups.Select(ss=>""+(Js)ss.Data).ToArray()) + ")"; where +=")"; groupTitle+=(!string.IsNullOrEmpty(groupTitle)?" - ":"")+string.Join(", ",SeasonGroups.Select(ss=>""+ss.Data).ToArray()); } filterApplied=true; } if (Groups.Count>0) where += (!string.IsNullOrEmpty(where) ? " AND " : " ") + " (idGroup IN (" + string.Join(",",Groups.Select(ss=>""+ss.id).ToArray()) + "))"; where += (!string.IsNullOrEmpty(where) ? " AND " : " "); where += " id IN (SELECT idPackage FROM mtbPackageDepartures WHERE DepartureDate>=" + (Sql)new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0).AddDays(1) + " AND Published=1 AND Cancelled!=1 AND AdultPriceOnDBL>0 "; if (PeriodFrom != null) where += (!string.IsNullOrEmpty(where) ? " AND " : " ") + "DepartureDate>=" + (Sql)PeriodFrom.Value; if (PeriodTill != null) where += (!string.IsNullOrEmpty(where) ? " AND " : " ") + "DepartureDate<=" + (Sql)PeriodTill.Value; if (OptionsList.Contains((ID)1)) where += (!string.IsNullOrEmpty(where) ? " AND " : " ") + "SpecialOffer=" + (Sql)true;//OFFERS if (DepartureFrom.Count>0) where += (!string.IsNullOrEmpty(where) ? " AND " : " ") + " (DepartureNotes IN (" + string.Join(",",DepartureFrom.Select(ss=>""+(Sql)ss).ToArray()) + "))"; //if(!string.IsNullOrEmpty(Http.Get["GroupDepartureFrom"])){ <------ only if make filter // string DepartureFromGroup=Http.Get["GroupDepartureFrom"]; // if(DepartureFromGroup!=null){ // where += (!string.IsNullOrEmpty(where) ? " AND " : " ") + " (DepartureNotes IN (" + DepartureFromGroup + ")"; // where +=")"; // groupTitle+=(!string.IsNullOrEmpty(groupTitle)?" - ":"")+DepartureFromGroup; // } // filterApplied=true; //} where += ")"; if(Grouping.Count>0 && filterApplied==false){ string groupby=""; string groupfields=""; if(Grouping.Contains("destination")){groupby+=(!string.IsNullOrEmpty(groupby) ? "," : " ") +"Destination"; groupfields+=(!string.IsNullOrEmpty(groupfields) ? "," : " ") +"Destination";} if(Grouping.Contains("duration")){groupby+=(!string.IsNullOrEmpty(groupby) ? "," : " ") +"Duration";groupfields+=(!string.IsNullOrEmpty(groupfields) ? "," : " ") +"Duration";} if(Grouping.Contains("type")){groupby+=(!string.IsNullOrEmpty(groupby) ? "," : " ") +"PackageType";groupfields+=(!string.IsNullOrEmpty(groupfields) ? "," : " ") +"PackageType";} if(Grouping.Contains("season")){groupby+=(!string.IsNullOrEmpty(groupby) ? "," : " ") +"SeasonCategory";groupfields+=(!string.IsNullOrEmpty(groupfields) ? "," : " ") +"SeasonCategory";} string groupsql="SELECT COUNT(id) AS Total"+(!string.IsNullOrEmpty(groupfields)?","+groupfields:"")+" FROM mtbPackages "+(!string.IsNullOrEmpty(where)?" WHERE "+where:"")+(!string.IsNullOrEmpty(groupby)?" GROUP BY "+groupby+" ":" GROUP BY id ")+(!string.IsNullOrEmpty(groupfields)?" ORDER BY "+groupfields:""); %><%if(Http.Get["log"]==true && BONE.User.IsDeveloper && 1>2){%>

where: <%=where%>
<%}%><% %><%if(Http.Get["log"]==true && BONE.User.IsDeveloper && 1>2){%>
groupsql: <%=groupsql%>
<%}%><% DBReader dr=BONE.Execute(groupsql); List GroupCombinations=new List(); while(dr.Read()){ Package.GroupCombination pgc=new Package.GroupCombination(); if(Grouping.Contains("destination"))pgc.Destination=dr["Destination"]; if(Grouping.Contains("duration"))pgc.Duration=dr["Duration"]; if(Grouping.Contains("type"))pgc.PackageType=dr["PackageType"]; if(Grouping.Contains("season"))pgc.SeasonCategory=dr["SeasonCategory"]; pgc.Count=dr["Total"]; GroupCombinations.Add(pgc); } dr.Close(); dr=null; if(GroupCombinations.Count==1 && !string.IsNullOrEmpty(DisplayAs) && DisplayAs.ToLower()=="table"){ DBList Packages = Package.Select(where, "DateCreated DESC"); %><%if(Http.Get["log"]==true && BONE.User.IsDeveloper && 1>2){%>
Packages :: <%=Packages.Count %>
<%}%><% Package.GroupCombination pgc = new Package.GroupCombination(); if(Grouping.Contains("destination"))pgc.Destination=Packages[0].Destination; if(Grouping.Contains("duration"))pgc.Duration=Packages[0].Duration; if(Grouping.Contains("type"))pgc.PackageType=Packages[0].PackageType; if(Grouping.Contains("season"))pgc.SeasonCategory=Packages[0].SeasonCategory; pgc.AddPackages(Packages.ToList()); s.Append(pgc.TableTile); %><%if(Http.Get["log"]==true && BONE.User.IsDeveloper && 1>2){%>
GroupCombinations.Count==1 && !string.IsNullOrEmpty(DisplayAs) && DisplayAs.ToLower()=="table"
<%}%><% if(GroupCombinations.Count==1)proceed=false; }else{ string tileClass = (string)BONE.GetVariable("PackagesTilesetClass"); if (string.IsNullOrEmpty(tileClass)) tileClass = "col-lg-4 col-md-4 col-sm-4 col-xs-12 col-ms-6"; TilesetControl tilesetControl = new TilesetControl("PackagesFilters", tileClass, pagesize, GroupCombinations).WithTile(delegate(object gc) {return ((Package.GroupCombination)gc).Tile;}); if(GroupCombinations.Count>0)s.Append(tilesetControl); else s.Append("
"+BONE.Dictionary["NoDeparturesMessage"]+"
"); proceed=false; %><%if(Http.Get["log"]==true && BONE.User.IsDeveloper && 1>2){%>
NOT :: GroupCombinations.Count==1 && !string.IsNullOrEmpty(DisplayAs) && DisplayAs.ToLower()=="table"
<%}%><% } } if (proceed) { if(!string.IsNullOrEmpty(DisplayAs) && DisplayAs.ToLower()=="table"){ DBList Packages = Package.Select(where, "DateCreated DESC"); if (Packages.Count > 0) { Package.GroupCombination pgc = new Package.GroupCombination(); if(Grouping.Contains("destination"))pgc.Destination=Packages[0].Destination; if(Grouping.Contains("duration"))pgc.Duration=Packages[0].Duration; if(Grouping.Contains("type"))pgc.PackageType=Packages[0].PackageType; if(Grouping.Contains("season"))pgc.SeasonCategory=Packages[0].SeasonCategory; pgc.AddPackages(Packages.ToList()); s.Append(pgc.TableTile); } else { s.Append(new MessagePanelControl(new InfoMessage(BONE.Dictionary["NoAvailablePackagesFoundMessage"])).ToString()); } }else{ DBList Packages = Package.Select(where,"DateCreated DESC" ); string tileClass = (string)BONE.GetVariable("PackagesTilesetClass"); if (string.IsNullOrEmpty(tileClass)) tileClass = "col-lg-4 col-md-4 col-sm-4 col-xs-12 col-ms-6"; s.Append("
"); if (Packages.Count > 0) { //SORTING string sortby="";if(parameters.ContainsKey("Sorting")){sortby=parameters["Sorting"];} string sortdirection="";if(parameters.ContainsKey("SortingDirection")){sortdirection=parameters["SortingDirection"];} if(!string.IsNullOrEmpty(sortdirection) && sortdirection.Trim().ToLower()=="desc"){ if(parameters["Sorting"]=="datecreated")Packages.Sort(delegate(Package p1, Package p2) { return p2.DateCreated.CompareTo(p1.DateCreated); }); if(parameters["Sorting"]=="price")Packages.Sort(delegate(Package p1, Package p2) { return p2.PriceFrom.CompareTo(p1.PriceFrom); }); if(parameters["Sorting"]=="duration")Packages.Sort(delegate(Package p1, Package p2) { return p2.Duration.CompareTo(p1.Duration); }); if(parameters["Sorting"]=="destination")Packages.Sort(delegate(Package p1, Package p2) { return p2.Destination.CompareTo(p1.Destination); }); if(parameters["Sorting"]=="description")Packages.Sort(delegate(Package p1, Package p2) { return p2.Description.CompareTo(p1.Description); }); } if(!string.IsNullOrEmpty(sortdirection) && sortdirection.Trim().ToLower()=="asc"){ if(parameters["Sorting"]=="datecreated")Packages.Sort(delegate(Package p1, Package p2) { return p1.DateCreated.CompareTo(p2.DateCreated); }); if(parameters["Sorting"]=="price")Packages.Sort(delegate(Package p1, Package p2) { return p1.PriceFrom.CompareTo(p2.PriceFrom); }); if(parameters["Sorting"]=="duration")Packages.Sort(delegate(Package p1, Package p2) { return p1.Duration.CompareTo(p2.Duration); }); if(parameters["Sorting"]=="destination")Packages.Sort(delegate(Package p1, Package p2) { return p1.Destination.CompareTo(p2.Destination); }); if(parameters["Sorting"]=="description")Packages.Sort(delegate(Package p1, Package p2) { return p1.Description.CompareTo(p2.Description); }); } if(!string.IsNullOrEmpty(groupTitle))s.Append("

"+groupTitle+"

"); TilesetControl tilesetControl = new TilesetControl("Packages", tileClass, pagesize, Packages); s.Append(tilesetControl); } else { s.Append(new MessagePanelControl(new InfoMessage(BONE.Dictionary["NoAvailablePackagesFoundMessage"]))); } } } %> <%=s.ToString()%>