Пример #1
0
 private void OnSelectTicketTagGroup(TicketTagGroup obj)
 {
     var ticketTagData = new TicketTagData
     {
         TicketTagGroup = obj,
         Ticket = _selectedTicket
     };
     ticketTagData.PublishEvent(EventTopicNames.SelectTicketTag);
 }
Пример #2
0
        public override void Process(ActionData actionData)
        {
            var ticketTagName = actionData.GetAsString("TicketTagName");
            var ticketStateName = actionData.GetAsString("TicketStateName");

            if (!string.IsNullOrEmpty(ticketStateName))
            {
                var dt = new TicketStateData { StateName = ticketStateName };
                dt.PublishEvent(EventTopicNames.ActivateTicketList);
            }
            else if (!string.IsNullOrEmpty(ticketTagName))
            {
                var dt = new TicketTagGroup { Name = ticketTagName };
                dt.PublishEvent(EventTopicNames.ActivateTicketList);
            }
        }
Пример #3
0
 void SelectedTicketItemEditorViewModelTagUpdated(TicketTagGroup item)
 {
     Debug.Assert(DataContext.SelectedTicket != null);
     if (DataContext.SelectedTicket.Items.Count == 0)
     {
         ActivateMenuItemSelector();
     }
     else if (item.Action > 0)
     {
         CloseSelectedTicket();
         ActivateTableView();
     }
     else
     {
         ActivateTicketView(null);
     }
 }
Пример #4
0
 private bool CanExecuteShowTicketTags(TicketTagGroup arg)
 {
     return SelectedTicket.CanSubmit;
 }
Пример #5
0
        public void UpdateTag(TicketTagGroup tagGroup, TicketTag ticketTag)
        {
            Model.SetTagValue(tagGroup.Name, ticketTag.Name);
            if (tagGroup.Numerator != null)
            {
                Model.TicketNumber = "";
                AppServices.MainDataContext.UpdateTicketNumber(Model, tagGroup.Numerator);
            }

            if (ticketTag.AccountId > 0)
                AppServices.MainDataContext.AssignCustomerToTicket(Model,
                    Dao.SingleWithCache<Customer>(x => x.Id == ticketTag.AccountId));

            ClearSelectedItems();

            var tagData = new TicketTagData { Action = tagGroup.Action, TagName = tagGroup.Name, TagValue = ticketTag.Name, NumericValue = tagGroup.NumericTags || tagGroup.PriceTags ? Convert.ToDecimal(ticketTag.Name) : 0 };

            RuleExecutor.NotifyEvent(RuleEventNames.TicketTagSelected,
                        new
                        {
                            Ticket = Model,
                            tagData.TagName,
                            tagData.TagValue,
                            tagData.NumericValue,
                            TicketTag = Model.Tag
                        });

            tagData.PublishEvent(EventTopicNames.TagSelectedForSelectedTicket);
        }
 private void UpdateTicketTag(Ticket ticket, TicketTagGroup tagGroup, TicketTag ticketTag)
 {
     _ticketService.UpdateTag(ticket, tagGroup, ticketTag);
     EventServiceFactory.EventService.PublishEvent(EventTopicNames.ActivatePosView);
 }
