コード例 #1
0
        public async Task <IActionResult> Index(AutomationCommand cmd)
        {
            cmd.TimeStamp   = DateTime.Now;
            cmd.UserName    = "******";
            cmd.CommandText = "GARAGE-DOOR";
            cmd.CommandArgs = "ACTION=OPEN";

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri("http://localhost:8079");
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                var json     = JsonConvert.SerializeObject(cmd);
                var content  = new StringContent(json, Encoding.UTF8, "application/json");
                var response = await client.PostAsync("/api/automationcommand", content);

                if (response.IsSuccessStatusCode)
                {
                    var result = await response.Content.ReadAsStringAsync();
                }
            }

            return(View());
        }
コード例 #2
0
        public static AutomationCommand ConvertToAutomationCommand(Type commandClass)
        {
            var    groupingAttribute = commandClass.GetCustomAttributes(typeof(CategoryAttribute), true);
            string groupAttribute    = "";

            if (groupingAttribute.Length > 0)
            {
                var attributeFound = (CategoryAttribute)groupingAttribute[0];
                groupAttribute = attributeFound.Category;
            }

            //Instantiate Class
            ScriptCommand newCommand = (ScriptCommand)Activator.CreateInstance(commandClass);

            newCommand.CommandIcon = null;
            GC.Collect();

            AutomationCommand newAutomationCommand = null;

            //If command is enabled, pull for display and configuration
            if (newCommand.CommandEnabled)
            {
                newAutomationCommand = new AutomationCommand();
                newAutomationCommand.CommandClass = commandClass;
                newAutomationCommand.Command      = newCommand;
                newAutomationCommand.DisplayGroup = groupAttribute;
                newAutomationCommand.FullName     = string.Join(" - ", groupAttribute, newCommand.SelectionName);
                newAutomationCommand.ShortName    = newCommand.SelectionName;
                newAutomationCommand.Description  = GetDescription(commandClass);
            }

            return(newAutomationCommand);
        }
コード例 #3
0
        public static List <AutomationCommand> GenerateCommandsandControls()
        {
            var commandList = new List <AutomationCommand>();

            var commandClasses = Assembly.GetExecutingAssembly().GetTypes()
                                 .Where(t => t.Namespace == "OpenBots.Commands")
                                 .Where(t => t.Name != "ScriptCommand")
                                 .Where(t => t.IsAbstract == false)
                                 .Where(t => t.BaseType.Name == "ScriptCommand")
                                 .ToList();

            var cmdAssemblyPaths = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "OpenBots.Commands.*.dll");

            foreach (var path in cmdAssemblyPaths)
            {
                commandClasses.AddRange(Assembly.LoadFrom(path).GetTypes()
                                        .Where(t => t.Name != "ScriptCommand")
                                        .Where(t => t.IsAbstract == false)
                                        .Where(t => t.BaseType.Name == "ScriptCommand")
                                        .ToList());
            }
            var userPrefs = new ApplicationSettings().GetOrCreateApplicationSettings();

            //Loop through each class
            foreach (var commandClass in commandClasses)
            {
                var    groupingAttribute = commandClass.GetCustomAttributes(typeof(CategoryAttribute), true);
                string groupAttribute    = "";
                if (groupingAttribute.Length > 0)
                {
                    var attributeFound = (CategoryAttribute)groupingAttribute[0];
                    groupAttribute = attributeFound.Category;
                }

                //Instantiate Class
                ScriptCommand newCommand = (ScriptCommand)Activator.CreateInstance(commandClass);

                //If command is enabled, pull for display and configuration
                if (newCommand.CommandEnabled)
                {
                    var newAutomationCommand = new AutomationCommand();
                    newAutomationCommand.CommandClass = commandClass;
                    newAutomationCommand.Command      = newCommand;
                    newAutomationCommand.DisplayGroup = groupAttribute;
                    newAutomationCommand.FullName     = string.Join(" - ", groupAttribute, newCommand.SelectionName);
                    newAutomationCommand.ShortName    = newCommand.SelectionName;
                    newAutomationCommand.Description  = GetDescription(commandClass);

                    if (userPrefs.ClientSettings.PreloadBuilderCommands)
                    {
                        //newAutomationCommand.RenderUIComponents();
                    }

                    //call RenderUIComponents to render UI controls
                    commandList.Add(newAutomationCommand);
                }
            }

            return(commandList);
        }
コード例 #4
0
        public override void Up()
        {
            var dc = ApplicationContext as DbContext;

            var closeTicketAutomation = new AutomationCommand {
                Name = Resources.CloseTicket, ButtonHeader = Resources.Close, SortOrder = -1, Color = "#FFFF0000", FontSize = 40
            };

            closeTicketAutomation.AutomationCommandMaps.Add(new AutomationCommandMap {
                EnabledStates = string.Format("{0},{1},{2},{3},IsClosed", Resources.New, Resources.NewOrders, Resources.Unpaid, Resources.Locked), VisibleStates = "*", DisplayUnderTicket = true
            });
            dc.Set <AutomationCommand>().Add(closeTicketAutomation);

            var settleAutomation = new AutomationCommand {
                Name = Resources.Settle, ButtonHeader = Resources.Settle, SortOrder = -2, FontSize = 40
            };

            settleAutomation.AutomationCommandMaps.Add(new AutomationCommandMap {
                EnabledStates = "*", VisibleStates = "*", DisplayUnderTicket = true
            });
            dc.Set <AutomationCommand>().Add(settleAutomation);

            dc.SaveChanges();

            var displayPaymentScreenAction = new AppAction {
                ActionType = ActionNames.DisplayPaymentScreen, Name = Resources.DisplayPaymentScreen, Parameter = "", SortOrder = -1
            };

            dc.Set <AppAction>().Add(displayPaymentScreenAction);

            var closeTicketAction = dc.Set <AppAction>().FirstOrDefault(x => x.ActionType == ActionNames.CloseActiveTicket);

            if (closeTicketAction == null)
            {
                closeTicketAction = new AppAction {
                    ActionType = ActionNames.CloseActiveTicket, Name = Resources.CloseTicket, Parameter = "", SortOrder = -1
                };
                dc.Set <AppAction>().Add(closeTicketAction);
            }
            dc.SaveChanges();

            var closeTicketRule = new AppRule {
                Name = string.Format(Resources.Rule_f, Resources.CloseTicket), EventName = "AutomationCommandExecuted", EventConstraints = "AutomationCommandName;=;" + Resources.CloseTicket, SortOrder = -1
            };

            closeTicketRule.Actions.Add(new ActionContainer(closeTicketAction));
            closeTicketRule.AddRuleMap();
            dc.Set <AppRule>().Add(closeTicketRule);

            var settleTicketRule = new AppRule {
                Name = string.Format(Resources.Rule_f, Resources.Settle), EventName = "AutomationCommandExecuted", EventConstraints = "AutomationCommandName;=;" + Resources.Settle, SortOrder = -1
            };

            settleTicketRule.Actions.Add(new ActionContainer(displayPaymentScreenAction));
            settleTicketRule.AddRuleMap();
            dc.Set <AppRule>().Add(settleTicketRule);

            dc.SaveChanges();
        }
