示例#1
0
        public static ViewModels.OrderViewModel ToOrderViewModel(this Models.OrderModel model)
        {
            if (model == null)
            {
                return(null);
            }

            var vm = new ViewModels.OrderViewModel()
            {
                CustomerUser = model.CustomerUser != null?model.CustomerUser.ToUserDataViewModel() : new UserDataViewModel(),
                                   StoreUser = model.StoreUser != null?model.StoreUser.ToUserDataViewModel() : new UserDataViewModel(),
                                                   OrderIdentifier = model.OrderIdentifier,
                                                   OrderState      = model.OrderState,
                                                   OrderType       = model.OrderType,
                                                   CreationDate    = model.CreationDate,
                                                   PaymentState    = model.PaymentState,
                                                   ShippingState   = model.ShippingState,
                                                   Items           = new List <OrderItemViewModel>()
            };

            foreach (var item in model.Items)
            {
                vm.Items.Add(item.ToOrderItemViewModel());
            }
            return(vm);
        }
示例#2
0
 public MainViewModel()
 {
     navigationService = new NavigationService();
     apiService        = new ApiService();
     Orders            = new ObservableCollection <OrderViewModel>();
     newOrder          = new ViewModels.OrderViewModel();
     LoadMenu();
     LoadData();
 }
示例#3
0
        public ViewModels.OrderViewModel ProcessOrder(ViewModels.OrderViewModel orderViewModel, bool SentFromStoreUser)
        {
            switch (orderViewModel.OrderState)
            {
            case Enums.EnumOrderState.Undef:
                //its a new order
                orderViewModel = orderRepository.AddOrder(orderViewModel.Items, orderViewModel.CustomerUser, orderViewModel.StoreUser);

                GlobalHost.ConnectionManager.GetHubContext <ServiceHub>().Clients.Clients(
                    Utils.SignalRServiceUtils.JoinClientLists(orderViewModel.CustomerUser.SignalRConnections, orderViewModel.StoreUser.SignalRConnections)
                    ).updateOrder(orderViewModel);
                break;

            case Enums.EnumOrderState.ClientPlacedOrder:
                //the item has been acknowledged from Server

                orderViewModel.OrderState = Enums.EnumOrderState.HostConfirmedOrder;
                orderRepository.UpdateOrderState(orderViewModel.OrderIdentifier, Enums.EnumOrderState.HostConfirmedOrder);

                GlobalHost.ConnectionManager.GetHubContext <ServiceHub>().Clients.Clients(
                    Utils.SignalRServiceUtils.JoinClientLists(orderViewModel.CustomerUser.SignalRConnections, orderViewModel.StoreUser.SignalRConnections)
                    ).updateOrder(orderViewModel);

                break;

            case Enums.EnumOrderState.HostConfirmedOrder:
                //the item has been receive-ack by client
                orderViewModel.OrderState = Enums.EnumOrderState.ClientOrderFinished;
                orderRepository.UpdateOrderState(orderViewModel.OrderIdentifier, Enums.EnumOrderState.ClientOrderFinished);

                GlobalHost.ConnectionManager.GetHubContext <ServiceHub>().Clients.Clients(
                    Utils.SignalRServiceUtils.JoinClientLists(orderViewModel.CustomerUser.SignalRConnections, orderViewModel.StoreUser.SignalRConnections)
                    ).updateOrder(orderViewModel);
                break;

            case Enums.EnumOrderState.ClientOrderFinished:

                break;

            case Enums.EnumOrderState.ServerOrderFinished:
                break;

            case Enums.EnumOrderState.Cancel:
                break;

            case Enums.EnumOrderState.Error:
                break;

            default:
                break;
            }
            return(orderViewModel);
        }
示例#4
0
 public ConfirmOrderPage()
 {
     InitializeComponent();
     BindingContext = new ViewModels.OrderViewModel();
 }
示例#5
0
        public ViewModels.OrderViewModel ProcessOrder(ViewModels.OrderViewModel orderViewModel, bool SentFromStoreUser)
        {
            switch (orderViewModel.OrderState)
            {
            case Enums.EnumOrderState.Undef:
                //its a new order
                orderViewModel = orderRepository.AddOrder(orderViewModel.Items, orderViewModel.CustomerUser, orderViewModel.StoreUser);

                GlobalHost.ConnectionManager.GetHubContext <ServiceHub>().Clients.Clients(
                    Utils.SignalRServiceUtils.JoinClientLists(orderViewModel.CustomerUser.SignalRConnections, orderViewModel.StoreUser.SignalRConnections)
                    ).updateOrder(orderViewModel);
                break;

            case Enums.EnumOrderState.ClientPlacedOrder:
                //the item has been acknowledged from Server
                if (SentFromStoreUser)
                {
                    orderViewModel.OrderState = Enums.EnumOrderState.HostConfirmedOrder;
                    orderRepository.UpdateOrderState(orderViewModel.OrderIdentifier, Enums.EnumOrderState.HostConfirmedOrder);

                    //set payment to due
                    orderViewModel.PaymentState = Enums.EnumPaymentState.IsDue;
                    orderRepository.UpdatePaymentState(orderViewModel.OrderIdentifier, Enums.EnumPaymentState.IsDue);

                    GlobalHost.ConnectionManager.GetHubContext <ServiceHub>().Clients.Clients(
                        Utils.SignalRServiceUtils.JoinClientLists(orderViewModel.CustomerUser.SignalRConnections, orderViewModel.StoreUser.SignalRConnections)
                        ).updateOrder(orderViewModel);
                }
                else
                {
                    orderViewModel.ErrorMessage = "Wrong state .... should not happen...";
                }
                break;

            case Enums.EnumOrderState.HostConfirmedOrder:
                if (SentFromStoreUser)
                {
                    //store user launched shipping
                    orderViewModel.ShippingState = Enums.EnumShippingState.Launched;
                    orderRepository.UpdateShippingState(orderViewModel.OrderIdentifier, Enums.EnumShippingState.Launched);
                }
                else
                {
                    //the item has been receive-ack by client
                    orderViewModel.ShippingState = Enums.EnumShippingState.Delivered;
                    orderRepository.UpdateShippingState(orderViewModel.OrderIdentifier, Enums.EnumShippingState.Delivered);

                    orderViewModel.OrderState = Enums.EnumOrderState.ClientOrderFinished;
                    orderRepository.UpdateOrderState(orderViewModel.OrderIdentifier, Enums.EnumOrderState.ClientOrderFinished);
                }
                GlobalHost.ConnectionManager.GetHubContext <ServiceHub>().Clients.Clients(
                    Utils.SignalRServiceUtils.JoinClientLists(orderViewModel.CustomerUser.SignalRConnections, orderViewModel.StoreUser.SignalRConnections)
                    ).updateOrder(orderViewModel);

                break;

            case Enums.EnumOrderState.ClientOrderFinished:

                break;

            case Enums.EnumOrderState.ServerOrderFinished:
                //payment has been processed in paymentcontroller,
                //send update to clients and hosts
                GlobalHost.ConnectionManager.GetHubContext <ServiceHub>().Clients.Clients(
                    Utils.SignalRServiceUtils.JoinClientLists(orderViewModel.CustomerUser.SignalRConnections, orderViewModel.StoreUser.SignalRConnections)
                    ).updateOrder(orderViewModel);

                break;

            case Enums.EnumOrderState.Cancel:
                break;

            case Enums.EnumOrderState.Error:
                break;

            default:
                break;
            }
            return(orderViewModel);
        }