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(); }
public void CloseView() { SelectedItem = null; SelectedItemPortions.Clear(); SelectedItemPropertyGroups.Clear(); SelectedItemGroupedPropertyItems.Clear(); TicketTags.Clear(); SelectedTicketTag = null; }
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); }
/// <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()); }
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"); } }