コード例 #5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AutomationMenuOptionViewModel"/> class.
 /// </summary>
 /// <param name="automation">The menu execution behavior.</param>
 /// <param name="caption">The caption.</param>
 /// <param name="imagePath">The path to the icon.</param>
 /// <param name="sortOrder">The sort order for the menu entry.</param>
 public AutomationMenuOptionViewModel(IAutomationExtension automation, string caption, string imagePath, long sortOrder)
     : base(caption)
 {
     Command   = new AutomationCommand(this, automation);
     ImagePath = imagePath;
     IconType  = string.IsNullOrEmpty(ImagePath) ? IconType.None : IconType.Image;
     SortOrder = sortOrder;
 }
コード例 #6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AutomationMenuOptionViewModel"/> class.
 /// </summary>
 /// <param name="automation">The menu execution behavior.</param>
 /// <param name="caption">The caption.</param>
 /// <param name="imagePath">The path to the icon.</param>
 /// <param name="sortOrder">The sort order for the menu entry.</param>
 public AutomationMenuOptionViewModel(IAutomationExtension automation, string caption, string imagePath, long sortOrder)
     : base(caption)
 {
     Command = new AutomationCommand(this, automation);
     ImagePath = imagePath;
     IconType = string.IsNullOrEmpty(ImagePath) ? IconType.None : IconType.Image;
     SortOrder = sortOrder;
 }
コード例 #7
0
 private void ExecuteAutomationCommand(AutomationCommand automationCommand, string selectedValue, string nextValue)
 {
     if (!string.IsNullOrEmpty(automationCommand.Values) && !automationCommand.ToggleValues)
     {
         automationCommand.PublishEvent(EventTopicNames.SelectAutomationCommandValue);
     }
     else
     {
         ExecuteAutomationCommand(automationCommand.Name, selectedValue, nextValue);
         RefreshVisuals();
     }
 }
コード例 #8
0
        private bool IsKnownAutomationCommand(string command)
        {
            foreach (var cmd in Enum.GetValues(typeof(AutomationCommand)))
            {
                if (string.Equals(cmd.ToString(), command, StringComparison.InvariantCultureIgnoreCase))
                {
                    m_CurrentCommand = (AutomationCommand)cmd;
                    return(true);
                }
            }

            return(false);
        }
コード例 #9
0
        public static List <AutomationCommand> GenerateAutomationCommands(ImageList uiImages, List <Type> commandClasses)
        {
            uiImages.ImageSize = new Size(18, 18);
            uiImages.Images.Add("BrokenCodeCommentCommand", Resources.command_broken);

            List <AutomationCommand> newAutomationCommands = new List <AutomationCommand>();

            foreach (var commandClass in commandClasses)
            {
                var    groupingAttribute = commandClass.GetCustomAttributes(typeof(CategoryAttribute), true);
                string groupAttribute    = "";
                if (groupingAttribute.Length > 0)
                {
                    var attributeFound = (CategoryAttribute)groupingAttribute[0];
                    groupAttribute = attributeFound.Category;
                }

                //Instantiate Class
                ScriptCommand newCommand = (ScriptCommand)Activator.CreateInstance(commandClass);
                uiImages.Images.Add(newCommand.CommandName, newCommand.CommandIcon);
                newCommand.CommandIcon = null;
                GC.Collect();

                AutomationCommand newAutomationCommand = null;
                //If command is enabled, pull for display and configuration
                if (newCommand.CommandEnabled)
                {
                    newAutomationCommand = new AutomationCommand();
                    newAutomationCommand.CommandClass = commandClass;
                    newAutomationCommand.Command      = newCommand;
                    newAutomationCommand.DisplayGroup = groupAttribute;
                    newAutomationCommand.FullName     = string.Join(" - ", groupAttribute, newCommand.SelectionName);
                    newAutomationCommand.ShortName    = newCommand.SelectionName;
                    newAutomationCommand.Description  = CommandsHelper.GetDescription(commandClass);
                }

                if (newAutomationCommand != null)
                {
                    newAutomationCommands.Add(newAutomationCommand);
                }
            }

            return(newAutomationCommands.Distinct().ToList());
        }
コード例 #10
0
ファイル: TicketViewModel.cs プロジェクト: savasl/SambaPOS-3
        private void ExecuteAutomationCommand(AutomationCommand automationCommand, string selectedValue)
        {
            if (!string.IsNullOrEmpty(automationCommand.Values) && !automationCommand.ToggleValues)
            {
                automationCommand.PublishEvent(EventTopicNames.SelectAutomationCommandValue);
            }
            else
            {
                if (SelectedOrders.Any())
                {
                    foreach (var selectedOrder in SelectedOrders.ToList())
                    {
                        _applicationState.NotifyEvent(RuleEventNames.AutomationCommandExecuted,
                                                      new
                        {
                            Ticket = SelectedTicket,
                            Order  = selectedOrder,
                            AutomationCommandName = automationCommand.Name,
                            Value = selectedValue
                        });
                    }
                }
                else
                {
                    _applicationState.NotifyEvent(RuleEventNames.AutomationCommandExecuted,
                                                  new
                    {
                        Ticket = SelectedTicket,
                        AutomationCommandName = automationCommand.Name,
                        Value = selectedValue
                    });
                }

                _ticketOrdersViewModel.SelectedTicket = SelectedTicket;
                ClearSelectedItems();
                ClearSelection = true;
                RefreshVisuals();
            }
        }
コード例 #11
0
        public bool ConfirmAutomationCommand(AutomationCommand automationCommand)
        {
            if (automationCommand == null)
            {
                return(false);
            }
            if (this._applicationState.CurrentLoggedInUser.UserRole.IsAdmin || automationCommand.ConfirmationType != 2)
            {
                if (automationCommand.ConfirmationType != 1)
                {
                    return(true);
                }
                return(this._dialogService.Confirm(string.Format("Do you Confirm {0} Operation?", automationCommand.Name)));
            }
            string str = this._dialogService.AskAdminPassword();

            if (string.IsNullOrEmpty(str))
            {
                return(false);
            }
            return(this._userService.CanConfirmAdminPin(str));
        }
