HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/RMourik/bassol.nl/CMS/CMSModules/EventManager/Controls/EventAttendees_Edit.ascx.cs
using System;
using System.Linq;

using CMS.DataEngine;
using CMS.EventManager;
using CMS.Helpers;
using CMS.DocumentEngine;
using CMS.Localization;
using CMS.Membership;
using CMS.UIControls;
using CMS.ExtendedControls;

using TreeNode = CMS.DocumentEngine.TreeNode;

public partial class CMSModules_EventManager_Controls_EventAttendees_Edit : CMSAdminControl
{
    #region "Variables"

    protected int mAttendeeID = 0;
    private bool error;
    EventAttendeeInfo eai;
    private bool redirectAfterInsert = true;

    #endregion


    #region "Properties"

    /// <summary>
    /// Attendees' EventID.
    /// </summary>
    public int EventID
    {
        get;
        set;
    }


    /// <summary>
    /// Saved.
    /// </summary>
    public bool Saved
    {
        get;
        set;
    }


    /// <summary>
    /// Attendee ID.
    /// </summary>
    public int AttendeeID
    {
        get
        {
            return mAttendeeID;
        }
        set
        {
            mAttendeeID = value;
        }
    }


    /// <summary>
    /// After new item is created this stores its ID.
    /// </summary>
    public int NewItemID
    {
        get;
        set;
    }


    /// <summary>
    /// Messages placeholder
    /// </summary>
    public override MessagesPlaceHolder MessagesPlaceHolder
    {
        get
        {
            return plcMess;
        }
    }


    /// <summary>
    /// Indicates whether the control should redirect after creating a new attendee
    /// or just refresh breadcrumbs.
    /// </summary>
    public bool RedirectAfterInsert
    {
        get
        {
            return redirectAfterInsert;
        }
        set
        {
            redirectAfterInsert = value;
        }
    }

    #endregion


    #region "Methods"

    protected void Page_Load(object sender, EventArgs e)
    {
        lblFirstName.Text = GetString("Event_Attendee_Edit.lblFirstName");
        lblLastName.Text = GetString("Event_Attendee_Edit.lblLastName");
        lblPhone.Text = GetString("Event_Attendee_Edit.lblPhone");

        rfvEmail.Text = GetString("Event_Attendee_Edit.rfvEmail");

        // Load current attendee
        eai = AttendeeID > 0 ? EventAttendeeInfoProvider.GetEventAttendeeInfo(AttendeeID) : new EventAttendeeInfo();
        EditedObject = eai;

        if (Saved)
        {
            ShowChangesSaved();
        }
    }


