Exemple #1
0
 public void AfterCreate()
 {
     if (!ItemsState.Any())
     {
         ItemsState.Add(new SimpleSummaryItemState {
             Order = 1
         });
         ItemsState.Add(new SimpleSummaryItemState {
             Order = 2
         });
     }
 }
Exemple #2
0
        internal async Task LoadPostsAsync()
        {
            this.PostsState = ItemsState.Loading;
            this.PostsState = await PresenterExtensions.RefreshItemsAsync <PostPresenter, PostModel>(this.Posts,
                                                                                                     this.host.RunQueryAsync(new ThreadPostsQuery(this.Model.Id)),
                                                                                                     m => new PostPresenter(this.host)
            {
                Model = m
            });

            this.CurrentPost = this.Posts.FirstOrDefault();
        }
Exemple #3
0
    //linkList
    private void Add2ShowListFrom(ItemsState state, GameObject go)
    {
        if (state == ItemsState.Tail)
        {
            showItemGoLinkList.AddLast(go);
        }
        else if (state == ItemsState.Head)
        {
            showItemGoLinkList.AddFirst(go);
        }

        //Debug.LogError(showItemGoLinkList.Count);
    }
Exemple #4
0
        internal async Task LoadThreadsAsync()
        {
            var threadId = this.CurrentThread?.Model.Id;

            this.ThreadsState = ItemsState.Loading;
            this.ThreadsState = await PresenterExtensions.RefreshItemsAsync(
                this.Threads,
                this.host.RunQueryAsync(GetThreadsQuery()),
                m => new ThreadPresenter(this.host)
            {
                Model = m
            });

            this.CurrentThread =
                this.Threads.FirstOrDefault(thread => thread.Model.Id == threadId) ??
                this.Threads.FirstOrDefault(thread => thread.IsNew) ??
                this.Threads.FirstOrDefault();
        }
Exemple #5
0
    private void RemoveShowListFrom(ItemsState state)
    {
        if (showItemGoLinkList.Count <= 0)
        {
            return;
        }
        GameObject go = null;

        if (state == ItemsState.Tail)
        {
            go = showItemGoLinkList.Last.Value;
            showItemGoLinkList.RemoveLast();
        }
        else if (state == ItemsState.Head)
        {
            go = showItemGoLinkList.First.Value;
            showItemGoLinkList.RemoveFirst();
        }
        AddToResPool(go);
        //Debug.LogError(showItemGoLinkList.Count);
    }
Exemple #6
0
        /// <summary>
        /// Shows the item attributes.
        /// </summary>
        private void ShowItemAttributes()
        {
            var eventCalendarList = new List <int> {
                (_calendarId ?? 0)
            };

            eventCalendarList.AddRange(cblCalendars.SelectedValuesAsInt);

            wpAttributes.Visible = false;
            phAttributes.Controls.Clear();

            using (var rockContext = new RockContext())
            {
                var eventCalendarService = new EventCalendarService(rockContext);

                foreach (int eventCalendarId in eventCalendarList.Distinct())
                {
                    EventCalendarItem eventCalendarItem = ItemsState.FirstOrDefault(i => i.EventCalendarId == eventCalendarId);
                    if (eventCalendarItem == null)
                    {
                        eventCalendarItem = new EventCalendarItem();
                        eventCalendarItem.EventCalendarId = eventCalendarId;
                        ItemsState.Add(eventCalendarItem);
                    }

                    eventCalendarItem.LoadAttributes();

                    if (eventCalendarItem.Attributes.Count > 0)
                    {
                        wpAttributes.Visible = true;
                        phAttributes.Controls.Add(new LiteralControl(string.Format("<h3>{0}</h3>", eventCalendarService.Get(eventCalendarId).Name)));
                        PlaceHolder phcalAttributes = new PlaceHolder();
                        Rock.Attribute.Helper.AddEditControls(eventCalendarItem, phAttributes, true, BlockValidationGroup);
                    }
                }
            }
        }
Exemple #7
0
 public static void SetItemsState(DependencyObject obj, ItemsState value)
 {
     obj.SetValue(ItemsStateProperty, value);
 }