コード例 #12
0
        public void GenerateSystemRules(IWorkspace workspace)
        {
            var closeTicketAutomation = new AutomationCommand {
                Name = Resources.CloseTicket, ButtonHeader = Resources.Close, SortOrder = -1, Color = "#FFFF0000", FontSize = 40
            };

            closeTicketAutomation.AutomationCommandMaps.Add(new AutomationCommandMap {
                EnabledStates = string.Format("{0},{1},{2},{3},IsClosed", Resources.New, Resources.NewOrders, Resources.Unpaid, Resources.Locked), VisibleStates = "*", DisplayUnderTicket = true
            });
            workspace.Add(closeTicketAutomation);

            var settleAutomation = new AutomationCommand {
                Name = Resources.Settle, ButtonHeader = Resources.Settle, SortOrder = -2, FontSize = 40
            };

            settleAutomation.AutomationCommandMaps.Add(new AutomationCommandMap {
                EnabledStates = "*", VisibleStates = "*", DisplayUnderTicket = true
            });
            workspace.Add(settleAutomation);

            var printBillAutomation = new AutomationCommand {
                Name = Resources.PrintBill, ButtonHeader = Resources.PrintBill, SortOrder = -1
            };

            printBillAutomation.AutomationCommandMaps.Add(new AutomationCommandMap {
                EnabledStates = Resources.NewOrders + "," + Resources.Unpaid + ",IsClosed", VisibleStates = "*", DisplayOnTicket = true, DisplayOnPayment = true
            });
            workspace.Add(printBillAutomation);

            var unlockTicketAutomation = new AutomationCommand {
                Name = Resources.UnlockTicket, ButtonHeader = Resources.UnlockTicket, SortOrder = -1
            };

            unlockTicketAutomation.AutomationCommandMaps.Add(new AutomationCommandMap {
                EnabledStates = Resources.Locked, VisibleStates = Resources.Locked, DisplayOnTicket = true
            });
            workspace.Add(unlockTicketAutomation);

            var addTicketAutomation = new AutomationCommand {
                Name = string.Format(Resources.Add_f, Resources.Ticket), ButtonHeader = string.Format(Resources.Add_f, Resources.Ticket), SortOrder = -1
            };

            addTicketAutomation.AutomationCommandMaps.Add(new AutomationCommandMap {
                EnabledStates = string.Format("{0},{1}", Resources.Unpaid, Resources.Locked), VisibleStates = "*", DisplayOnTicket = true
            });
            workspace.Add(addTicketAutomation);

            var giftItemAutomation = new AutomationCommand {
                Name = Resources.Gift, ButtonHeader = Resources.Gift, SortOrder = -1
            };

            giftItemAutomation.AutomationCommandMaps.Add(new AutomationCommandMap {
                EnabledStates = "GStatus=", VisibleStates = "GStatus=", DisplayOnOrders = true
            });
            workspace.Add(giftItemAutomation);

            var cancelGiftItemAutomation = new AutomationCommand {
                Name = string.Format(Resources.Cancel_f, Resources.Gift), ButtonHeader = string.Format(Resources.Cancel_f, Resources.Gift), SortOrder = -1
            };

            cancelGiftItemAutomation.AutomationCommandMaps.Add(new AutomationCommandMap {
                EnabledStates = Resources.Gift, VisibleStates = Resources.Gift, DisplayOnOrders = true
            });
            workspace.Add(cancelGiftItemAutomation);

            var voidItemAutomation = new AutomationCommand {
                Name = Resources.Void, ButtonHeader = Resources.Void, SortOrder = -1
            };

            voidItemAutomation.AutomationCommandMaps.Add(new AutomationCommandMap {
                EnabledStates = string.Format("GStatus={0}," + Resources.Submitted, Resources.Gift), VisibleStates = string.Format("GStatus=,GStatus={0}", Resources.Gift), DisplayOnOrders = true
            });
            workspace.Add(voidItemAutomation);

            var cancelVoidItemAutomation = new AutomationCommand {
                Name = string.Format(Resources.Cancel_f, Resources.Void), ButtonHeader = string.Format(Resources.Cancel_f, Resources.Void), SortOrder = -1
            };

            cancelVoidItemAutomation.AutomationCommandMaps.Add(new AutomationCommandMap {
                EnabledStates = Resources.New, VisibleStates = Resources.Void, DisplayOnOrders = true
            });
            workspace.Add(cancelVoidItemAutomation);

            var newOrderState = new State {
                Name = Resources.NewOrders, Color = "Orange", GroupName = "Status"
            };

            workspace.Add(newOrderState);

            var availableState = new State {
                Name = Resources.Available, Color = "White", GroupName = "Status"
            };

            workspace.Add(availableState);

            var billRequestedState = new State {
                Name = Resources.BillRequested, Color = "Maroon", GroupName = "Status"
            };

            workspace.Add(billRequestedState);

            var giftStatus = new State {
                Name = Resources.Gift, GroupName = "GStatus", ShowOnEndOfDayReport = true, ShowOnProductReport = true, ShowOnTicket = true
            };

            workspace.Add(giftStatus);

            var status = new State {
                Name = Resources.Status, GroupName = "Status", ShowOnEndOfDayReport = true, ShowOnProductReport = false, ShowOnTicket = true
            };

            workspace.Add(status);

            var updateOrderAction = new AppAction
            {
                ActionType = ActionNames.UpdateOrder,
                Name       = string.Format(Resources.Update_f, Resources.Order),
                Parameter  = Params()
                             .Add("IncreaseInventory", "[:Increase]").Add("DecreaseInventory", "[:Decrease]")
                             .Add("CalculatePrice", "[:Calculate Price]").Add("Locked", "[:Locked]").
                             ToString(),
                SortOrder = -1
            };

            workspace.Add(updateOrderAction);

            var updateTicketStatusAction = new AppAction {
                ActionType = ActionNames.UpdateTicketState, Name = Resources.UpdateTicketStatus, Parameter = Params().Add("StateName", Resources.Status).Add("State", "[:Status]").Add("CurrentState", "[:Current Status]").ToString(), SortOrder = -1
            };

            workspace.Add(updateTicketStatusAction);
            var updateOrderStatusAction = new AppAction {
                ActionType = ActionNames.UpdateOrderState, Name = string.Format(Resources.Update_f, Resources.OrderStatus), Parameter = Params().Add("StateName", "Status").Add("State", "[:Status]").Add("CurrentState", "[:Current Status]").ToString(), SortOrder = -1
            };

            workspace.Add(updateOrderStatusAction);
            var updateOrderGiftStatusAction = new AppAction
            {
                ActionType = ActionNames.UpdateOrderState,
                Name       = Resources.UpdateOrderGiftState,
                Parameter  = Params()
                             .Add("StateName", "GStatus").Add("GroupOrder", "1")
                             .Add("CurrentState", "[:Current Status]").Add("State", "[:Status]")
                             .Add("StateOrder", "1").Add("StateValue", "[:Value]")
                             .ToString(),
                SortOrder = -1
            };

            workspace.Add(updateOrderGiftStatusAction);

            var updateEntityStateAction = new AppAction {
                ActionType = ActionNames.UpdateEntityState, Name = Resources.UpdateEntityState, Parameter = Params().Add("EntityStateName", "Status").Add("EntityState", "[:Status]").ToString(), SortOrder = -1
            };

            workspace.Add(updateEntityStateAction);
            var createTicketAction = new AppAction {
                ActionType = ActionNames.CreateTicket, Name = string.Format(Resources.Create_f, Resources.Ticket), Parameter = "", SortOrder = -1
            };

            workspace.Add(createTicketAction);
            var closeTicketAction = new AppAction {
                ActionType = ActionNames.CloseActiveTicket, Name = Resources.CloseTicket, Parameter = "", SortOrder = -1
            };

            workspace.Add(closeTicketAction);
            var displayPaymentScreenAction = new AppAction {
                ActionType = ActionNames.DisplayPaymentScreen, Name = Resources.DisplayPaymentScreen, Parameter = "", SortOrder = -1
            };

            workspace.Add(displayPaymentScreenAction);
            var printBillAction = new AppAction {
                ActionType = ActionNames.ExecutePrintJob, Name = Resources.ExecutePrintBillJob, Parameter = Params().Add("PrintJobName", Resources.PrintBill).ToString(), SortOrder = -1
            };

            workspace.Add(printBillAction);
            var printKitchenOrdersAction = new AppAction {
                ActionType = ActionNames.ExecutePrintJob, Name = Resources.ExecuteKitchenOrdersPrintJob, Parameter = Params().Add("PrintJobName", Resources.PrintOrdersToKitchenPrinter).Add("OrderStateName", "Status").Add("OrderState", Resources.New).ToString(), SortOrder = -1
            };

            workspace.Add(printKitchenOrdersAction);
            var lockTicketAction = new AppAction {
                ActionType = ActionNames.LockTicket, Name = Resources.LockTicket, Parameter = "", SortOrder = -1
            };

            workspace.Add(lockTicketAction);
            var unlockTicketAction = new AppAction {
                ActionType = ActionNames.UnlockTicket, Name = Resources.UnlockTicket, Parameter = "", SortOrder = -1
            };

            workspace.Add(unlockTicketAction);
            var markTicketAsClosed = new AppAction {
                ActionType = ActionNames.MarkTicketAsClosed, Name = Resources.MarkTicketAsClosed, Parameter = "", SortOrder = -1
            };

            workspace.Add(markTicketAsClosed);
            workspace.CommitChanges();

            var newTicketRule = new AppRule {
                Name = Resources.NewTicketCreatingRule, EventName = RuleEventNames.TicketCreated, SortOrder = -1
            };

            newTicketRule.Actions.Add(new ActionContainer(updateTicketStatusAction)
            {
                ParameterValues = string.Format("Status={0}", Resources.New)
            });
            newTicketRule.AddRuleMap();
            workspace.Add(newTicketRule);

            var newOrderAddingRule = new AppRule {
                Name = Resources.NewOrderAddingRule, EventName = RuleEventNames.OrderAdded, SortOrder = -1
            };

            newOrderAddingRule.Actions.Add(new ActionContainer(updateTicketStatusAction)
            {
                ParameterValues = string.Format("Status={0}", Resources.NewOrders)
            });
            newOrderAddingRule.Actions.Add(new ActionContainer(updateOrderStatusAction)
            {
                ParameterValues = string.Format("Status={0}", Resources.New)
            });
            newOrderAddingRule.AddRuleMap();
            workspace.Add(newOrderAddingRule);

            var ticketPayCheckRule = new AppRule {
                Name = Resources.TicketPaymentCheck, EventName = RuleEventNames.BeforeTicketClosing, EventConstraints = "RemainingAmount;=;0", SortOrder = -1
            };

            ticketPayCheckRule.Actions.Add(new ActionContainer(updateTicketStatusAction)
            {
                ParameterValues = "Status=" + Resources.Paid
            });
            ticketPayCheckRule.Actions.Add(new ActionContainer(markTicketAsClosed));
            ticketPayCheckRule.AddRuleMap();
            workspace.Add(ticketPayCheckRule);

            var ticketMovedRule = new AppRule {
                Name = Resources.TicketMovedRule, EventName = RuleEventNames.TicketMoved, SortOrder = -1
            };

            ticketMovedRule.Actions.Add(new ActionContainer(updateTicketStatusAction)
            {
                ParameterValues = string.Format("Status={0}", Resources.NewOrders)
            });
            ticketMovedRule.AddRuleMap();
            workspace.Add(ticketMovedRule);

            var ticketClosingRule = new AppRule {
                Name = string.Format(Resources.Rule_f, Resources.TicketClosing), EventName = RuleEventNames.TicketClosing, SortOrder = -1
            };

            ticketClosingRule.Actions.Add(new ActionContainer(printKitchenOrdersAction));
            ticketClosingRule.Actions.Add(new ActionContainer(updateTicketStatusAction)
            {
                ParameterValues = string.Format("Status={0}#Current Status={1}", Resources.Unpaid, Resources.NewOrders)
            });
            ticketClosingRule.Actions.Add(new ActionContainer(updateOrderStatusAction)
            {
                ParameterValues = string.Format("Status={0}#Current Status={1}", Resources.Submitted, Resources.New)
            });
            ticketClosingRule.AddRuleMap();
            workspace.Add(ticketClosingRule);

            var giftOrderRule = new AppRule {
                Name = string.Format(Resources.Rule_f, Resources.Gift), EventName = RuleEventNames.AutomationCommandExecuted, EventConstraints = string.Format("AutomationCommandName;=;{0}", giftItemAutomation.Name), SortOrder = -1
            };

            giftOrderRule.Actions.Add(new ActionContainer(updateOrderAction)
            {
                ParameterValues = "Decrease=True#Calculate Price=False"
            });
            giftOrderRule.Actions.Add(new ActionContainer(updateOrderGiftStatusAction)
            {
                ParameterValues = string.Format("Status={0}#Value=[:Value]", Resources.Gift)
            });
            giftOrderRule.AddRuleMap();
            workspace.Add(giftOrderRule);

            var cancelGiftOrderRule = new AppRule {
                Name = string.Format(Resources.Rule_f, string.Format(Resources.Cancel_f, Resources.Gift)), EventName = RuleEventNames.AutomationCommandExecuted, EventConstraints = string.Format("AutomationCommandName;=;{0}", cancelGiftItemAutomation.Name), SortOrder = -1
            };

            cancelGiftOrderRule.Actions.Add(new ActionContainer(updateOrderAction)
            {
                ParameterValues = "Decrease=True#Calculate Price=True"
            });
            cancelGiftOrderRule.Actions.Add(new ActionContainer(updateOrderGiftStatusAction)
            {
                ParameterValues = string.Format("Current Status={0}#Status=#Value=", Resources.Gift)
            });
            cancelGiftOrderRule.AddRuleMap();
            workspace.Add(cancelGiftOrderRule);

            var voidOrderRule = new AppRule {
                Name = string.Format(Resources.Rule_f, Resources.Void), EventName = RuleEventNames.AutomationCommandExecuted, EventConstraints = string.Format("AutomationCommandName;=;{0}", voidItemAutomation.Name), SortOrder = -1
            };

            voidOrderRule.Actions.Add(new ActionContainer(updateOrderAction)
            {
                ParameterValues = "Decrease=False#Calculate Price=False"
            });
            voidOrderRule.Actions.Add(new ActionContainer(updateOrderGiftStatusAction)
            {
                ParameterValues = string.Format("Status={0}#Value=[:Value]", Resources.Void)
            });
            voidOrderRule.Actions.Add(new ActionContainer(updateOrderStatusAction)
            {
                ParameterValues = string.Format("Status={0}", Resources.New)
            });
            voidOrderRule.AddRuleMap();
            workspace.Add(voidOrderRule);

            var cancelVoidOrderRule = new AppRule {
                Name = string.Format(Resources.Rule_f, string.Format(Resources.Cancel_f, Resources.Void)), EventName = RuleEventNames.AutomationCommandExecuted, EventConstraints = string.Format("AutomationCommandName;=;{0}", cancelVoidItemAutomation.Name), SortOrder = -1
            };

            cancelVoidOrderRule.Actions.Add(new ActionContainer(updateOrderAction)
            {
                ParameterValues = "Decrease=True#Calculate Price=True"
            });
            cancelVoidOrderRule.Actions.Add(new ActionContainer(updateOrderGiftStatusAction)
            {
                ParameterValues = string.Format("Current Status={0}#Status=#Value=", Resources.Void)
            });
            cancelVoidOrderRule.Actions.Add(new ActionContainer(updateOrderStatusAction)
            {
                ParameterValues = string.Format("Status={0}", Resources.Submitted)
            });
            cancelVoidOrderRule.AddRuleMap();
            workspace.Add(cancelVoidOrderRule);

            var newOrderRule = new AppRule {
                Name = Resources.UpdateNewOrderEntityColor, EventName = RuleEventNames.TicketStateUpdated, EventConstraints = "State;=;" + Resources.Unpaid, SortOrder = -1
            };

            newOrderRule.Actions.Add(new ActionContainer(updateEntityStateAction)
            {
                ParameterValues = "Status=" + Resources.NewOrders
            });
            newOrderRule.AddRuleMap();
            workspace.Add(newOrderRule);

            var availableRule = new AppRule {
                Name = Resources.UpdateAvailableEntityColor, EventName = RuleEventNames.EntityUpdated, EventConstraints = "OpenTicketCount;=;0", SortOrder = -1
            };
            var ac2 = new ActionContainer(updateEntityStateAction)
            {
                ParameterValues = string.Format("Status={0}", Resources.Available)
            };

            availableRule.Actions.Add(ac2);
            availableRule.AddRuleMap();
            workspace.Add(availableRule);

            var movingRule = new AppRule {
                Name = Resources.UpdateMovedEntityColor, EventName = "TicketEntityChanged", EventConstraints = "OrderCount;>;0", SortOrder = -1
            };
            var ac3 = new ActionContainer(updateEntityStateAction)
            {
                ParameterValues = string.Format("Status={0}", Resources.NewOrders)
            };

            movingRule.Actions.Add(ac3);
            movingRule.AddRuleMap();
            workspace.Add(movingRule);

            var printBillRule = new AppRule {
                Name = string.Format(Resources.Rule_f, Resources.PrintBill), EventName = RuleEventNames.AutomationCommandExecuted, EventConstraints = "AutomationCommandName;=;" + Resources.PrintBill, SortOrder = -1
            };

            printBillRule.Actions.Add(new ActionContainer(printBillAction));
            printBillRule.Actions.Add(new ActionContainer(lockTicketAction));
            printBillRule.Actions.Add(new ActionContainer(updateEntityStateAction)
            {
                ParameterValues = string.Format("Status={0}", Resources.BillRequested)
            });
            printBillRule.Actions.Add(new ActionContainer(updateTicketStatusAction)
            {
                ParameterValues = string.Format("Status={0}", Resources.Locked)
            });
            printBillRule.Actions.Add(new ActionContainer(closeTicketAction));
            printBillRule.AddRuleMap();
            workspace.Add(printBillRule);

            var unlockTicketRule = new AppRule {
                Name = string.Format(Resources.Rule_f, Resources.UnlockTicket), EventName = RuleEventNames.AutomationCommandExecuted, EventConstraints = "AutomationCommandName;=;" + Resources.UnlockTicket, SortOrder = -1
            };

            unlockTicketRule.Actions.Add(new ActionContainer(unlockTicketAction));
            unlockTicketRule.Actions.Add(new ActionContainer(updateTicketStatusAction)
            {
                ParameterValues = string.Format("Status={0}", Resources.Unpaid)
            });
            unlockTicketRule.AddRuleMap();
            workspace.Add(unlockTicketRule);

            var createTicketRule = new AppRule {
                Name = string.Format(Resources.Rule_f, string.Format(Resources.Create_f, Resources.Ticket)), EventName = RuleEventNames.AutomationCommandExecuted, EventConstraints = "AutomationCommandName;=;" + string.Format(Resources.Add_f, Resources.Ticket), SortOrder = -1
            };

            createTicketRule.Actions.Add(new ActionContainer(createTicketAction));
            createTicketRule.AddRuleMap();
            workspace.Add(createTicketRule);

            var updateMergedTicket = new AppRule {
                Name = Resources.UpdateMergedTicketsState, EventName = RuleEventNames.TicketsMerged, SortOrder = -1
            };

            updateMergedTicket.Actions.Add(new ActionContainer(updateEntityStateAction)
            {
                ParameterValues = string.Format("Status={0}", Resources.NewOrders)
            });
            updateMergedTicket.Actions.Add(new ActionContainer(updateTicketStatusAction)
            {
                ParameterValues = string.Format("Status={0}", Resources.NewOrders)
            });
            updateMergedTicket.AddRuleMap();
            workspace.Add(updateMergedTicket);

            var closeTicketRule = new AppRule {
                Name = string.Format(Resources.Rule_f, Resources.CloseTicket), EventName = RuleEventNames.AutomationCommandExecuted, EventConstraints = "AutomationCommandName;=;" + Resources.CloseTicket, SortOrder = -1
            };

            closeTicketRule.Actions.Add(new ActionContainer(closeTicketAction));
            closeTicketRule.AddRuleMap();
            workspace.Add(closeTicketRule);

            var settleTicketRule = new AppRule {
                Name = string.Format(Resources.Rule_f, Resources.Settle), EventName = RuleEventNames.AutomationCommandExecuted, EventConstraints = "AutomationCommandName;=;" + Resources.Settle, SortOrder = -1
            };

            settleTicketRule.Actions.Add(new ActionContainer(displayPaymentScreenAction));
            settleTicketRule.AddRuleMap();
            workspace.Add(settleTicketRule);

            workspace.CommitChanges();
        }