Пример #7
0
        private static IEnumerable<TicketTagFilterViewModel> GetOpenTicketTags(IEnumerable<OpenTicketViewModel> openTickets, TicketTagGroup tagGroup, string tagFilter)
        {
            var tag = tagGroup.Name.ToLower() + ":";
            var cnt = openTickets.Count(x => string.IsNullOrEmpty(x.TicketTag) || !x.TicketTag.ToLower().Contains(tag));

            var opt = new List<TicketTagFilterViewModel>();

            if (string.IsNullOrEmpty(tagFilter) && tagGroup.TicketTags.Count > 1)
            {
                opt = openTickets.Where(x => !string.IsNullOrEmpty(x.TicketTag))
                    .SelectMany(x => x.TicketTag.Split('\r'))
                    .Where(x => x.ToLower().Contains(tag))
                    .Distinct()
                    .Select(x => x.Split(':')).Select(x => new TicketTagFilterViewModel { TagGroup = x[0], TagValue = x[1] }).OrderBy(x => x.TagValue).ToList();

                var usedTags = opt.Select(x => x.TagValue);

                opt.AddRange(tagGroup.TicketTags.Select(x => x.Name).Where(x => !usedTags.Contains(x)).Select(x => new TicketTagFilterViewModel { TagGroup = tagGroup.Name, ButtonColor = "White", TagValue = x }));

                opt.Sort(new AlphanumComparator());
            }

            if (tagGroup.TicketTags.Count > 1)
            {
                if (string.IsNullOrEmpty(tagFilter))
                    opt.Insert(0, new TicketTagFilterViewModel { TagGroup = tagGroup.Name, TagValue = "*", ButtonColor = "Blue" });
                else
                    opt.Insert(0, new TicketTagFilterViewModel { TagGroup = tagGroup.Name, TagValue = "", ButtonColor = "Green" });
                if (cnt > 0)
                    opt.Insert(0, new TicketTagFilterViewModel { Count = cnt, TagGroup = tagGroup.Name, ButtonColor = "Red", TagValue = " " });
            }

            return opt;
        }
Пример #8
0
 public TicketTagButton(TicketTagGroup ticketTagGroup, TicketViewModel ticket)
 {
     Model = ticketTagGroup;
     Caption = Model.Name;
     _ticket = ticket;
 }
Пример #9
0
 public TicketTagValueViewModel(TicketTagGroup ticketTagGroup, Ticket ticket)
 {
     _ticketTagGroup = ticketTagGroup;
     _ticket = ticket;
 }
Пример #10
0
 public void InvokeOnTicketTagEditorRequested(TicketTagGroup tag)
 {
     EventHandler handler = OnTicketTagEditorRequested;
     if (handler != null) handler(tag, EventArgs.Empty);
 }
 public void CloseView()
 {
     SelectedItem = null;
     SelectedItemPortions.Clear();
     SelectedItemPropertyGroups.Clear();
     SelectedItemGroupedPropertyItems.Clear();
     TicketTags.Clear();
     SelectedTicketTag = null;
 }
 public void InvokeTagUpdated(TicketTagGroup item)
 {
     TagUpdatedEventHandler handler = TagUpdated;
     if (handler != null) handler(item);
 }
        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");
        }
Пример #14
0
 private void OnTicketTagExecute(TicketTagGroup obj)
 {
     InvokeOnTicketTagEditorRequested(obj);
 }
Пример #15
0
 private bool CanTicketTagExecute(TicketTagGroup arg)
 {
     return SelectedTicket != null && (!SelectedTicket.IsLocked || !SelectedTicket.IsTaggedWith(arg.Name));
 }
Пример #16
0
 private void OnShowTicketsTagExecute(TicketTagGroup tagGroup)
 {
     if (SelectedTicket == Ticket.Empty)
     {
         tagGroup.PublishEvent(EventTopicNames.ActivateTicketList);
         return;
     }
     var ticketTagData = new TicketTagData
                             {
                                 TicketTagGroup = tagGroup,
                                 Ticket = SelectedTicket
                             };
     ticketTagData.PublishEvent(EventTopicNames.SelectTicketTag);
 }
Пример #17
0
 private void OnShowTicketsTagExecute(TicketTagGroup tagGroup)
 {
     if (SelectedTicket != null)
     {
         _selectedTicket.LastSelectedTicketTag = tagGroup;
         _selectedTicket.PublishEvent(EventTopicNames.SelectTicketTag);
     }
     else if (ShowAllOpenTickets.CanExecute(""))
     {
         SelectedTag = tagGroup.Name;
         RefreshOpenTickets();
         if ((OpenTickets != null && OpenTickets.Count() > 0) || OpenTicketTags.Count() > 0)
         {
             SelectedTicketView = OpenTicketListView;
             RaisePropertyChanged("OpenTickets");
         }
         else InteractionService.UserIntraction.GiveFeedback(string.Format(Resources.NoTicketsFoundForTag, tagGroup.Name));
     }
 }