Exemple #8
0
        /// <summary>
        /// Handles the Click event of the btnSave control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void btnSave_Click(object sender, EventArgs e)
        {
            EventItem eventItem = null;

            using (var rockContext = new RockContext())
            {
                var validationMessages = new List <string>();

                var eventItemService         = new EventItemService(rockContext);
                var eventCalendarItemService = new EventCalendarItemService(rockContext);
                var eventItemAudienceService = new EventItemAudienceService(rockContext);

                int eventItemId = hfEventItemId.ValueAsInt();
                if (eventItemId != 0)
                {
                    eventItem = eventItemService
                                .Queryable("EventItemAudiences,EventItemOccurrences.Linkages,EventItemOccurrences")
                                .Where(i => i.Id == eventItemId)
                                .FirstOrDefault();
                }

                if (eventItem == null)
                {
                    eventItem = new EventItem();
                    eventItemService.Add(eventItem);
                }

                eventItem.Name     = tbName.Text;
                eventItem.IsActive = cbIsActive.Checked;

                if (!eventItem.IsApproved && cbIsApproved.Checked)
                {
                    eventItem.ApprovedByPersonAliasId = CurrentPersonAliasId;
                    eventItem.ApprovedOnDateTime      = RockDateTime.Now;
                }

                eventItem.IsApproved = cbIsApproved.Checked;
                if (!eventItem.IsApproved)
                {
                    eventItem.ApprovedByPersonAliasId = null;
                    eventItem.ApprovedByPersonAlias   = null;
                    eventItem.ApprovedOnDateTime      = null;
                }

                eventItem.Description = htmlDescription.Text;
                eventItem.Summary     = tbSummary.Text;
                eventItem.DetailsUrl  = tbDetailUrl.Text;

                int?orphanedImageId = null;
                if (eventItem.PhotoId != imgupPhoto.BinaryFileId)
                {
                    orphanedImageId   = eventItem.PhotoId;
                    eventItem.PhotoId = imgupPhoto.BinaryFileId;
                }

                // Remove any audiences that were removed in the UI
                foreach (var eventItemAudience in eventItem.EventItemAudiences.Where(r => !AudiencesState.Contains(r.DefinedValueId)).ToList())
                {
                    eventItem.EventItemAudiences.Remove(eventItemAudience);
                    eventItemAudienceService.Delete(eventItemAudience);
                }

                // Add or Update audiences from the UI
                foreach (int audienceId in AudiencesState)
                {
                    EventItemAudience eventItemAudience = eventItem.EventItemAudiences.Where(a => a.DefinedValueId == audienceId).FirstOrDefault();
                    if (eventItemAudience == null)
                    {
                        eventItemAudience = new EventItemAudience();
                        eventItemAudience.DefinedValueId = audienceId;
                        eventItem.EventItemAudiences.Add(eventItemAudience);
                    }
                }

                // remove any calendar items that removed in the UI
                var calendarIds = new List <int>();
                calendarIds.AddRange(cblCalendars.SelectedValuesAsInt);
                var uiCalendarGuids = ItemsState.Where(i => calendarIds.Contains(i.EventCalendarId)).Select(a => a.Guid);
                foreach (var eventCalendarItem in eventItem.EventCalendarItems.Where(a => !uiCalendarGuids.Contains(a.Guid)).ToList())
                {
                    // Make sure user is authorized to remove calendar (they may not have seen every calendar due to security)
                    if (UserCanEdit || eventCalendarItem.EventCalendar.IsAuthorized(Authorization.EDIT, CurrentPerson))
                    {
                        eventItem.EventCalendarItems.Remove(eventCalendarItem);
                        eventCalendarItemService.Delete(eventCalendarItem);
                    }
                }

                // Add or Update calendar items from the UI
                foreach (var calendar in ItemsState.Where(i => calendarIds.Contains(i.EventCalendarId)))
                {
                    var eventCalendarItem = eventItem.EventCalendarItems.Where(a => a.Guid == calendar.Guid).FirstOrDefault();
                    if (eventCalendarItem == null)
                    {
                        eventCalendarItem = new EventCalendarItem();
                        eventItem.EventCalendarItems.Add(eventCalendarItem);
                    }

                    eventCalendarItem.CopyPropertiesFrom(calendar);
                }

                if (!eventItem.EventCalendarItems.Any())
                {
                    validationMessages.Add("At least one calendar is required.");
                }

                if (!Page.IsValid)
                {
                    return;
                }

                if (!eventItem.IsValid)
                {
                    // Controls will render the error messages
                    return;
                }

                if (validationMessages.Any())
                {
                    nbValidation.Text    = "Please correct the following:<ul><li>" + validationMessages.AsDelimited("</li><li>") + "</li></ul>";
                    nbValidation.Visible = true;
                    return;
                }

                // use WrapTransaction since SaveAttributeValues does it's own RockContext.SaveChanges()
                rockContext.WrapTransaction(() =>
                {
                    rockContext.SaveChanges();

                    foreach (EventCalendarItem eventCalendarItem in eventItem.EventCalendarItems)
                    {
                        eventCalendarItem.LoadAttributes();
                        Rock.Attribute.Helper.GetEditValues(phAttributes, eventCalendarItem);
                        eventCalendarItem.SaveAttributeValues();
                    }

                    SaveAttributes(new EventItemOccurrence().TypeId, "EventItemId", eventItem.Id.ToString(), EventOccurrenceAttributesState, rockContext);

                    if (orphanedImageId.HasValue)
                    {
                        BinaryFileService binaryFileService = new BinaryFileService(rockContext);
                        var binaryFile = binaryFileService.Get(orphanedImageId.Value);
                        if (binaryFile != null)
                        {
                            // marked the old images as IsTemporary so they will get cleaned up later
                            binaryFile.IsTemporary = true;
                            rockContext.SaveChanges();
                        }
                    }
                });

                // Redirect back to same page so that item grid will show any attributes that were selected to show on grid
                var qryParams = new Dictionary <string, string>();
                if (_calendarId.HasValue)
                {
                    qryParams["EventCalendarId"] = _calendarId.Value.ToString();
                }

                qryParams["EventItemId"] = eventItem.Id.ToString();
                NavigateToPage(RockPage.Guid, qryParams);
            }
        }
        protected override void Deserialize(XmlNode node)
        {
            base.Deserialize(node);
            PresentationDate = DateTime.MinValue;
            FlightDatesStart = DateTime.MinValue;
            FlightDatesEnd   = DateTime.MinValue;

            foreach (XmlNode childNode in node.ChildNodes)
            {
                bool     tempBool = false;
                DateTime tempDateTime;
                decimal  tempDecimal = 0;
                switch (childNode.Name)
                {
                case "ShowAdvertiser":
                    if (bool.TryParse(childNode.InnerText, out tempBool))
                    {
                        ShowAdvertiser = tempBool;
                    }
                    break;

                case "ShowDecisionMaker":
                    if (bool.TryParse(childNode.InnerText, out tempBool))
                    {
                        ShowDecisionMaker = tempBool;
                    }
                    break;

                case "ShowPresentationDate":
                    if (bool.TryParse(childNode.InnerText, out tempBool))
                    {
                        ShowPresentationDate = tempBool;
                    }
                    break;

                case "ShowFlightDates":
                    if (bool.TryParse(childNode.InnerText, out tempBool))
                    {
                        ShowFlightDates = tempBool;
                    }
                    break;

                case "ShowMonthly":
                    if (bool.TryParse(childNode.InnerText, out tempBool))
                    {
                        ShowMonthly = tempBool;
                    }
                    break;

                case "ShowTotal":
                    if (bool.TryParse(childNode.InnerText, out tempBool))
                    {
                        ShowTotal = tempBool;
                    }
                    break;

                case "TableOutput":
                    if (bool.TryParse(childNode.InnerText, out tempBool))
                    {
                        TableOutput = tempBool;
                    }
                    break;

                case "SlideHeader":
                    SlideHeader = childNode.InnerText;
                    break;

                case "Advertiser":
                    Advertiser = childNode.InnerText;
                    break;

                case "DecisionMaker":
                    DecisionMaker = childNode.InnerText;
                    break;

                case "PresentationDate":
                    if (DateTime.TryParse(childNode.InnerText, out tempDateTime))
                    {
                        PresentationDate = tempDateTime;
                    }
                    break;

                case "FlightDatesStart":
                    if (DateTime.TryParse(childNode.InnerText, out tempDateTime))
                    {
                        FlightDatesStart = tempDateTime;
                    }
                    break;

                case "FlightDatesEnd":
                    if (DateTime.TryParse(childNode.InnerText, out tempDateTime))
                    {
                        FlightDatesEnd = tempDateTime;
                    }
                    break;

                case "MonthlyValue":
                    if (Decimal.TryParse(childNode.InnerText, out tempDecimal))
                    {
                        MonthlyValue = tempDecimal;
                    }
                    break;

                case "TotalValue":
                    if (Decimal.TryParse(childNode.InnerText, out tempDecimal))
                    {
                        TotalValue = tempDecimal;
                    }
                    break;

                case "Items":
                    ItemsState.Clear();
                    foreach (XmlNode itemNode in childNode.ChildNodes)
                    {
                        var item = new SimpleSummaryItemState();
                        item.Deserialize(itemNode);
                        ItemsState.Add(item);
                    }
                    ItemsState.Sort((x, y) => x.Order.CompareTo(y.Order));
                    break;

                case "ContractSettings":
                    ContractSettings.Deserialize(childNode);
                    break;
                }
            }
        }