Esempio n. 1
0
    public static SoftTech.Wui.HtmlResult<HElement> HView(object _state, JsonData json, HContext context)
    {
      var state = _state.As<SecondState>() ?? new SecondState();

      if (json != null)
      {
        switch (json.JPath("data", "command").ToString_Fair())
        {
          default:
            break;
        }
      }

      var page = Page();
      return new SoftTech.Wui.HtmlResult<HElement>
      {
        Html = page,
        State = state,
      };
    }
Esempio n. 2
0
    public static SoftTech.Wui.HtmlResult<HElement> HView(object _state, JsonData json, HContext context)
    {
      var state = _state.As<MainState>() ?? new MainState();

      if (json != null)
      {
        switch (json.JPath("data", "command").ToString_Fair())
        {
          case "new-order":
            {
              var name = json.JPath("data", "name").ToString_Fair() ?? "C";
              var isDelivery = json.JPath("data", "is-delivery").ToString_Fair() == "True";
              var toTime = ToTime(json.JPath("data", "to-time").ToString_Fair());
              var status = toTime == null ? ProductStatus.New: ProductStatus.InQueue;
              var products = name == "B" ? new[] { new Product("K", status) } : new[] { new Product("M", status), new Product("P", status) };
              state = state.With(orders: state.Orders.Add(new Order(name: name, isDelivery: isDelivery, status: toTime == null ? OrderStatus.New: OrderStatus.InQueue, products: ImmutableArray.Create(products), toTime: toTime)));  
            }
            break;
          case "product-prepare":
            {
              var orderId = ConvertHlp.ToGuid(json.JPath("data", "order"));
              var productId = ConvertHlp.ToGuid(json.JPath("data", "product"));
              var order = state.Orders.FirstOrDefault(_order => _order.Id == orderId);
              var product = order._f(_ => _.Products).Else_Empty().FirstOrDefault(_product => _product.Id == productId);
              if (product != null && product.Status != ProductStatus.New)
                product = null;
              if (product != null)
              {
                state = state.With(orders: state.Orders.Replace(order, order.With(products: order.Products.Replace(product, product.With(status: ProductStatus.Prepare)))));
              }
            }
            break;
          case "product-ready":
            {
              var orderId = ConvertHlp.ToGuid(json.JPath("data", "order"));
              var productId = ConvertHlp.ToGuid(json.JPath("data", "product"));
              var order = state.Orders.FirstOrDefault(_order => _order.Id == orderId);
              var product = order._f(_ => _.Products).Else_Empty().FirstOrDefault(_product => _product.Id == productId);
              if (product != null && product.Status != ProductStatus.Prepare)
                product = null;
              if (product != null)
              {
                state = state.With(orders: state.Orders.Replace(order, order.With(products: order.Products.Replace(product, product.With(status: ProductStatus.Ready)))));
              }
            }
            break;
          case "order-build":
            {
              var orderId = ConvertHlp.ToGuid(json.JPath("data", "order"));
              var order = state.Orders.FirstOrDefault(_order => _order.Id == orderId);
              if (order != null && order.Status != OrderStatus.Prepare && !order.IsReady)
                order = null;
              if (order != null)
              {
                state = state.With(orders: state.Orders.Replace(order, order.With(status: OrderStatus.Ready)));
              }
            }
            break;
          case "courier":
            {
              var orderId = ConvertHlp.ToGuid(json.JPath("data", "order"));
              var courier = json.JPath("data", "courier").ToString_Fair();
              var order = state.Orders.FirstOrDefault(_order => _order.Id == orderId);
              if (order != null && order.Status != OrderStatus.Ready && !order.IsDelivery)
                order = null;
              if (order != null)
              {
                state = state.With(orders: state.Orders.Replace(order, order.With(status: OrderStatus.ToDelivery, courier: courier)));
              }
            }
            break;
          case "order-deliveried":
            {
              var orderId = ConvertHlp.ToGuid(json.JPath("data", "order"));
              var order = state.Orders.FirstOrDefault(_order => _order.Id == orderId);
              if (order != null && order.Status != OrderStatus.ToDelivery)
                order = null;
              if (order != null)
              {
                state = state.With(orders: state.Orders.Replace(order, order.With(status: OrderStatus.Deliveried)));
              }
            }
            break;
          case "order-to-table":
            {
              var orderId = ConvertHlp.ToGuid(json.JPath("data", "order"));
              var order = state.Orders.FirstOrDefault(_order => _order.Id == orderId);
              if (order != null && order.Status != OrderStatus.Ready && order.IsDelivery)
                order = null;
              if (order != null)
              {
                state = state.With(orders: state.Orders.Replace(order, order.With(status: OrderStatus.ToTable)));
              }
            }
            break;
          default:
            break;
        }
      }
      state = state.With(orders: DeQueue(state.Orders, DateTime.Now));

      var page = Page(state);
      return new SoftTech.Wui.HtmlResult<HElement>
      {
        Html = page,
        State = state,
      };
    }