Пример #18
0
 public void UpdateListByTicketTagGroup(TicketTagGroup tagGroup)
 {
     SelectedEntity = tagGroup;
     var tagValue = string.Format("\"TN\":\"{0}\"", tagGroup.Name);
     _tickets = _ticketServiceBase.GetOpenTickets(x => !x.IsClosed && x.TicketTags.Contains(tagValue)).Select(x => new TicketButtonViewModel(x, null)).ToList();
     Refresh();
 }
Пример #19
0
 private void OnShowTicketsTagExecute(TicketTagGroup tagGroup)
 {
     if (SelectedTicket != null)
     {
         var ticketTagData = new TicketTagData
                                 {
                                     TicketTagGroup = tagGroup,
                                     Ticket = SelectedTicket.Model
                                 };
         ticketTagData.PublishEvent(EventTopicNames.SelectTicketTag);
     }
     else if (ShowAllOpenTickets.CanExecute(""))
     {
         SelectedDepartment.PublishEvent(EventTopicNames.ActivateOpenTickets);
         //todo bi çözüm bulalým
         //if ((OpenTickets != null && OpenTickets.Count() > 0))
         //{
         //    SelectedTicketView = OpenTicketListView;
         //    RaisePropertyChanged(() => OpenTickets);
         //}
         //else InteractionService.UserIntraction.GiveFeedback(string.Format(Resources.NoTicketsFoundForTag, tagGroup.Name));
     }
 }
Пример #20
0
 public void UpdateTag(Ticket ticket, TicketTagGroup tagGroup, TicketTag ticketTag)
 {
     UpdateTag(ticket, tagGroup, ticketTag.Name);
 }
Пример #21
0
        public void UpdateTag(Ticket ticket, TicketTagGroup tagGroup, TicketTag ticketTag)
        {
            ticket.SetTagValue(tagGroup.Name, ticketTag.Name);

            if (tagGroup.FreeTagging && tagGroup.SaveFreeTags)
            {
                SaveFreeTicketTag(tagGroup.Id, ticketTag.Name);
            }

            var tagData = new TicketTagData
            {
                Ticket = ticket,
                TicketTagGroup = tagGroup,
                TagName = tagGroup.Name,
                TagValue = ticketTag.Name
            };

            _applicationState.NotifyEvent(RuleEventNames.TicketTagSelected,
                        new
                        {
                            Ticket = ticket,
                            tagData.TagName,
                            tagData.TagValue,
                            NumericValue = tagGroup.IsNumeric ? Convert.ToDecimal(ticketTag.Name) : 0,
                            TicketTag = ticket.GetTagData()
                        });
        }
Пример #22
0
        private static IEnumerable<OpenTicketViewModel> GetOpenTickets(IEnumerable<OpenTicketViewModel> openTickets, TicketTagGroup tagGroup, string tagFilter)
        {
            var tag = tagGroup.Name.ToLower() + ":";
            IEnumerable<OpenTicketViewModel> result = openTickets.ToList();
            if (tagFilter == " ")
            {
                result = result.Where(x =>
                string.IsNullOrEmpty(x.TicketTag) ||
                  !x.TicketTag.ToLower().Contains(tag));
            }
            else
            {
                result = result.Where(x => !string.IsNullOrEmpty(x.TicketTag) && x.TicketTag.ToLower().Contains(tag));
            }

            if (!string.IsNullOrEmpty(tagFilter.Trim()))
            {
                if (tagFilter != "*")
                {
                    result = result.Where(x => x.TicketTag.ToLower().Contains((tag + tagFilter + "\r").ToLower()));
                }
                result.ForEach(x => x.Info = x.TicketTag.Split('\r').Where(y => y.ToLower().StartsWith(tag)).Single().Split(':')[1]);
            }

            return result;
        }
