/// <summary>
        /// Handles the items being bound to the datalist control. In this method we merge the data with the
        /// template defined for this control to produce the result to display to the user
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void listEmployees_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
        {
            var now = HttpContext.Current.Timestamp;

            // e.Item.DataItem is of EmployeeListInfo class
            var employee = (IEmployee)e.Item.DataItem;

            // find controls in DataList item template
            var linkEdit     = (HyperLink)e.Item.FindControl("linkEdit");
            var imageEdit    = (Image)e.Item.FindControl("imageEdit");
            var imagePhoto   = (Image)e.Item.FindControl("imagePhoto");
            var linkDetails  = (HyperLink)e.Item.FindControl("linkDetails");
            var linkFullName = (HyperLink)e.Item.FindControl("linkFullName");
            var labelAcademicDegreeAndTitle = (Label)e.Item.FindControl("labelAcademicDegreeAndTitle");
            var labelPositions     = (Label)e.Item.FindControl("labelPositions");
            var labelPhones        = (Label)e.Item.FindControl("labelPhones");
            var linkEmail          = (HyperLink)e.Item.FindControl("linkEmail");
            var linkSecondaryEmail = (HyperLink)e.Item.FindControl("linkSecondaryEmail");
            var linkWebSite        = (HyperLink)e.Item.FindControl("linkWebSite");
            var linkUserProfile    = (HyperLink)e.Item.FindControl("linkUserProfile");

            // edit link
            if (IsEditable)
            {
                if (Null.IsNull(Settings.DivisionID))
                {
                    linkEdit.NavigateUrl = EditUrl("employee_id", employee.EmployeeID.ToString(), "EditEmployee");
                }
                else
                {
                    linkEdit.NavigateUrl = EditUrl("employee_id", employee.EmployeeID.ToString(),
                                                   "EditEmployee", "division_id", Settings.DivisionID.ToString());
                }
            }

            // make edit link visible in edit mode
            linkEdit.Visible  = IsEditable;
            imageEdit.Visible = IsEditable;

            // mark non-published employees, as they visible only to editors
            if (!employee.IsPublished(now))
            {
                if (e.Item.ItemType == ListItemType.Item)
                {
                    e.Item.CssClass = listEmployees.ItemStyle.CssClass + " _nonpublished";
                }
                else
                {
                    e.Item.CssClass = listEmployees.AlternatingItemStyle.CssClass + " _nonpublished";
                }
            }

            // fill the controls

            // employee photo
            EmployeePhotoLogic.Bind(employee, imagePhoto, Settings.PhotoWidth, true);

            var employeeDetailsUrl = UrlHelper.AdjustPopupUrl(
                UniversityUrlHelper.IESafeEditUrl(this, Request, "employee_id", employee.EmployeeID.ToString(), "EmployeeDetails"),
                responseRedirect: false
                );

            // photo fallback
            if (string.IsNullOrWhiteSpace(imagePhoto.ImageUrl))
            {
                linkDetails.Visible = false;
            }
            else
            {
                // link to employee details
                linkDetails.NavigateUrl = employeeDetailsUrl;
            }

            // employee fullname
            linkFullName.Text        = UniversityFormatHelper.FullName(employee.FirstName, employee.LastName, employee.OtherName);
            linkFullName.NavigateUrl = employeeDetailsUrl;

            // get current employee title achievements
            var achievements = employee.Achievements
                               .Select(ea => new EmployeeAchievementViewModel(ea, ViewModelContext))
                               .Where(ach => ach.IsTitle);

            var titles = achievements.Select(ach => UniversityFormatHelper.FormatShortTitle(ach.ShortTitle, ach.Title, ach.TitleSuffix).FirstCharToLower());

            // employee title achievements
            var strTitles = FormatHelper.JoinNotNullOrEmpty(", ", titles);

            if (!string.IsNullOrWhiteSpace(strTitles))
            {
                labelAcademicDegreeAndTitle.Text = "&nbsp;&ndash; " + strTitles;
            }
            else
            {
                labelAcademicDegreeAndTitle.Visible = false;
            }

            // phones
            var phones = FormatHelper.JoinNotNullOrEmpty(", ", employee.Phone, employee.CellPhone);

            if (!string.IsNullOrWhiteSpace(phones))
            {
                labelPhones.Text = phones;
            }
            else
            {
                labelPhones.Visible = false;
            }

            // email
            if (!string.IsNullOrWhiteSpace(employee.Email))
            {
                linkEmail.NavigateUrl = "mailto:" + employee.Email;
                linkEmail.Text        = employee.Email;
            }
            else
            {
                linkEmail.Visible = false;
            }

            // secondary email
            if (!string.IsNullOrWhiteSpace(employee.SecondaryEmail))
            {
                linkSecondaryEmail.NavigateUrl = "mailto:" + employee.SecondaryEmail;
                linkSecondaryEmail.Text        = employee.SecondaryEmail;
            }
            else
            {
                linkSecondaryEmail.Visible = false;
            }

            // webSite
            if (!string.IsNullOrWhiteSpace(employee.WebSite))
            {
                linkWebSite.NavigateUrl = UniversityFormatHelper.FormatWebSiteUrl(employee.WebSite);
                linkWebSite.Text        = UniversityFormatHelper.FormatWebSiteLabel(employee.WebSite, employee.WebSiteLabel);
            }
            else
            {
                linkWebSite.Visible = false;
            }

            // profile link
            if (employee.UserID != null && !Null.IsNull(employee.UserID.Value))
            {
                linkUserProfile.NavigateUrl = Globals.UserProfileURL(employee.UserID.Value);
                // TODO: Replace profile text with something more sane
                linkUserProfile.Text = Localization.GetString("VisitProfile.Text", LocalResourceFile);
            }
            else
            {
                linkUserProfile.Visible = false;
            }

            // get current employee occupied positions, grouped
            var gops = employee.Positions
                       .OrderByDescending(op => op.DivisionID == Settings.DivisionID)
                       .ThenByDescending(op => op.Position.Weight)
                       .GroupByDivision(HttpContext.Current.Timestamp, IsEditable);

            // build positions value
            var positionsVisible = false;

            if (!gops.IsNullOrEmpty())
            {
                var strOps = string.Empty;
                foreach (var gop in gops)
                {
                    var cssClass = !gop.OccupiedPosition.Division.IsPublished(HttpContext.Current.Timestamp)
                        ? " class=\"u8y-not-published-element\"" : string.Empty;
                    strOps = FormatHelper.JoinNotNullOrEmpty("; ", strOps,
                                                             $"<span{cssClass}>"
                                                             // gop.Title is a comma-separated list of grouped positions
                                                             + FormatHelper.JoinNotNullOrEmpty(": ", gop.Title,
                                                             // TODO: Move to the module display settings?
                                                             // don't display division title also for current division
                                                                                               (gop.OccupiedPosition.DivisionID != Settings.DivisionID) ? gop.OccupiedPosition.FormatDivisionLink(this) : string.Empty)
                                                             + "</span>");
                }

                labelPositions.Text = $"<label>{LocalizeString ("OccupiedPositions.Text")}</label> {strOps}";
                positionsVisible    = true;
            }
            labelPositions.Visible = positionsVisible;
        }
