private void PrePopulateModifiedTicket(Ticket modifiedTicket)
        {
            var o   = ChangeTracker.Entries <Ticket>().Single(e => e.Entity.TicketId == modifiedTicket.TicketId);
            var now = DateTime.Now;

            modifiedTicket.LastUpdateBy   = SecurityProvider.CurrentUserId;
            modifiedTicket.LastUpdateDate = now;

            if (o.State != EntityState.Added)//can't access orig values for new entities
            {
                var origTicket = (Ticket)o.OriginalValues.ToObject();
                if (modifiedTicket.TicketStatus != origTicket.TicketStatus)
                //if status change, force update to status by/date
                {
                    modifiedTicket.CurrentStatusDate  = now;
                    modifiedTicket.CurrentStatusSetBy = SecurityProvider.CurrentUserId;
                }
                if (modifiedTicket.TagList != origTicket.TagList)
                {
                    //var tagsToDie = origTicket.TicketTags.Select(ot => ot.TicketTagId);
                    var tagNames   = modifiedTicket.TagList.Split(',');
                    var tagsInList = modifiedTicket.TicketTags.Where(ot => tagNames.Contains(ot.TagName)).ToArray();
                    var tagsToKill = modifiedTicket.TicketTags.Except(tagsInList).ToArray();
                    var newTags    = tagNames
                                     .Where(tagName => tagsInList.Select(tagInList => tagInList.TagName).Contains(tagName))
                                     .Select(nt => new TicketTag
                    {
                        TagName = nt,
                    });
                    TicketTags.RemoveRange(tagsToKill);
                    modifiedTicket.TicketTags.AddRange(newTags);
                }
            }
            modifiedTicket.EnsureSubscribers();
        }
Exemple #2
0
 public void CloseView()
 {
     SelectedItem = null;
     SelectedItemPortions.Clear();
     SelectedItemPropertyGroups.Clear();
     SelectedItemGroupedPropertyItems.Clear();
     TicketTags.Clear();
     SelectedTicketTag = null;
 }
Exemple #3
0
        private void OnAddTicketTagExecuted(string obj)
        {
            var ti = new TicketTag {
                Name = Resources.NewTag
            };

            Model.TicketTags.Add(ti);
            TicketTags.Add(new TicketTagViewModel(ti));
        }
        private void OnAddTicketTagExecuted(string obj)
        {
            var ti = new TicketTag {
                Name = Resources.NewTag
            };

            Model.TicketTags.Add(ti);
            TicketTags.Add(new TicketTagViewModel(ti));
            ti.SortOrder = Model.TicketTags.Any() ? Model.TicketTags.Max(x => x.SortOrder) + 1 : 0;
        }
        public bool TicketTagSelected(Ticket currentTicket, TicketTagGroup tagGroup)
        {
            SelectedTicket = currentTicket;

            IsFreeTagEditorVisible = tagGroup.FreeTagging;
            SelectedTicketTagData  = tagGroup;
            List <TicketTag> ticketTags;

            if (IsFreeTagEditorVisible)
            {
                ticketTags = _cacheService.GetTicketTagGroupById(tagGroup.Id)
                             .TicketTags.OrderBy(x => x.Name).ToList();
            }
            else
            {
                ticketTags = _applicationState.GetTicketTagGroups().Where(
                    x => x.Name == tagGroup.Name).SelectMany(x => x.TicketTags).ToList();
            }

            if (tagGroup.FreeTagging)
            {
                ticketTags.Sort(AlphanumericComparator);
            }
            else
            {
                ticketTags.Sort((x, y) => x.SortOrder.CompareTo(y.SortOrder));
            }

            TicketTags.AddRange(ticketTags);

            if (SelectedTicket.IsTaggedWith(tagGroup.Name))
            {
                if (TicketTags.Count == 1)
                {
                    UpdateTicketTag(SelectedTicket, SelectedTicketTagData, TicketTag.Empty);
                    return(true);
                }
                if (!tagGroup.ForceValue)
                {
                    TicketTags.Add(TicketTag.Empty);
                }
            }

            if (TicketTags.Count == 1 && !IsFreeTagEditorVisible)
            {
                UpdateTicketTag(SelectedTicket, SelectedTicketTagData, TicketTags[0]);
                return(true);
            }

            RaisePropertyChanged(nameof(TagColumnCount));
            RaisePropertyChanged(nameof(IsFreeTagEditorVisible));
            RaisePropertyChanged(nameof(FilteredTextBoxType));
            return(false);
        }
 private void OnDeleteTicketTagExecuted(string obj)
 {
     if (SelectedTicketTag == null)
     {
         return;
     }
     if (SelectedTicketTag.Model.Id > 0)
     {
         Workspace.Delete(SelectedTicketTag.Model);
     }
     Model.TicketTags.Remove(SelectedTicketTag.Model);
     TicketTags.Remove(SelectedTicketTag);
 }
 private void ResetValues(TicketViewModel selectedTicket)
 {
     SelectedTicket = null;
     SelectedItem   = null;
     SelectedItemPortions.Clear();
     SelectedItemPropertyGroups.Clear();
     SelectedItemGroupedPropertyItems.Clear();
     Reasons.Clear();
     TicketTags.Clear();
     _showExtraPropertyEditor = false;
     _showTicketNoteEditor    = false;
     _showFreeTagEditor       = false;
     _removeModifier          = false;
     SetSelectedTicket(selectedTicket);
 }
