Beispiel #1
0
        protected CourierConventionClient(ICourier courier)
        {
            _courier = courier;

            var subType = GetType();

            var baseNotificationType = typeof(INotification);

            _handlers = subType.GetMethods()
                        .Where(m =>
            {
                if (m.ReturnType != typeof(void) && m.ReturnType != typeof(Task))
                {
                    return(false);
                }

                var parameters = m.GetParameters();

                if (parameters.Length > 2 || parameters.Length == 0)
                {
                    return(false);
                }

                return(baseNotificationType.IsAssignableFrom(parameters[0].ParameterType));
            })
                        .Select(method =>
            {
                var handler = Delegate.CreateDelegate(method.CreateCourierHandlerType(), this, method);

                _courier.InvokeCourierMethod(nameof(ICourier.Subscribe), method, handler);

                return(handler);
            })
                        .ToList();
        }
Beispiel #2
0
 public ShoppinlistModel()
 {
     _user                = new UserModel();
     _courier             = new DataCourier(5);
     _curUserShoppinglist = new ObservableCollection <Item>();
     GetShoppinglist();
 }
Beispiel #3
0
        private void Start_Click(object sender, EventArgs e)
        {
            if (RepaintThread == null)
            {
                ICourier courier = GetCourier();
                if (courier == null)
                {
                    return;
                }

                List <Shop> shops = GetShops();

                Coordinates min = new Coordinates(0, panel1.Height - 100);
                Coordinates max = new Coordinates(panel1.Width - 100, (int)(panel1.Height * 0.3));

                Emulation = new Emulation(shops, courier, min, max);
                Emulation.Start();

                RepaintThread = new Thread(PanelRepaint);
                RepaintThread.Start();
                start.Text = "Stop";
            }
            else
            {
                AllStop();
            }
        }
        public void AddOrder()
        {
            var couriers = this.Users
                           .Where(u => u.Role == UserRole.Normal)
                           .Cast <ICourier>();

            var clients = this.Users
                          .Where(u => u.Role == UserRole.Operator)
                          .Cast <IClient>();

            this.PrintUser(couriers);

            string inputCourier = Console.ReadLine();

            ICourier selectedCourier = couriers
                                       .FirstOrDefault(sc => sc.Username.Equals(inputCourier));

            Console.WriteLine("--- Sender ---");
            this.PrintUser(clients);

            string inputSender = Console.ReadLine();

            IClient selectedSender = clients
                                     .FirstOrDefault(sc => sc.Username.Equals(inputSender));

            Console.WriteLine("--- Receiver ---");
            this.PrintUser(clients);

            string inputReceiver = Console.ReadLine();

            IClient selectedReceiver = clients
                                       .FirstOrDefault(sc => sc.Username.Equals(inputReceiver));

            Console.WriteLine("---Delivery Type information---");
            Console.Write("Delivery type (Standart/Express): ");

            string       type         = Console.ReadLine();
            DeliveryType deliveryType = AddDeliveryType(type);

            Console.Write("---Product information---");
            IProduct product = AddProduct();

            Console.Write("Enter date of sending (Day/Month/Year): ");
            DateTime sendDate = DateTime.ParseExact(Console.ReadLine(),
                                                    "d/M/yyyy", CultureInfo.InvariantCulture);

            Console.Write("Enter due date for delivery(Day/Month/Year): ");
            DateTime dueDate = DateTime.ParseExact(Console.ReadLine(),
                                                   "d/M/yyyy", CultureInfo.InvariantCulture);

            int postalCode = selectedReceiver.Address.Country.CitysAndZips[selectedReceiver.Address.City];

            var order = this.Factory.CreateOrder(selectedCourier, selectedSender, selectedReceiver, deliveryType, sendDate, dueDate, OrderState.InProgress, product, postalCode);

            this.Orders.Add(order);

            selectedCourier.OrdersList.Add(order);
            selectedReceiver.OrdersList.Add(order);
            selectedSender.OrdersList.Add(order);
        }
Beispiel #5
0
        internal static void InvokeCourierMethod(
            this ICourier courier,
            string courierMethodName,
            MethodInfo handler,
            Delegate handlerDelegate)
        {
            var methodGenericArguments = new List <Type>(handler.GetParameters().Select(p => p.ParameterType));

            if (handler.ReturnType == typeof(Task))
            {
                methodGenericArguments.Add(handler.ReturnType);
            }

            var baseMethod = typeof(ICourier)
                             .GetMethods()
                             .SingleOrDefault(m =>
            {
                if (m.Name != courierMethodName)
                {
                    return(false);
                }

                var parameters = m.GetParameters();

                if (parameters.Length != 1)
                {
                    return(false);
                }

                var parameter = parameters[0];

                if (!parameter.ParameterType.IsGenericType)
                {
                    return(false);
                }

                var parameterGenericArguments = parameter
                                                .ParameterType
                                                .GetGenericArguments();

                return(parameterGenericArguments
                       .Skip(1)
                       .SequenceEquivalent(methodGenericArguments
                                           .Skip(1)));
            });

            if (baseMethod is null)
            {
                throw new MethodNotImplementedException($"{nameof(ICourier)} does not have a method named {nameof(courierMethodName)}");
            }

            var subscribeMethod = baseMethod.MakeGenericMethod(methodGenericArguments[0]);

            subscribeMethod.Invoke(courier, new object[] { handlerDelegate });
        }
 public CourierFactory()
 {
     _factories = new Dictionary <Actions, ICourier>();
     foreach (Actions action in Enum.GetValues(typeof(Actions)))
     {
         string   objectToInstantiate = "FactoryMethodDesignPattern." + action + ", FactoryMethodDesignPattern";
         var      objectType          = Type.GetType(objectToInstantiate);
         ICourier factory             = (ICourier)Activator.CreateInstance(objectType);
         _factories.Add(action, factory);
     }
 }