Example #2
0
        void BindContacts(IEmployee employee)
        {
            var displayContacts = false;

            if (!string.IsNullOrWhiteSpace(employee.Phone))
            {
                labelPhone.Text = employee.Phone;
                displayContacts = true;
            }
            else
            {
                labelPhone.Visible = false;
            }

            if (!string.IsNullOrWhiteSpace(employee.CellPhone))
            {
                labelCellPhone.Text = employee.CellPhone;
                displayContacts     = true;
            }
            else
            {
                labelCellPhone.Visible = false;
            }

            if (!string.IsNullOrWhiteSpace(employee.Fax))
            {
                labelFax.Text   = string.Format(Localization.GetString("Fax.Format", LocalResourceFile), employee.Fax);
                displayContacts = true;
            }
            else
            {
                labelFax.Visible = false;
            }

            if (!string.IsNullOrWhiteSpace(employee.Messenger))
            {
                displayContacts     = true;
                labelMessenger.Text = employee.Messenger;
            }
            else
            {
                labelMessenger.Visible = false;
            }

            if (!string.IsNullOrWhiteSpace(employee.Email))
            {
                linkEmail.NavigateUrl = "mailto:" + employee.Email;
                linkEmail.Text        = employee.Email;
                displayContacts       = true;
            }
            else
            {
                linkEmail.Visible = false;
            }

            if (!string.IsNullOrWhiteSpace(employee.SecondaryEmail))
            {
                linkSecondaryEmail.NavigateUrl = "mailto:" + employee.SecondaryEmail;
                linkSecondaryEmail.Text        = employee.SecondaryEmail;
                displayContacts = true;
            }
            else
            {
                linkSecondaryEmail.Visible = false;
            }

            if (!string.IsNullOrWhiteSpace(employee.WebSite))
            {
                linkWebSite.NavigateUrl = UniversityFormatHelper.FormatWebSiteUrl(employee.WebSite);
                linkWebSite.Text        = UniversityFormatHelper.FormatWebSiteLabel(employee.WebSite, employee.WebSiteLabel);
                displayContacts         = true;
            }
            else
            {
                linkWebSite.Visible = false;
            }

            if (employee.UserID != null && !Null.IsNull(employee.UserID.Value))
            {
                linkUserProfile.NavigateUrl = Globals.UserProfileURL(employee.UserID.Value);
                displayContacts             = true;
            }
            else
            {
                linkUserProfile.Visible = false;
            }

            var workingPlaceAndHours = FormatHelper.JoinNotNullOrEmpty(", ", employee.WorkingPlace, employee.WorkingHours);

            if (!string.IsNullOrWhiteSpace(workingPlaceAndHours))
            {
                labelWorkingPlaceAndHours.Text = workingPlaceAndHours;
                displayContacts = true;
            }
            else
            {
                labelWorkingPlaceAndHours.Visible = false;
            }

            panelContacts.Visible = displayContacts;
        }