Exemple #8
0
        /// <summary>
        /// Tag's add
        /// </summary>
        /// <param name="addTag">String Tag</param>
        /// <returns>int: new id tag or error -1</returns>
        private int TagsAdd(string addTag)
        {
            using (TicketSoftjournContext myDatabase = new TicketSoftjournContext())
            {
                var tag = myDatabase.TicketTags.Where(t => t.TagTitle.ToLower() == addTag.ToLower()).FirstOrDefault();
                if (tag != null)
                {
                    //if exists
                    return(tag.TagId);
                }
                else
                {
                    try
                    {
                        int newId;
                        var selectId = myDatabase.TicketTags.Select(x => x.TagId).FirstOrDefault();

                        //if exists = db query+1, else 1
                        newId = (selectId == 0) ? 1 : myDatabase.TicketTags.OrderByDescending(x => x.TagId).Select(x => x.TagId).First() + 1;


                        //add tag
                        TicketTags tagDb = new TicketTags
                        {
                            TagId    = newId,
                            TagTitle = addTag.ToLower()
                        };
                        myDatabase.TicketTags.Add(tagDb);
                        myDatabase.SaveChanges();


                        return(newId);
                    }
                    catch
                    {
                        //error returns -1
                        return(-1);
                    }
                }
            }
        }
        protected override string GetSaveErrorMessage()
        {
            foreach (var ticketTag in TicketTags)
            {
                try
                {
                    var str = ticketTag.Model.Name;

                    if (Model.IsDecimal)
                    {
                        str = Convert.ToDecimal(ticketTag.Model.Name).ToString(CultureInfo.CurrentCulture);
                    }

                    if (Model.IsInteger)
                    {
                        str = Convert.ToInt32(ticketTag.Model.Name).ToString(CultureInfo.CurrentCulture);
                    }

                    if (str != ticketTag.Model.Name)
                    {
                        return(Resources.NumericTagsShouldBeNumbersErrorMessage);
                    }
                }
                catch (FormatException)
                {
                    return(Resources.NumericTagsShouldBeNumbersErrorMessage);
                }
                catch (OverflowException)
                {
                    return(Resources.NumericTagsShouldBeNumbersErrorMessage);
                }
            }
            if (TicketTags.Count != TicketTags.GroupBy(x => x.Name.ToLower()).Count())
            {
                return(Resources.TagsShouldBeUniqueErrorMessage);
            }
            return(base.GetSaveErrorMessage());
        }
