using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Drawing; using DayPilot; using DayPilot.Web.Ui; using DayPilot.Web.Ui.Data; using DayPilot.Web.Ui.Enums; using DayPilot.Web.Ui.Enums.Scheduler; using DayPilot.Web.Ui.Events.Scheduler; using System.Globalization; namespace my_roomshub { public partial class tstComponent : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { CultureInfo Culture = new CultureInfo("it-IT"); // prevent invalid ViewState errors in Firefox if (Request.Browser.Browser == "Firefox") Response.Cache.SetNoStore(); DayPilotScheduler1.Separators.Clear(); DayPilotScheduler1.Separators.Add(DateTime.Now, Color.Red); if (!IsPostBack) { DayPilotScheduler1.Scale = TimeScale.Manual; DateTime start = new DateTime(DateTime.Today.Year, 1, 1, 12, 0, 0); DateTime end = start.AddYears(1); DayPilotScheduler1.Timeline.Clear(); for (DateTime cell = start; cell < end; cell = cell.AddDays(1)) { DayPilotScheduler1.Timeline.Add(cell, cell.AddDays(1)); } LoadResourcesAndEvents(); DateTime firstOfMonth = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1); DayPilotScheduler1.SetScrollX(firstOfMonth); } } private void LoadResources() { DayPilotScheduler1.Resources.Clear(); // filtering explained below string roomFilter = "0"; if (DayPilotScheduler1.ClientState["filter"] != null) { roomFilter = (string)DayPilotScheduler1.ClientState["filter"]["room"]; } using (var cn = ConnectTosql()) { string mysql = "SELECT room_ID,room_name,room_stato,room_size,room_code FROM room WHERE room_size=@beds or @beds='0' ORDER BY room_code ASC"; SqlDataAdapter da = new SqlDataAdapter(mysql, cn); da.SelectCommand.Parameters.AddWithValue("@beds", roomFilter); DataTable dt = new DataTable(); da.Fill(dt); foreach (DataRow r in dt.Rows) { string name = (string)r["room_name"]; string id = Convert.ToString(r["room_ID"]); string status = (string)r["room_stato"]; //int beds = Convert.ToInt32(r["room_size"]); //string bedsFormatted = (beds == 1) ? "1 bed" : String.Format("{0} beds", beds); string area = (string)r["room_size"]; Resource res = new Resource(name, id); res.DataItem = r; res.Columns.Add(new ResourceColumn(area)); res.Columns.Add(new ResourceColumn(status)); DayPilotScheduler1.Resources.Add(res); } } // SqlDataAdapter da = new SqlDataAdapter("SELECT [RoomId], [RoomName], [RoomStatus], [RoomSize] FROM [Room] WHERE RoomSize = @beds or @beds = '0'", ConfigurationManager.ConnectionStrings["daypilot"].ConnectionString); //da.SelectCommand.Parameters.AddWithValue("beds", roomFilter); //DataTable dt = new DataTable(); //da.Fill(dt); } protected SqlConnection ConnectTosql() { SqlConnection connect = new SqlConnection(); connect.ConnectionString = ConfigurationManager.ConnectionStrings["dayPilot"].ConnectionString; return connect; } protected void DayPilotScheduler1_EventMove(object sender, DayPilot.Web.Ui.Events.EventMoveEventArgs e) { //AL MOMENTO DISATTIVATO } protected void DayPilotScheduler1_EventResize(object sender, DayPilot.Web.Ui.Events.EventResizeEventArgs e) { } protected void DayPilotScheduler1_Command(object sender, DayPilot.Web.Ui.Events.CommandEventArgs e) { switch (e.Command) { case "refresh": LoadResourcesAndEvents(); break; case "filter": LoadResourcesAndEvents(); break; } } protected void DayPilotScheduler1_BeforeEventRender(object sender, BeforeEventRenderEventArgs e) { //IL COLORE DELLE BARRE POTREBBE ESSERE ASSOCIATO ALLA TIPOLOGIA OCCUPANTE int status = Convert.ToInt32(e.Tag["res_stato"]); switch (status) { case 0: // new if (e.Start < DateTime.Today.AddDays(2)) // must be confirmed two day in advance { e.DurationBarColor = "red"; e.ToolTip = "Expired (not confirmed in time)"; } else { e.DurationBarColor = "orange"; e.ToolTip = "New"; } break; case 1: // confirmed if (e.Start < DateTime.Today || (e.Start == DateTime.Today && DateTime.Now.TimeOfDay.Hours > 18)) // must arrive before 6 pm { e.DurationBarColor = "#f41616"; // red e.ToolTip = "Late arrival"; } else { e.DurationBarColor = "green"; e.ToolTip = "Confirmed"; } break; case 2: // arrived if (e.End < DateTime.Today || (e.End == DateTime.Today && DateTime.Now.TimeOfDay.Hours > 11)) // must checkout before 10 am { e.DurationBarColor = "#f41616"; // red e.ToolTip = "Late checkout"; } else { e.DurationBarColor = "#1691f4"; // blue e.ToolTip = "Arrived"; } break; case 3: // checked out e.DurationBarColor = "gray"; e.ToolTip = "Checked out"; break; default: throw new ArgumentException("Unexpected status."); } e.Html = String.Format("
{0} ({1:d} - {2:d})
{3}
", e.Text, e.Start, e.End, e.ToolTip); //int paid = Convert.ToInt32(e.DataItem["ReservationPaid"]); //string paidColor = "#aaaaaa"; //e.Areas.Add(new Area().Bottom(10).Right(4).Html("
Paid: " + paid + "%
").Visible()); //e.Areas.Add(new Area().Left(4).Bottom(8).Right(4).Height(2).Html("
").Visible()); } protected void DayPilotScheduler1_BeforeCellRender(object sender, DayPilot.Web.Ui.Events.BeforeCellRenderEventArgs e) { } protected void DayPilotScheduler1_BeforeResHeaderRender(object sender, BeforeResHeaderRenderEventArgs e) { } private void LoadResourcesAndEvents() { LoadResources(); DayPilotScheduler1.DataSource = dbGetEvents(DayPilotScheduler1.VisibleStart, DayPilotScheduler1.VisibleEnd); DayPilotScheduler1.DataBind(); DayPilotScheduler1.Update(); } private DataTable dbGetEvents(DateTime start, DateTime end) { //SqlDataAdapter da = new SqlDataAdapter("SELECT [ReservationId], [ReservationName], [ReservationStart], [ReservationEnd], " + // "[RoomId], [ReservationStatus], [ReservationPaid] FROM [Reservation] WHERE NOT (([ReservationEnd] <= @start) OR ([ReservationStart] >= @end))", ConfigurationManager.ConnectionStrings["daypilot"].ConnectionString); string mysql = "SELECT res_id,res_scid,res_start,res_end,res_roomID,res_stato FROM reservation " + "WHERE NOT ((res_end<=@start) OR (res_start >=@end))"; using (var cn = ConnectTosql()) { SqlDataAdapter da = new SqlDataAdapter(mysql, cn); da.SelectCommand.Parameters.AddWithValue("start", start); da.SelectCommand.Parameters.AddWithValue("end", end); DataTable dt = new DataTable(); da.Fill(dt); return dt; } } } }