Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXperience 13.1 Demos/ASP.NET/CS/WebmailClient/
Upload File :
Current File : C:/Users/Public/Documents/DXperience 13.1 Demos/ASP.NET/CS/WebmailClient/Calendar.aspx.cs

using System;
using System.Linq;
using System.Collections.Generic;
using System.Web.UI.WebControls;
using DevExpress.Web.ASPxEditors;
using DevExpress.Web.ASPxSplitter;
using DevExpress.XtraScheduler;
using DevExpress.XtraScheduler.iCalendar;
using DevExpress.Web.ASPxNavBar;
using System.Collections;

public partial class Calendar : System.Web.UI.Page {
    protected void Page_PreInit(object sender, EventArgs e) {        
        Utils.ApplyTheme(this);
    }

    protected void Page_Init(object sender, EventArgs e) {
        new SchedulerRowInsertionHelper().ProvideRowInsertion(Scheduler, AppointmentDataSource);
        ResourceNavBar.DataBind(); 
    }

    protected void Page_Load(object sender, EventArgs e) {
        PrepareMasterSplitter();
        if(!SchedulerData.GetAppointments().Any())
            ImportCalendarData();
    }

    protected void Scheduler_FilterAppointment(object sender, PersistentObjectCancelEventArgs e) {
        if(_selectedResourceNameCache == null)
            _selectedResourceNameCache = FindSelectedResourceNames();

        int resourceId;
        var appointment = (Appointment)e.Object;
        if(int.TryParse(appointment.ResourceId.ToString(), out resourceId)) {
            var resource = SchedulerData.GetResources().First(r => r.ID == resourceId);
            e.Cancel = !_selectedResourceNameCache.Contains(resource.Name);
        }
    }

    protected bool GetResourceCheckedState(NavBarItemTemplateContainer container) {
        return container.Item.Group.VisibleIndex == 0 && container.Item.VisibleIndex == 0;
    }
      
    void PrepareMasterSplitter() {
        var rootHolder = Page.Master.Master.FindControl("RootHolder");
        var splitter = ((ASPxSplitter)rootHolder.FindControl("LayoutSplitter"));
        splitter.GetPaneByName("LeftPane").Size = GetNavigationAreaSize();

        var pane = splitter.GetPaneByName("MainPane");
        pane.PaneStyle.BorderLeft.BorderWidth = 1;
        pane.ScrollBars = ScrollBars.Auto;
    }

    int GetNavigationAreaSize() { 
        var theme = Utils.CurrentTheme;
        if(theme == "Metropolis" || theme == "MetropolisBlue")
            return 345;
        return 300;
    }

    void ImportCalendarData() {
        Scheduler.DataBind();
        new iCalendarImporter(Scheduler.Storage).Import(Server.MapPath("~/App_Data/CalendarData.ics"));
    }

    ISet<string> _selectedResourceNameCache;
    ISet<string> FindSelectedResourceNames() {
        var result = new HashSet<string>();
        for(int i = 0; i < ResourceNavBar.Items.Count; i++) {
            var checkbox = ResourceNavBar.Items[i].FindControl("CheckBox") as ASPxCheckBox;
            if(checkbox != null && checkbox.Checked)
                result.Add(checkbox.Text);
        }
        return result;
    }

}