Пример #23
0
        private static void HandleEvents()
        {
            EventServiceFactory.EventService.GetEvent<GenericEvent<IActionData>>().Subscribe(x =>
            {
                if (x.Value.Action.ActionType == ActionNames.ChangeTicketEntity)
                {
                    var ticket = x.Value.GetDataValue<Ticket>("Ticket");
                    if (ticket != null)
                    {
                        var entityTypeName = x.Value.GetAsString("EntityTypeName");
                        var entityName = x.Value.GetAsString("EntityName");
                        if (!string.IsNullOrEmpty(entityTypeName))
                        {
                            var entity = CacheService.GetEntityByName(entityTypeName, entityName);
                            if (entity != null)
                                TicketService.UpdateEntity(ticket, entity);
                        }
                    }
                }

                if (x.Value.Action.ActionType == ActionNames.UpdateOrder)
                {
                    var ticket = x.Value.GetDataValue<Ticket>("Ticket");
                    var orders = GetOrders(x.Value, ticket);
                    if (orders.Any())
                    {
                        foreach (var order in orders)
                        {
                            if (!string.IsNullOrEmpty(x.Value.GetAsString("Quantity")))
                                order.Quantity = x.Value.GetAsDecimal("Quantity");
                            if (!string.IsNullOrEmpty(x.Value.GetAsString("Price")))
                                order.UpdatePrice(x.Value.GetAsDecimal("Price"), "");
                            if (!string.IsNullOrEmpty(x.Value.GetAsString("IncreaseInventory")))
                                order.IncreaseInventory = x.Value.GetAsBoolean("IncreaseInventory");
                            if (!string.IsNullOrEmpty(x.Value.GetAsString("DecreaseInventory")))
                                order.DecreaseInventory = x.Value.GetAsBoolean("DecreaseInventory");
                            if (!string.IsNullOrEmpty(x.Value.GetAsString("Locked")))
                                order.Locked = x.Value.GetAsBoolean("Locked");
                            if (!string.IsNullOrEmpty(x.Value.GetAsString("CalculatePrice")))
                                order.CalculatePrice = x.Value.GetAsBoolean("CalculatePrice");
                            if (!string.IsNullOrEmpty(x.Value.GetAsString("AccountTransactionType")))
                                TicketService.ChangeOrdersAccountTransactionTypeId(ticket, new List<Order> { order },
                                                                                   CacheService.
                                                                                       GetAccountTransactionTypeIdByName
                                                                                       (x.Value.GetAsString(
                                                                                           "AccountTransactionType")));
                        }
                    }
                }

                if (x.Value.Action.ActionType == ActionNames.ExecuteScript)
                {
                    var script = x.Value.GetAsString("ScriptName");
                    if (!string.IsNullOrEmpty(script))
                    {
                        ExpressionService.EvalCommand(script, null, x.Value.DataObject, true);
                    }
                }

                if (x.Value.Action.ActionType == ActionNames.ExecutePowershellScript)
                {
                    var script = x.Value.GetAsString("Script");
                    if (!string.IsNullOrEmpty(script))
                    {
                        if (Utility.IsValidFile(script)) script = File.ReadAllText(script);
                        var runspace = RunspaceFactory.CreateRunspace();
                        runspace.Open();
                        runspace.SessionStateProxy.SetVariable("locator", ServiceLocator.Current);
                        var pipeline = runspace.CreatePipeline(script);
                        pipeline.Invoke();
                        runspace.Close();
                    }
                }

                if (x.Value.Action.ActionType == ActionNames.DisplayPaymentScreen)
                {
                    var ticket = x.Value.GetDataValue<Ticket>("Ticket");
                    if (ticket != null)
                    {
                        ticket.PublishEvent(EventTopicNames.MakePayment);
                    }
                }

                if (x.Value.Action.ActionType == ActionNames.LockTicket)
                {
                    var ticket = x.Value.GetDataValue<Ticket>("Ticket");
                    if (ticket != null)
                    {
                        ticket.RequestLock();
                    }
                }

                if (x.Value.Action.ActionType == ActionNames.DisplayTicket)
                {
                    var ticketId = x.Value.GetAsInteger("TicketId");
                    if (ticketId > 0)
                        ExtensionMethods.PublishIdEvent(ticketId, EventTopicNames.DisplayTicket);
                    else EventServiceFactory.EventService.PublishEvent(EventTopicNames.RefreshSelectedTicket);
                }

                if (x.Value.Action.ActionType == ActionNames.DisplayTicketList)
                {
                    var ticketTagName = x.Value.GetAsString("TicketTagName");
                    var ticketStateName = x.Value.GetAsString("TicketStateName");

                    if (!string.IsNullOrEmpty(ticketStateName))
                    {
                        var dt = new TicketStateData { StateName = ticketStateName };
                        dt.PublishEvent(EventTopicNames.ActivateTicketList);
                    }
                    else if (!string.IsNullOrEmpty(ticketTagName))
                    {
                        var dt = new TicketTagGroup { Name = ticketTagName };
                        dt.PublishEvent(EventTopicNames.ActivateTicketList);
                    }
                }

                if (x.Value.Action.ActionType == ActionNames.CreateTicket)
                {
                    EventServiceFactory.EventService.PublishEvent(EventTopicNames.CreateTicket);
                }

                if (x.Value.Action.ActionType == ActionNames.UnlockTicket)
                {
                    var ticket = x.Value.GetDataValue<Ticket>("Ticket");
                    if (ticket != null) ticket.UnLock();
                    EventServiceFactory.EventService.PublishEvent(EventTopicNames.UnlockTicketRequested);
                }

                if (x.Value.Action.ActionType == ActionNames.CloseActiveTicket)
                {
                    EventServiceFactory.EventService.PublishEvent(EventTopicNames.CloseTicketRequested, true);
                }

                if (x.Value.Action.ActionType == ActionNames.UpdateEntityState)
                {
                    var entityId = x.Value.GetDataValueAsInt("EntityId");
                    var entityTypeId = x.Value.GetDataValueAsInt("EntityTypeId");
                    var stateName = x.Value.GetAsString("EntityStateName");
                    var state = x.Value.GetAsString("EntityState");
                    if (state != null)
                    {
                        if (entityId > 0 && entityTypeId > 0)
                        {
                            EntityService.UpdateEntityState(entityId, entityTypeId, stateName, state);
                        }
                        else
                        {
                            var ticket = x.Value.GetDataValue<Ticket>("Ticket");
                            if (ticket != null)
                            {
                                var entityTypeName = x.Value.GetDataValueAsString("EntityTypeName");
                                foreach (var ticketEntity in ticket.TicketEntities)
                                {
                                    var entityType = CacheService.GetEntityTypeById(ticketEntity.EntityTypeId);
                                    if (string.IsNullOrEmpty(entityTypeName.Trim()) || entityType.Name == entityTypeName)
                                        EntityService.UpdateEntityState(ticketEntity.EntityId, ticketEntity.EntityTypeId, stateName, state);
                                }
                            }
                        }
                    }
                }

                if (x.Value.Action.ActionType == ActionNames.UpdateProgramSetting)
                {
                    var settingName = x.Value.GetAsString("SettingName");
                    var updateType = x.Value.GetAsString("UpdateType");
                    if (!string.IsNullOrEmpty(settingName))
                    {
                        var isLocal = x.Value.GetAsBoolean("IsLocal");
                        var setting = isLocal
                            ? SettingService.ReadLocalSetting(settingName)
                            : SettingService.ReadGlobalSetting(settingName);

                        if (updateType == Resources.Increase)
                        {
                            var settingValue = x.Value.GetAsInteger("SettingValue");
                            if (string.IsNullOrEmpty(setting.StringValue))
                                setting.IntegerValue = settingValue;
                            else
                                setting.IntegerValue = setting.IntegerValue + settingValue;
                        }
                        else if (updateType == Resources.Decrease)
                        {
                            var settingValue = x.Value.GetAsInteger("SettingValue");
                            if (string.IsNullOrEmpty(setting.StringValue))
                                setting.IntegerValue = settingValue;
                            else
                                setting.IntegerValue = setting.IntegerValue - settingValue;
                        }
                        else if (updateType == "Toggle")
                        {
                            var settingValue = x.Value.GetAsString("SettingValue");
                            var parts = settingValue.Split(',');
                            if (string.IsNullOrEmpty(setting.StringValue))
                            {
                                setting.StringValue = parts[0];
                            }
                            else
                            {
                                for (var i = 0; i < parts.Length; i++)
                                {
                                    if (parts[i] == setting.StringValue)
                                    {
                                        setting.StringValue = (i + 1) < parts.Length ? parts[i + 1] : parts[0];
                                        break;
                                    }
                                }
                            }
                        }
                        else
                        {
                            var settingValue = x.Value.GetAsString("SettingValue");
                            setting.StringValue = settingValue;
                        }
                        if (!isLocal) SettingService.SaveProgramSettings();
                    }
                }

                if (x.Value.Action.ActionType == ActionNames.RefreshCache)
                {
                    MethodQueue.Queue("ResetCache", ResetCache);
                }

                if (x.Value.Action.ActionType == ActionNames.SendMessage)
                {
                    AppServices.MessagingService.SendMessage("ActionMessage", x.Value.GetAsString("Command"));
                }

                if (x.Value.Action.ActionType == ActionNames.SendEmail)
                {
                    EmailService.SendEMailAsync(x.Value.GetAsString("SMTPServer"),
                        x.Value.GetAsString("SMTPUser"),
                        x.Value.GetAsString("SMTPPassword"),
                        x.Value.GetAsInteger("SMTPPort"),
                        x.Value.GetAsString("ToEMailAddress"),
                        x.Value.GetAsString("CCEmailAddresses"),
                        x.Value.GetAsString("FromEMailAddress"),
                        x.Value.GetAsString("Subject"),
                        x.Value.GetAsString("EMailMessage"),
                        x.Value.GetAsString("FileName"),
                        x.Value.GetAsBoolean("DeleteFile"),
                        x.Value.GetAsBoolean("BypassSslErrors"));
                }

                if (x.Value.Action.ActionType == ActionNames.UpdateTicketCalculation)
                {
                    var ticket = x.Value.GetDataValue<Ticket>("Ticket");
                    if (ticket != null)
                    {
                        var calculationTypeName = x.Value.GetAsString("CalculationType");
                        var calculationType = SettingService.GetCalculationTypeByName(calculationTypeName);
                        if (calculationType != null)
                        {
                            var amount = x.Value.GetAsDecimal("Amount");
                            ticket.AddCalculation(calculationType, amount);
                            TicketService.RecalculateTicket(ticket);
                        }
                    }
                }

                if (x.Value.Action.ActionType == ActionNames.AddOrder)
                {
                    var ticket = x.Value.GetDataValue<Ticket>("Ticket");

                    if (ticket != null)
                    {
                        var menuItemName = x.Value.GetAsString("MenuItemName");
                        var menuItem = CacheService.GetMenuItem(y => y.Name == menuItemName);
                        var portionName = x.Value.GetAsString("PortionName");
                        var quantity = x.Value.GetAsDecimal("Quantity");
                        var tag = x.Value.GetAsString("Tag");
                        var order = TicketService.AddOrder(ticket, menuItem.Id, quantity, portionName, null);
                        if (order != null) order.Tag = tag;
                    }
                }

                if (x.Value.Action.ActionType == ActionNames.UpdateTicketTag)
                {
                    var ticket = x.Value.GetDataValue<Ticket>("Ticket");
                    if (ticket != null)
                    {
                        var tagName = x.Value.GetAsString("TagName");
                        var tagValue = x.Value.GetAsString("TagValue");
                        ticket.SetTagValue(tagName, tagValue);
                        var tagData = new TicketTagData { TagName = tagName, TagValue = tagValue };
                        tagData.PublishEvent(EventTopicNames.TicketTagSelected);
                    }
                }

                if (x.Value.Action.ActionType == ActionNames.UpdateTicketState)
                {
                    var ticket = x.Value.GetDataValue<Ticket>("Ticket");
                    if (ticket != null)
                    {
                        var stateName = x.Value.GetAsString("StateName");
                        var currentState = x.Value.GetAsString("CurrentState");
                        var state = x.Value.GetAsString("State");
                        var stateValue = x.Value.GetAsString("StateValue");
                        var quantity = x.Value.GetAsInteger("Quantity");
                        TicketService.UpdateTicketState(ticket, stateName, currentState, state, stateValue, quantity);
                    }
                }

                if (x.Value.Action.ActionType == ActionNames.UpdateOrderState)
                {
                    var ticket = x.Value.GetDataValue<Ticket>("Ticket");
                    var orders = GetOrders(x.Value, ticket);
                    if (orders.Any())
                    {
                        var stateName = x.Value.GetAsString("StateName");
                        var currentState = x.Value.GetAsString("CurrentState");
                        var groupOrder = x.Value.GetAsInteger("GroupOrder");
                        var state = x.Value.GetAsString("State");
                        var stateOrder = x.Value.GetAsInteger("StateOrder");
                        var stateValue = x.Value.GetAsString("StateValue");
                        TicketService.UpdateOrderStates(ticket, orders.ToList(), stateName, currentState, groupOrder, state, stateOrder, stateValue);
                    }
                }

                if (x.Value.Action.ActionType == ActionNames.TagOrder || x.Value.Action.ActionType == ActionNames.UntagOrder || x.Value.Action.ActionType == ActionNames.RemoveOrderTag)
                {
                    var ticket = x.Value.GetDataValue<Ticket>("Ticket");
                    var orders = GetOrders(x.Value, ticket);
                    if (orders.Any())
                    {
                        var tagName = x.Value.GetAsString("OrderTagName");
                        var orderTag = CacheService.GetOrderTagGroupByName(tagName);

                        if (orderTag != null)
                        {
                            var tagValue = x.Value.GetAsString("OrderTagValue");
                            var oldTagValue = x.Value.GetAsString("OldOrderTagValue");
                            var tagNote = x.Value.GetAsString("OrderTagNote");
                            var orderTagValue = orderTag.OrderTags.SingleOrDefault(y => y.Name == tagValue);

                            if (orderTagValue != null)
                            {
                                if (!string.IsNullOrEmpty(oldTagValue))
                                    orders = orders.Where(o => o.OrderTagExists(y => y.OrderTagGroupId == orderTag.Id && y.TagValue == oldTagValue)).ToList();
                                if (x.Value.Action.ActionType == ActionNames.TagOrder)
                                    TicketService.TagOrders(ticket, orders, orderTag, orderTagValue, tagNote);
                                if (x.Value.Action.ActionType == ActionNames.UntagOrder)
                                    TicketService.UntagOrders(ticket, orders, orderTag, orderTagValue);
                            }

                            //foreach (var order in orders)
                            //{
                            //    if (x.Value.Action.ActionType == ActionNames.RemoveOrderTag)
                            //    {
                            //        var tags = order.OrderTagValues.Where(y => y.OrderTagGroupId == orderTag.Id);
                            //        tags.ToList().ForEach(y => order.OrderTagValues.Remove(y));
                            //        continue;
                            //    }
                            //}

                        }
                    }
                }

                if (x.Value.Action.ActionType == ActionNames.MoveTaggedOrders)
                {
                    var ticket = x.Value.GetDataValue<Ticket>("Ticket");
                    var orderTagName = x.Value.GetAsString("OrderTagName");
                    if (ticket != null && !string.IsNullOrEmpty(orderTagName))
                    {
                        var orderTagValue = x.Value.GetAsString("OrderTagValue");
                        if (ticket.Orders.Any(y => y.OrderTagExists(z => z.TagName == orderTagName && z.TagValue == orderTagValue)))
                        {
                            var tid = ticket.Id;
                            EventServiceFactory.EventService.PublishEvent(EventTopicNames.CloseTicketRequested, true);
                            ticket = TicketService.OpenTicket(tid);
                            var orders = ticket.Orders.Where(y => y.OrderTagExists(z => z.TagName == orderTagName && z.TagValue == orderTagValue)).ToArray();
                            var commitResult = TicketService.MoveOrders(ticket, orders, 0);
                            if (string.IsNullOrEmpty(commitResult.ErrorMessage) && commitResult.TicketId > 0)
                            {
                                ExtensionMethods.PublishIdEvent(commitResult.TicketId, EventTopicNames.DisplayTicket);
                            }
                            else
                            {
                                ExtensionMethods.PublishIdEvent(tid, EventTopicNames.DisplayTicket);
                            }
                        }
                    }
                }

                if (x.Value.Action.ActionType == ActionNames.UpdatePriceTag)
                {
                    using (var workspace = WorkspaceFactory.Create())
                    {
                        var priceTag = x.Value.GetAsString("PriceTag");
                        var departmentName = x.Value.GetAsString("DepartmentName");
                        var department = workspace.Single<Department>(y => y.Name == departmentName);
                        if (department != null)
                        {
                            department.PriceTag = priceTag;
                            workspace.CommitChanges();
                            MethodQueue.Queue("ResetCache", ResetCache);
                        }
                    }
                }

                if (x.Value.Action.ActionType == ActionNames.ExecutePrintJob)
                {
                    var ticket = x.Value.GetDataValue<Ticket>("Ticket");
                    var pjName = x.Value.GetAsString("PrintJobName");
                    if (!string.IsNullOrEmpty(pjName))
                    {
                        TicketService.UpdateTicketNumber(ticket, ApplicationState.CurrentTicketType.TicketNumerator);
                        var j = CacheService.GetPrintJobByName(pjName);

                        if (j != null)
                        {
                            if (ticket != null)
                            {
                                var orderTagName = x.Value.GetAsString("OrderTagName");
                                var orderTagValue = x.Value.GetAsString("OrderTagValue");
                                var orderStateName = x.Value.GetAsString("OrderStateName");
                                var orderState = x.Value.GetAsString("OrderState");
                                var orderStateValue = x.Value.GetAsString("OrderStateValue");
                                Expression<Func<Order, bool>> expression = ex => true;
                                if (!string.IsNullOrWhiteSpace(orderTagName))
                                {
                                    expression = ex => ex.OrderTagExists(y => y.TagName == orderTagName && y.TagValue == orderTagValue);
                                }
                                if (!string.IsNullOrWhiteSpace(orderStateName))
                                {
                                    expression = expression.And(ex => ex.IsInState(orderStateName, orderState));
                                    if (!string.IsNullOrWhiteSpace(orderStateValue))
                                        expression = expression.And(ex => ex.IsInState(orderStateValue));
                                }
                                PrinterService.PrintTicket(ticket, j, expression.Compile());
                            }
                            else
                                PrinterService.ExecutePrintJob(j);
                        }
                    }
                }
            });
        }
Пример #24
0
 private bool CanExecuteShowTicketTags(TicketTagGroup arg)
 {
     return SelectedTicket == null || (SelectedTicket.Model.CanSubmit);
 }
        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();
            }

            ticketTags.Sort(new AlphanumComparator());
            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(() => TagColumnCount);
            RaisePropertyChanged(() => IsFreeTagEditorVisible);
            RaisePropertyChanged(() => FilteredTextBoxType);
            return false;
        }
Пример #26
0
 private void ActivateSelectedTicketItemEditorView(TicketItemViewModel item, TicketTagGroup selectedTicketTag)
 {
     SelectedIndex = 5;
     SelectedTicketItemEditorViewModel.Refresh(item, selectedTicketTag);
 }
Пример #27
0
 public TicketTagButton(TicketTagGroup ticketTagGroup, Ticket ticket)
 {
     Model = ticketTagGroup;
     Caption = Model.Name.Replace(" ", Environment.NewLine);
     _ticket = ticket;
 }