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(); }
public ShoppinlistModel() { _user = new UserModel(); _courier = new DataCourier(5); _curUserShoppinglist = new ObservableCollection <Item>(); GetShoppinglist(); }
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); }
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); } }
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)); }
/// <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) { }
public DespatchService(ICourier courier) { _courier = courier; }
// constructor public OrderViewModel(ICourier courierIn, Order orderIn) { courier = courierIn; order = orderIn; }
protected ViewModelBase(IMediator mediator, ICourier courier) { Mediator = mediator; Courier = courier; }
public NewsController(ICourier courier) { _courier = courier; }
public void Post(ICourier courier) { courier.Delivery(); }
public TestInterfaceClient1Cancellation(ICourier courier) : base(courier) { }
public TestConventionClientMixed(ICourier courier) : base(courier) { }
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)); }