Exemple #10
0
        public void Refresh(TicketItemViewModel ticketItem, TicketTagGroup selectedTicketTag)
        {
            HideKeyboard();
            SelectedTicketTag = null;
            SelectedItemPortions.Clear();
            SelectedItemPropertyGroups.Clear();
            SelectedItemGroupedPropertyItems.Clear();
            TicketTags.Clear();

            SelectedItem = ticketItem;

            if (ticketItem != null)
            {
                var mi = AppServices.DataAccessService.GetMenuItem(ticketItem.Model.MenuItemId);
                if (mi.Portions.Count > 1)
                {
                    SelectedItemPortions.AddRange(mi.Portions.Select(x => new MenuItemPortionViewModel(x)));
                }

                SelectedItemGroupedPropertyItems.AddRange(mi.PropertyGroups.Where(x => !string.IsNullOrEmpty(x.GroupTag))
                                                          .GroupBy(x => x.GroupTag)
                                                          .Select(x => new MenuItemGroupedPropertyViewModel(SelectedItem, x)));

                SelectedItemPropertyGroups.AddRange(mi.PropertyGroups
                                                    .Where(x => string.IsNullOrEmpty(x.GroupTag))
                                                    .Select(x => new MenuItemPropertyGroupViewModel(x)));

                foreach (var ticketItemPropertyViewModel in ticketItem.Properties.ToList())
                {
                    var tip = ticketItemPropertyViewModel;
                    var mig = SelectedItemPropertyGroups.Where(x => x.Model.Id == tip.Model.PropertyGroupId).SingleOrDefault();
                    if (mig != null)
                    {
                        mig.Properties.SingleOrDefault(x => x.Name == tip.Model.Name).TicketItemProperty = ticketItemPropertyViewModel.Model;
                    }

                    var sig = SelectedItemGroupedPropertyItems.SelectMany(x => x.Properties).Where(
                        x => x.MenuItemPropertyGroup.Id == tip.Model.PropertyGroupId).FirstOrDefault();
                    if (sig != null)
                    {
                        sig.TicketItemProperty = ticketItemPropertyViewModel.Model;
                    }
                }
            }
            else
            {
                if (selectedTicketTag != null)
                {
                    SelectedTicketTag = selectedTicketTag;

                    if (selectedTicketTag.FreeTagging)
                    {
                        TicketTags.AddRange(Dao.Query <TicketTagGroup>(x => x.Id == selectedTicketTag.Id, x => x.TicketTags).SelectMany(x => x.TicketTags).OrderBy(x => x.Name).Select(x => new TicketTagViewModel(x)));
                    }
                    else
                    {
                        TicketTags.AddRange(selectedTicketTag.TicketTags.Select(x => new TicketTagViewModel(x)));
                    }
                    RaisePropertyChanged("TicketTags");
                }
                else
                {
                    RaisePropertyChanged("TicketNote");
                    ShowKeyboard();
                }
            }

            RaisePropertyChanged("SelectedItem");
            RaisePropertyChanged("IsPortionsVisible");
            RaisePropertyChanged("IsEditorsVisible");
            RaisePropertyChanged("IsTicketNoteVisible");
            RaisePropertyChanged("IsTagEditorVisible");
            RaisePropertyChanged("IsFreeTagEditorVisible");
            RaisePropertyChanged("TagColumnCount");
        }
 private bool CanSortTicketTags(string arg)
 {
     return(TicketTags.Any() && !FreeTagging);
 }
        private void OnTicketViewModelEvent(EventParameters <TicketViewModel> obj)
        {
            if (obj.Topic == EventTopicNames.SelectTicketTag)
            {
                ResetValues(obj.Value);
                _showFreeTagEditor = SelectedTicket.LastSelectedTicketTag.FreeTagging;

                List <TicketTag> tags;
                if (_showFreeTagEditor)
                {
                    tags = Dao.Query <TicketTagGroup>(x => x.Id == SelectedTicket.LastSelectedTicketTag.Id,
                                                      x => x.TicketTags).SelectMany(x => x.TicketTags).OrderBy(x => x.Name).ToList();
                }
                else
                {
                    tags = AppServices.MainDataContext.SelectedDepartment.TicketTagGroups.Where(
                        x => x.Name == obj.Value.LastSelectedTicketTag.Name).SelectMany(x => x.TicketTags).ToList();
                }
                tags.Sort(new AlphanumComparator());
                TicketTags.AddRange(tags);

                if (SelectedTicket.IsTaggedWith(SelectedTicket.LastSelectedTicketTag.Name))
                {
                    TicketTags.Add(TicketTag.Empty);
                }
                if (TicketTags.Count == 1 && !_showFreeTagEditor)
                {
                    obj.Value.UpdateTag(SelectedTicket.LastSelectedTicketTag, TicketTags[0]);
                }
                RaisePropertyChanged("TagColumnCount");
                RaisePropertyChanged("IsFreeTagEditorVisible");
                RaisePropertyChanged("FilteredTextBoxType");
            }

            if (obj.Topic == EventTopicNames.SelectVoidReason)
            {
                ResetValues(obj.Value);
                Reasons.AddRange(AppServices.MainDataContext.Reasons.Values.Where(x => x.ReasonType == 0));
                if (Reasons.Count == 0)
                {
                    obj.Value.VoidSelectedItems(0);
                }
                RaisePropertyChanged("ReasonColumnCount");
            }

            if (obj.Topic == EventTopicNames.SelectGiftReason)
            {
                ResetValues(obj.Value);
                Reasons.AddRange(AppServices.MainDataContext.Reasons.Values.Where(x => x.ReasonType == 1));
                if (Reasons.Count == 0)
                {
                    obj.Value.GiftSelectedItems(0);
                }
                RaisePropertyChanged("ReasonColumnCount");
            }

            if (obj.Topic == EventTopicNames.SelectExtraProperty)
            {
                ResetValues(obj.Value);
                _showExtraPropertyEditor = true;
                RaisePropertyChanged("IsExtraPropertyEditorVisible");
                RaisePropertyChanged("IsPortionsVisible");
            }

            if (obj.Topic == EventTopicNames.EditTicketNote)
            {
                ResetValues(obj.Value);
                _showTicketNoteEditor = true;
                RaisePropertyChanged("IsTicketNoteEditorVisible");
            }
        }