    /// <summary>
    /// Checks if current event (EventID) exist and hides control content if not.
    /// Returns true if event exist, false otherwise.
    /// </summary>
    private bool CheckIfEventExists()
    {
        TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);
        TreeNode nd = tree.SelectSingleNode(EventID, LocalizationContext.PreferredCultureCode, tree.CombineWithDefaultCulture, false);
        if (nd == null)
        {
            ShowError(GetString("editedobject.notexists"));
            pnlContent.Visible = false;
            return false;
        }
        return true;
    }


    /// <summary>
    /// Loads data for edit form.
    /// </summary>
    public void LoadEditData()
    {
        // Check if current event exist
        if (!CheckIfEventExists())
        {
            return;
        }

        if (!error)
        {
            if ((eai != null) && (eai.AttendeeID != AttendeeID))
            {
                // Reload current attendee
                eai = AttendeeID > 0 ? EventAttendeeInfoProvider.GetEventAttendeeInfo(AttendeeID) : new EventAttendeeInfo();
                EditedObject = eai;
            }

            if ((eai != null) && (eai.AttendeeID > 0))
            {
                txtFirstName.Text = eai.AttendeeFirstName;
                txtLastName.Text = eai.AttendeeLastName;
                txtEmail.Text = eai.AttendeeEmail;
                txtPhone.Text = eai.AttendeePhone;

                // Show warning if duplicity email was used
                bool isDuplicit = EventAttendeeInfoProvider.GetEventAttendees().Where("AttendeeEventNodeID", QueryOperator.Equals, eai.AttendeeEventNodeID)
                    .And().Where("AttendeeEmail", QueryOperator.Equals, eai.AttendeeEmail)
                    .And().Where("AttendeeID", QueryOperator.NotEquals, eai.AttendeeID).TopN(1).Any();
                if (isDuplicit)
                {
                    ShowWarning(GetString("eventmanager.attendeeregisteredwarning"));
                }

                if (!URLHelper.IsPostback())
                {
                    if (Saved)
                    {
                        ShowChangesSaved();
                    }
                }
            }
            else
            {
                txtFirstName.Text = String.Empty;
                txtLastName.Text = String.Empty;
                txtEmail.Text = String.Empty;
                txtPhone.Text = String.Empty;
            }
        }
    }


    protected void btnOK_Click(object sender, EventArgs e)
    {
        // Check if current event exist
        if (!CheckIfEventExists())
        {
            return;
        }

        // Check 'Modify' permission        
        if (!CheckPermissions("cms.eventmanager", "Modify"))
        {
            return;
        }

        txtEmail.Text = txtEmail.Text.Trim();

        // Validate fields
        string errorMessage = new Validator()
            .NotEmpty(txtEmail.Text, rfvEmail.ErrorMessage)
            .IsEmail(txtEmail.Text, GetString("Event_Attendee_Edit.IncorectEmailFormat"))
            .Result;

        // Update database
        if (errorMessage == "")
        {
            // Indicates new attendee
            bool isNew = false;

            if (AttendeeID <= 0)
            {
                eai.AttendeeEventNodeID = EventID;
                isNew = true;
            }
            else
            {
                eai = EventAttendeeInfoProvider.GetEventAttendeeInfo(AttendeeID);
            }

            if (eai != null)
            {
                eai.AttendeeFirstName = txtFirstName.Text;
                eai.AttendeeLastName = txtLastName.Text;
                eai.AttendeeEmail = txtEmail.Text;
                eai.AttendeePhone = txtPhone.Text;
                EventAttendeeInfoProvider.SetEventAttendeeInfo(eai);

                // If new item store new attendeeID .. used in post back situations
                if (isNew)
                {
                    NewItemID = eai.AttendeeID;
                    if (RedirectAfterInsert)
                    {
                        string redirectTo = "~/CMSModules/EventManager/Tools/Events_Attendee_Edit.aspx";
                        redirectTo = URLHelper.AddParameterToUrl(redirectTo, "eventId", EventID.ToString());
                        redirectTo = URLHelper.AddParameterToUrl(redirectTo, "attendeeId", NewItemID.ToString());
                        redirectTo = URLHelper.AddParameterToUrl(redirectTo, "saved", "1");
                        URLHelper.Redirect(redirectTo);
                    }
                    else
                    {
                        RefreshBreadCrumbs();
                        ShowChangesSaved();
                    }
                }
                else
                {
                    RefreshBreadCrumbs();
                    ShowChangesSaved();
                }
            }
            else
            {
                errorMessage = GetString("general.invalidid");
            }
        }

        if (!String.IsNullOrEmpty(errorMessage))
        {
            ShowError(errorMessage);
        }
    }



    /// <summary>
    /// Shows the specified error message, optionally with a tooltip text.
    /// </summary>
    /// <param name="text">Error message text</param>
    /// <param name="description">Additional description</param>
    /// <param name="tooltipText">Tooltip text</param>
    /// <param name="persistent">Indicates if the message is persistent</param>
    public override void ShowError(string text, string description = null, string tooltipText = null, bool persistent = true)
    {
        base.ShowError(text, description, tooltipText, persistent);
        error = true;
    }


    private void RefreshBreadCrumbs()
    {
        CMSPage cmsPage = Page as CMSPage;
        if ((cmsPage != null) && (cmsPage.CurrentMaster != null) && (cmsPage.PageTitle != null))
        {
            var breadcrumbs = cmsPage.PageBreadcrumbs.Items;
            if ((breadcrumbs != null) && breadcrumbs.Any())
            {
                breadcrumbs[breadcrumbs.Count - 1].Text = txtEmail.Text.Trim();
            }
        }
    }

    #endregion
}