コード例 #13
0
        public void CreateData()
        {
            CreateDefaultCurrenciesIfNeeded();

            if (!ShouldCreateData())
            {
                return;
            }

            var saleAccountType = new AccountType {
                Name = string.Format(Resources.Accounts_f, Resources.Sales)
            };
            var receivableAccountType = new AccountType {
                Name = string.Format(Resources.Accounts_f, Resources.Receiveable)
            };
            var paymentAccountType = new AccountType {
                Name = string.Format(Resources.Accounts_f, Resources.Payment)
            };
            var discountAccountType = new AccountType {
                Name = string.Format(Resources.Accounts_f, Resources.Discount)
            };
            var customerAccountType = new AccountType {
                Name = string.Format(Resources.Accounts_f, Resources.Customer)
            };

            _workspace.Add(receivableAccountType);
            _workspace.Add(saleAccountType);
            _workspace.Add(paymentAccountType);
            _workspace.Add(discountAccountType);
            _workspace.Add(customerAccountType);
            _workspace.CommitChanges();

            var customerResourceType = new ResourceType {
                Name = Resources.Customers, EntityName = Resources.Customer, AccountTypeId = customerAccountType.Id
            };

            customerResourceType.ResoruceCustomFields.Add(new ResourceCustomField {
                EditingFormat = "(###) ### ####", FieldType = 0, Name = Resources.Phone
            });
            customerResourceType.AccountNameTemplate = "[Name]-[Phone]";
            var tableResourceType = new ResourceType {
                Name = Resources.Tables, EntityName = Resources.Table
            };

            _workspace.Add(customerResourceType);
            _workspace.Add(tableResourceType);

            _workspace.CommitChanges();

            var accountScreen = new AccountScreen {
                Name = Resources.General
            };

            accountScreen.AccountScreenValues.Add(new AccountScreenValue {
                AccountTypeName = saleAccountType.Name, AccountTypeId = saleAccountType.Id, DisplayDetails = true
            });
            accountScreen.AccountScreenValues.Add(new AccountScreenValue {
                AccountTypeName = receivableAccountType.Name, AccountTypeId = receivableAccountType.Id, DisplayDetails = true
            });
            accountScreen.AccountScreenValues.Add(new AccountScreenValue {
                AccountTypeName = discountAccountType.Name, AccountTypeId = discountAccountType.Id, DisplayDetails = true
            });
            accountScreen.AccountScreenValues.Add(new AccountScreenValue {
                AccountTypeName = paymentAccountType.Name, AccountTypeId = paymentAccountType.Id, DisplayDetails = true
            });
            _workspace.Add(accountScreen);

            var defaultSaleAccount = new Account {
                AccountTypeId = saleAccountType.Id, Name = Resources.Sales
            };
            var defaultReceivableAccount = new Account {
                AccountTypeId = receivableAccountType.Id, Name = Resources.Receivables
            };
            var cashAccount = new Account {
                AccountTypeId = paymentAccountType.Id, Name = Resources.Cash
            };
            var creditCardAccount = new Account {
                AccountTypeId = paymentAccountType.Id, Name = Resources.CreditCard
            };
            var voucherAccount = new Account {
                AccountTypeId = paymentAccountType.Id, Name = Resources.Voucher
            };
            var defaultDiscountAccount = new Account {
                AccountTypeId = discountAccountType.Id, Name = Resources.Discount
            };
            var defaultRoundingAccount = new Account {
                AccountTypeId = discountAccountType.Id, Name = Resources.Rounding
            };

            _workspace.Add(defaultSaleAccount);
            _workspace.Add(defaultReceivableAccount);
            _workspace.Add(defaultDiscountAccount);
            _workspace.Add(defaultRoundingAccount);
            _workspace.Add(cashAccount);
            _workspace.Add(creditCardAccount);
            _workspace.Add(voucherAccount);

            _workspace.CommitChanges();

            var discountTransactionType = new AccountTransactionType
            {
                Name = string.Format(Resources.Transaction_f, Resources.Discount),
                SourceAccountTypeId    = receivableAccountType.Id,
                TargetAccountTypeId    = discountAccountType.Id,
                DefaultSourceAccountId = defaultReceivableAccount.Id,
                DefaultTargetAccountId = defaultDiscountAccount.Id
            };

            var roundingTransactionType = new AccountTransactionType
            {
                Name = string.Format(Resources.Transaction_f, Resources.Rounding),
                SourceAccountTypeId    = receivableAccountType.Id,
                TargetAccountTypeId    = discountAccountType.Id,
                DefaultSourceAccountId = defaultReceivableAccount.Id,
                DefaultTargetAccountId = defaultRoundingAccount.Id
            };

            var saleTransactionType = new AccountTransactionType
            {
                Name = string.Format(Resources.Transaction_f, Resources.Sale),
                SourceAccountTypeId    = saleAccountType.Id,
                TargetAccountTypeId    = receivableAccountType.Id,
                DefaultSourceAccountId = defaultSaleAccount.Id,
                DefaultTargetAccountId = defaultReceivableAccount.Id
            };

            var paymentTransactionType = new AccountTransactionType
            {
                Name = string.Format(Resources.Transaction_f, Resources.Payment),
                SourceAccountTypeId    = receivableAccountType.Id,
                TargetAccountTypeId    = paymentAccountType.Id,
                DefaultSourceAccountId = defaultReceivableAccount.Id,
                DefaultTargetAccountId = cashAccount.Id
            };

            var customerAccountTransactionType = new AccountTransactionType
            {
                Name = "Customer Account Transaction",
                SourceAccountTypeId    = receivableAccountType.Id,
                TargetAccountTypeId    = customerAccountType.Id,
                DefaultSourceAccountId = defaultReceivableAccount.Id
            };

            var customerCashPaymentType = new AccountTransactionType
            {
                Name = "Customer Cash Payment",
                SourceAccountTypeId    = customerAccountType.Id,
                TargetAccountTypeId    = paymentAccountType.Id,
                DefaultTargetAccountId = cashAccount.Id
            };

            var customerCreditCardPaymentType = new AccountTransactionType
            {
                Name = "Customer Credit Card Payment",
                SourceAccountTypeId    = customerAccountType.Id,
                TargetAccountTypeId    = paymentAccountType.Id,
                DefaultTargetAccountId = creditCardAccount.Id
            };

            _workspace.Add(saleTransactionType);
            _workspace.Add(paymentTransactionType);
            _workspace.Add(discountTransactionType);
            _workspace.Add(roundingTransactionType);
            _workspace.Add(customerAccountTransactionType);
            _workspace.Add(customerCashPaymentType);
            _workspace.Add(customerCreditCardPaymentType);

            var customerCashDocument = new AccountTransactionDocumentType
            {
                Name                = "Customer Cash",
                ButtonHeader        = Resources.Cash,
                DefaultAmount       = string.Format("[{0}]", Resources.Balance),
                DescriptionTemplate = string.Format(Resources.Payment_f, Resources.Cash),
                MasterAccountTypeId = customerAccountType.Id
            };

            customerCashDocument.AddAccountTransactionDocumentTypeMap();
            customerCashDocument.TransactionTypes.Add(customerCashPaymentType);

            var customerCreditCardDocument = new AccountTransactionDocumentType
            {
                Name                = "Customer Credit Card",
                ButtonHeader        = Resources.CreditCard,
                DefaultAmount       = string.Format("[{0}]", Resources.Balance),
                DescriptionTemplate = string.Format(Resources.Payment_f, Resources.CreditCard),
                MasterAccountTypeId = customerAccountType.Id
            };

            customerCreditCardDocument.AddAccountTransactionDocumentTypeMap();
            customerCreditCardDocument.TransactionTypes.Add(customerCreditCardPaymentType);

            _workspace.Add(customerCashDocument);
            _workspace.Add(customerCreditCardDocument);

            var discountService = new CalculationType
            {
                AccountTransactionType = discountTransactionType,
                CalculationMethod      = 0,
                DecreaseAmount         = true,
                Name = Resources.Discount
            };

            var roundingService = new CalculationType
            {
                AccountTransactionType = roundingTransactionType,
                CalculationMethod      = 2,
                DecreaseAmount         = true,
                IncludeTax             = true,
                Name = Resources.Round
            };

            var discountSelector = new CalculationSelector {
                Name = Resources.Discount, ButtonHeader = Resources.DiscountPercentSign
            };

            discountSelector.CalculationTypes.Add(discountService);
            discountSelector.AddCalculationSelectorMap();

            var roundingSelector = new CalculationSelector {
                Name = Resources.Round, ButtonHeader = Resources.Round
            };

            roundingSelector.CalculationTypes.Add(roundingService);
            roundingSelector.AddCalculationSelectorMap();


            _workspace.Add(discountService);
            _workspace.Add(roundingService);
            _workspace.Add(discountSelector);
            _workspace.Add(roundingSelector);

            var screen = new ScreenMenu();

            _workspace.Add(screen);

            var ticketNumerator = new Numerator {
                Name = Resources.TicketNumerator
            };

            _workspace.Add(ticketNumerator);

            var orderNumerator = new Numerator {
                Name = Resources.OrderNumerator
            };

            _workspace.Add(orderNumerator);

            var printBillAutomation = new AutomationCommand {
                Name = Resources.PrintBill, ButtonHeader = Resources.PrintBill
            };

            printBillAutomation.AutomationCommandMaps.Add(new AutomationCommandMap {
                VisualBehaviour = 1
            });
            _workspace.Add(printBillAutomation);

            var unlockTicketAutomation = new AutomationCommand {
                Name = Resources.UnlockTicket, ButtonHeader = Resources.UnlockTicket
            };

            unlockTicketAutomation.AutomationCommandMaps.Add(new AutomationCommandMap {
                VisualBehaviour = 2
            });
            _workspace.Add(unlockTicketAutomation);

            var addTicketAutomation = new AutomationCommand {
                Name = string.Format(Resources.Add_f, Resources.Ticket), ButtonHeader = string.Format(Resources.Add_f, Resources.Ticket)
            };

            addTicketAutomation.AddAutomationCommandMap();
            _workspace.Add(addTicketAutomation);

            _workspace.CommitChanges();

            var ticketTemplate = new TicketTemplate
            {
                Name                = Resources.TicketTemplate,
                TicketNumerator     = ticketNumerator,
                OrderNumerator      = orderNumerator,
                SaleTransactionType = saleTransactionType,
            };

            var cashPayment = new PaymentType
            {
                AccountTransactionType = paymentTransactionType,
                Account = cashAccount,
                Name    = cashAccount.Name
            };

            cashPayment.PaymentTypeMaps.Add(new PaymentTypeMap {
                DisplayAtPaymentScreen = true
            });

            var creditCardPayment = new PaymentType
            {
                AccountTransactionType = paymentTransactionType,
                Account = creditCardAccount,
                Name    = creditCardAccount.Name
            };

            creditCardPayment.PaymentTypeMaps.Add(new PaymentTypeMap {
                DisplayAtPaymentScreen = true
            });

            var voucherPayment = new PaymentType
            {
                AccountTransactionType = paymentTransactionType,
                Account = voucherAccount,
                Name    = voucherAccount.Name
            };

            voucherPayment.PaymentTypeMaps.Add(new PaymentTypeMap {
                DisplayAtPaymentScreen = true
            });

            var accountPayment = new PaymentType
            {
                AccountTransactionType = customerAccountTransactionType,
                Name = Resources.CustomerAccount
            };

            accountPayment.PaymentTypeMaps.Add(new PaymentTypeMap {
                DisplayAtPaymentScreen = true
            });

            _workspace.Add(cashPayment);
            _workspace.Add(creditCardPayment);
            _workspace.Add(voucherPayment);
            _workspace.Add(ticketTemplate);
            _workspace.Add(accountPayment);

            var department = new Department
            {
                Name           = Resources.Restaurant,
                TicketTemplate = ticketTemplate,
                ScreenMenuId   = screen.Id,
            };

            _workspace.Add(department);

            var role = new UserRole("Admin")
            {
                IsAdmin = true, DepartmentId = 1
            };

            _workspace.Add(role);

            var u = new User("Administrator", "1234")
            {
                UserRole = role
            };

            _workspace.Add(u);

            var ticketPrinterTemplate = new PrinterTemplate {
                Name = Resources.TicketTemplate, Template = Resources.TicketTemplateValue
            };
            var kitchenPrinterTemplate = new PrinterTemplate {
                Name = Resources.KitchenOrderTemplate, Template = Resources.KitchenTemplateValue
            };

            _workspace.Add(ticketPrinterTemplate);
            _workspace.Add(kitchenPrinterTemplate);

            var printer1 = new Printer {
                Name = Resources.TicketPrinter
            };
            var printer2 = new Printer {
                Name = Resources.KitchenPrinter
            };
            var printer3 = new Printer {
                Name = Resources.InvoicePrinter
            };

            _workspace.Add(printer1);
            _workspace.Add(printer2);
            _workspace.Add(printer3);

            _workspace.CommitChanges();

            var t = new Terminal
            {
                IsDefault     = true,
                Name          = Resources.Server,
                ReportPrinter = printer1,
            };

            var pm1 = new PrinterMap {
                PrinterId = printer1.Id, PrinterTemplateId = ticketPrinterTemplate.Id
            };

            _workspace.Add(pm1);

            var pj1 = new PrintJob
            {
                Name        = Resources.PrintBill,
                LocksTicket = true,
                WhatToPrint = (int)WhatToPrintTypes.Everything,
            };

            pj1.PrinterMaps.Add(pm1);


            _workspace.Add(pj1);

            var pm2 = new PrinterMap {
                PrinterId = printer2.Id, PrinterTemplateId = kitchenPrinterTemplate.Id
            };
            var pj2 = new PrintJob
            {
                Name        = Resources.PrintOrdersToKitchenPrinter,
                WhatToPrint = (int)WhatToPrintTypes.NewLines,
            };

            pj2.PrinterMaps.Add(pm2);

            _workspace.Add(pj2);
            _workspace.Add(t);

            var orderTag1 = new OrderStateGroup {
                Name = Resources.Gift, ButtonHeader = Resources.Gift, CalculateOrderPrice = false, DecreaseOrderInventory = true
            };

            orderTag1.OrderStates.Add(new OrderState {
                Name = Resources.Gift
            });
            orderTag1.AddOrderStateMap();
            _workspace.Add(orderTag1);

            var orderTag2 = new OrderStateGroup {
                Name = Resources.Void, ButtonHeader = Resources.Void, CalculateOrderPrice = false, DecreaseOrderInventory = false
            };

            orderTag2.OrderStates.Add(new OrderState {
                Name = Resources.Void
            });
            orderTag2.UnlocksOrder = true;
            orderTag2.AddOrderStateMap();
            _workspace.Add(orderTag2);

            const string parameterFormat = "[{{\"Key\":\"{0}\",\"Value\":\"{1}\"}}]";
            //const string doubleParameterFormat = "[{{\"Key\":\"{0}\",\"Value\":\"{1}\"}},{{\"Key\":\"{2}\",\"Value\":\"{3}\"}}]";

            var newOrderState = new ResourceState {
                Name = "New Orders", Color = "Orange"
            };

            _workspace.Add(newOrderState);

            var availableState = new ResourceState {
                Name = "Available", Color = "White"
            };

            _workspace.Add(availableState);

            var billRequestedState = new ResourceState {
                Name = "Bill Requested", Color = "Maroon"
            };

            _workspace.Add(billRequestedState);

            var newOrderAction = new AppAction {
                ActionType = "UpdateResourceState", Name = "Update New Order State", Parameter = string.Format(parameterFormat, "ResourceState", "New Orders")
            };

            _workspace.Add(newOrderAction);
            var availableAction = new AppAction {
                ActionType = "UpdateResourceState", Name = "Update Available State", Parameter = string.Format(parameterFormat, "ResourceState", "Available")
            };

            _workspace.Add(availableAction);
            var billRequestedAction = new AppAction {
                ActionType = "UpdateResourceState", Name = "Update Bill Requested State", Parameter = string.Format(parameterFormat, "ResourceState", "Bill Requested")
            };

            _workspace.Add(billRequestedAction);
            var createTicketAction = new AppAction {
                ActionType = "CreateTicket", Name = string.Format(Resources.Create_f, Resources.Ticket), Parameter = ""
            };

            _workspace.Add(createTicketAction);
            var closeTicketAction = new AppAction {
                ActionType = "CloseActiveTicket", Name = Resources.CloseTicket, Parameter = ""
            };

            _workspace.Add(closeTicketAction);
            var printBillAction = new AppAction {
                ActionType = "ExecutePrintJob", Name = "Execute Bill Print Job", Parameter = string.Format(parameterFormat, "PrintJobName", Resources.PrintBill)
            };

            _workspace.Add(printBillAction);
            var printKitchenOrdersAction = new AppAction {
                ActionType = "ExecutePrintJob", Name = "Execute Kitchen Orders Print Job", Parameter = string.Format(parameterFormat, "PrintJobName", Resources.PrintOrdersToKitchenPrinter)
            };

            _workspace.Add(printKitchenOrdersAction);
            var unlockTicketAction = new AppAction {
                ActionType = "UnlockTicket", Name = Resources.UnlockTicket, Parameter = ""
            };

            _workspace.Add(unlockTicketAction);
            _workspace.CommitChanges();

            var newOrderRule = new AppRule {
                Name = "Update New Order Resource Color", EventName = "TicketClosing", EventConstraints = "NewOrderCount;>;0"
            };

            newOrderRule.Actions.Add(new ActionContainer(printKitchenOrdersAction));
            newOrderRule.Actions.Add(new ActionContainer(newOrderAction));
            newOrderRule.AddRuleMap();
            _workspace.Add(newOrderRule);

            var availableRule = new AppRule {
                Name = "Update Available Resource Color", EventName = "ResourceUpdated", EventConstraints = "OpenTicketCount;=;0"
            };
            var ac2 = new ActionContainer(availableAction);

            availableRule.Actions.Add(ac2);
            availableRule.AddRuleMap();
            _workspace.Add(availableRule);

            var movingRule = new AppRule {
                Name = "Update Moved Resource Color", EventName = "TicketResourceChanged", EventConstraints = "OrderCount;>;0"
            };
            var ac3 = new ActionContainer(newOrderAction);

            movingRule.Actions.Add(ac3);
            movingRule.AddRuleMap();
            _workspace.Add(movingRule);

            var printBillRule = new AppRule {
                Name = "Print Bill Rule", EventName = RuleEventNames.AutomationCommandExecuted, EventConstraints = "AutomationCommandName;=;" + Resources.PrintBill
            };

            printBillRule.Actions.Add(new ActionContainer(printBillAction));
            printBillRule.Actions.Add(new ActionContainer(billRequestedAction));
            printBillRule.Actions.Add(new ActionContainer(closeTicketAction));
            printBillRule.AddRuleMap();
            _workspace.Add(printBillRule);

            var unlockTicketRule = new AppRule {
                Name = "Unlock Ticket Rule", EventName = RuleEventNames.AutomationCommandExecuted, EventConstraints = "AutomationCommandName;=;Unlock Ticket"
            };

            unlockTicketRule.Actions.Add(new ActionContainer(unlockTicketAction));
            unlockTicketRule.AddRuleMap();
            _workspace.Add(unlockTicketRule);

            var createTicketRule = new AppRule {
                Name = "Create Ticket Rule", EventName = RuleEventNames.AutomationCommandExecuted, EventConstraints = "AutomationCommandName;=;Add Ticket"
            };

            createTicketRule.Actions.Add(new ActionContainer(createTicketAction));
            createTicketRule.AddRuleMap();
            _workspace.Add(createTicketRule);

            var updateMergedTicket = new AppRule {
                Name = "Update Merged Tickets State", EventName = RuleEventNames.TicketsMerged
            };

            updateMergedTicket.Actions.Add(new ActionContainer(newOrderAction));
            updateMergedTicket.AddRuleMap();
            _workspace.Add(updateMergedTicket);

            ImportMenus(screen);
            ImportTableResources(tableResourceType, availableState.Id);

            var customerScreen = new ResourceScreen {
                Name = "Customer Search", DisplayMode = 2, ResourceTypeId = customerResourceType.Id
            };

            customerScreen.ResourceScreenMaps.Add(new ResourceScreenMap());
            _workspace.Add(customerScreen);

            var customerTicketScreen = new ResourceScreen {
                Name = "Customer Tickets", DisplayMode = 0, ResourceTypeId = customerResourceType.Id, StateFilterId = newOrderState.Id, ColumnCount = 6, RowCount = 6
            };

            customerTicketScreen.ResourceScreenMaps.Add(new ResourceScreenMap());
            _workspace.Add(customerTicketScreen);


            ImportItems(BatchCreateResources);
            ImportItems(BatchCreateTransactionTypes);
            ImportItems(BatchCreateTransactionTypeDocuments);

            _workspace.CommitChanges();
            _workspace.Dispose();
        }
 public AccountScreenAutmationCommandMapViewModel(AccountScreenAutmationCommandMap model, ICacheService cacheService)
     : this(model)
 {
     _cacheService     = cacheService;
     AutomationCommand = _cacheService.GetAutomationCommandByName(model.AutomationCommandName);
 }
コード例 #15
0
 public IActionResult Add([FromBody] AutomationCommand item)
 {
     this.DAL.AutomationCommand.Add(item);
     this.DAL.SaveChanges();
     return(Ok());
 }
 private void SetSelectedAutomationCommand(AutomationCommand command)
 {
     SelectedAutomationCommand = command;
     RaisePropertyChanged(() => SelectedAutomationCommand);
 }