Beispiel #7
0
 public Order(ICourier courier, IClient sender, IClient receiver, DeliveryType deliveryType, DateTime sendDate, DateTime dueDate,
              OrderState orderState, IProduct product, int postalCode)
 {
     this.Id           = ++id;
     this.Courier      = courier;
     this.Sender       = sender;
     this.Receiver     = receiver;
     this.DeliveryType = deliveryType;
     this.SendDate     = sendDate;
     this.DueDate      = dueDate;
     this.OrderState   = orderState;
     this.Product      = product;
     this.postalCode   = postalCode;
     this.DeliveryType = deliveryType;
 }
        public async Task <T> GetTrackingItemAsync <T>(ICourier courier, string id) where T : ITrackingItem
        {
            this.InitializeClient();

            var requestUrl = string.Format(this.BaseGetUrlFormat, id);

            var responseMessage = await this._httpClient.GetAsync(this.BaseGetUrlFormat);

            var responseContent = await responseMessage.Content.ReadAsStringAsync();

            if (!responseMessage.IsSuccessStatusCode)
            {
                throw new HttpRequestException(responseContent);
            }

            return(this.Deserializer.DeserializeStringAsObject <T>(responseContent));
        }
        //
        // GET: /Order/Submit
        //
        // Handler for order submissions.
        //
        public IActionResult Submit(string trackingId, decimal cost, decimal weight, string address)
        {
            // build an Order object from the form data
            Order order = new Order();

            order.CourierTrackingId = trackingId;
            order.TotalCost         = cost;
            order.WeightInKG        = weight;
            order.DispatchAddress   = new Address(address);

            // get the courier for the order
            ICourier courier = CourierFactory.CreateCourier(order);

            // display the delivery information
            OrderViewModel model = new OrderViewModel(courier, order);

            return(View(model));
        }
Beispiel #10
0
        /// <summary>
        /// Конструктор класса <see cref="CustomHttpClient"/>
        /// </summary>
        public CustomHttpClient()
        {
            var client = new HttpClient(new NativeMessageHandler())
            {
                BaseAddress = new Uri(App.ServerAddress),
                Timeout     = TimeSpan.FromMilliseconds(20000)
            };

            CourierApiService = RestService.For <ICourier>(client, new RefitSettings
            {
                JsonSerializerSettings = new JsonSerializerSettings
                {
                    ContractResolver  = new CamelCasePropertyNamesContractResolver(),
                    NullValueHandling = NullValueHandling.Ignore,
                    Converters        = new List <JsonConverter> {
                        new StringEnumConverter()
                    }
                }
            });
        }
        protected CourierInterfaceClient(ICourier courier)
        {
            _courier = courier;
            var subType = GetType();

            _handlers = subType.GetInterfaces()
                        .Where(i =>
                               i.IsGenericType &&
                               (i.GetGenericTypeDefinition() != typeof(ICourierNotificationHandler <>) ||
                                i.GetGenericTypeDefinition() != typeof(ICourierNotificationHandlerAsync <>)))
                        .SelectMany(i => i
                                    .GetMethods()
                                    .Select(methodInfo =>
            {
                var handler = Delegate.CreateDelegate(methodInfo.CreateCourierHandlerType(), this, methodInfo);

                _courier.InvokeCourierMethod(nameof(ICourier.Subscribe), handler.Method, handler);

                return(handler);
            }))
                        .ToList();
        }
 public TestInterfaceClientWithTwoMethods(ICourier courier)
     : base(courier)
 {
 }
 public TestConventionClient1Cancellation(ICourier courier)
     : base(courier)
 {
 }
Beispiel #14
0
 public DespatchService(ICourier courier)
 {
     _courier = courier;
 }
Beispiel #15
0
 // constructor
 public OrderViewModel(ICourier courierIn, Order orderIn)
 {
     courier = courierIn;
     order   = orderIn;
 }
 protected ViewModelBase(IMediator mediator, ICourier courier)
 {
     Mediator = mediator;
     Courier  = courier;
 }
Beispiel #17
0
 public NewsController(ICourier courier)
 {
     _courier = courier;
 }
Beispiel #18
0
 public void Post(ICourier courier)
 {
     courier.Delivery();
 }
Beispiel #19
0
 public TestInterfaceClient1Cancellation(ICourier courier)
     : base(courier)
 {
 }
Beispiel #20
0
 public TestConventionClientMixed(ICourier courier)
     : base(courier)
 {
 }
Beispiel #21
0
 public IOrder CreateOrder(ICourier courier, IClient sender, IClient receiver, DeliveryType deliveryType, DateTime sendDate, DateTime dueDate,
                           OrderState orderState, IProduct product, int postalCode)
 {
     return(new Order(courier, sender, receiver, deliveryType, sendDate, dueDate, orderState, product, postalCode));
 }