Exemplo n.º 1
0
        static void Main()
        {
            var observableProvider   = new ObservableProvider();
            var observableGenerator1 = GeneratorFactory.CreateGenerator(0, 100, 1, 100);
            var observableGenerator2 = GeneratorFactory.CreateGenerator(1000, 2000, 2, 600);
            var observableGenerator3 = GeneratorFactory.CreateGenerator(10000, 15000, 51, 1000);

            Console.WriteLine("Press any keys, enter to end ConsoleKey stream.");

            var observableMerge1 = Observable.Merge(
                observableProvider.ConsoleKey.Select(x => (int)x.Key),
                observableGenerator1,
                observableGenerator2,
                observableGenerator3
                );

            var consoleKeySubscribent = observableProvider.ConsoleKey.Subscribe(
                key =>
            {
                if (key.Key != ConsoleKey.Enter)
                {
                    return;
                }

                observableProvider.ConsoleKey.Stop();

                Console.WriteLine("Press any key to stop program.");
            });

            var subscribent1 = observableMerge1.Subscribe(
                item =>
            {
                Console.WriteLine($"Merge1: {item}");
            },
                exception => Console.WriteLine(exception));


            var observableMerge2 = GeneratorFactory.CreateGenerator(-1000, 0, 1, 10);

            observableMerge2
            .Merge(observableGenerator1)
            .Merge(observableGenerator2)
            .Merge(observableGenerator3);

            var subscribent2 = observableMerge2.Subscribe(
                item =>
            {
                Console.WriteLine($"Merge2: {item}");
            },
                exception => Console.WriteLine(exception));

            observableProvider.ConsoleKey.Start();

            Console.ReadKey();

            subscribent1.Dispose();
            subscribent2.Dispose();
            consoleKeySubscribent.Dispose();
            observableProvider.Dispose();
        }
Exemplo n.º 2
0
        public async Task <ValidationResult> AddOrUpdate(AnimalDto animal)
        {
            var validator        = ValidatorFactory.GetValidator <AnimalDto>();
            var validationResult = validator.Validate(animal);

            if (validationResult.IsSuccess)
            {
                // TODO avoid race conditions with transactions
                var existingEntity = await Context.Animals.FindAsync(animal.Id);

                if (existingEntity == null)
                {
                    existingEntity = new Animal();

                    Context.Animals.Add(existingEntity);
                }
                else
                {
                    existingEntity.ModifiedAt = DateTimeOffset.UtcNow;
                }

                existingEntity.Name      = animal.Name;
                existingEntity.BirthDate = animal.BirthDate;
                existingEntity.Specie    = Context.Species.Find(animal.Specie.Id);

                await Context.SaveChangesAsync();

                var updatedDto = GetExpression().Compile()(existingEntity);

                ObservableProvider.OnUpdate(updatedDto, "Animal");
            }

            return(validationResult);
        }
Exemplo n.º 3
0
        static void Main()
        {
            var observableStream1  = GeneratorFactory.CreateGenerator(0, 100, 1, 500);
            var observableStream2  = GeneratorFactory.CreateGenerator(1000, 1100, 1, 2000);
            var observableStream3  = GeneratorFactory.CreateGenerator(10000, 11000, 1, 250);
            var observableProvider = new ObservableProvider();

            observableProvider.ConsoleKey.BreakWhenKey(ConsoleKey.Enter);

            var combineLatestStream = observableStream1.CombineLatest(
                observableStream2,
                observableStream3,
                observableProvider.ConsoleKey,
                (a, b, c, d) => new
            {
                A = a,
                B = b,
                C = c,
                D = d.Key
            });

            var combineLatestSubscribent = combineLatestStream.DefaultPrint("CombineLatest");

            Console.WriteLine("Pres any key to show results.");

            observableProvider.ConsoleKey.Start();

            observableProvider.Dispose();
            combineLatestSubscribent.Dispose();
        }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            var observableProvider = new ObservableProvider();

            var timeList = GetTimeListSamples();

            var subscribent = observableProvider
                              .TimeCounter
                              .StartWith(timeList)
                              .StartWith(
                new Time {
                Hours = 1, Minutes = 10
            },
                new Time {
                Hours = 2, Minutes = 20
            },
                new Time {
                Hours = 3, Minutes = 10, Seconds = 20
            },
                new Time {
                Hours = 4, Minutes = 10
            }
                )
                              .Subscribe(
                time =>
            {
                Console.WriteLine(time);
            },
                exception => Console.WriteLine(exception)
                );

            Console.ReadKey();

            subscribent.Dispose();
        }
Exemplo n.º 5
0
        static void Main()
        {
            var observableStream1  = GeneratorFactory.CreateGenerator(0, 100, 1, 100);
            var observableStream2  = GeneratorFactory.CreateGenerator(0, 100, 1, 60);
            var observableStream3  = GeneratorFactory.CreateGenerator(0, 100, 1, 120);
            var observableProvider = new ObservableProvider();

            observableProvider.ConsoleKey.BreakWhenKey(ConsoleKey.Enter);

            var whenAndThenSequence = Observable.When(observableStream1
                                                      .And(observableStream2)
                                                      .And(observableStream3)
                                                      .And(observableProvider.ConsoleKey)
                                                      .And(observableProvider.TimeCounter)
                                                      .Then((first, second, third, consoleKey, time) =>
                                                            new {
                One   = first,
                Two   = second,
                Three = third,
                Key   = consoleKey.Key,
                Time  = time
            })
                                                      );

            Console.WriteLine("Pres any key to show results.");
            var whenAndThenSubscribent = whenAndThenSequence.DefaultPrint("WhenAndThen");

            observableProvider.ConsoleKey.Start();

            observableProvider.Dispose();
            whenAndThenSubscribent.Dispose();
        }
Exemplo n.º 6
0
        private static void InitializeGenerators()
        {
            _observableProvider = new ObservableProvider();

            var initialState = 0;

            _generator = Observable.Generate(
                initialState,
                condition => condition < GenerateItemCount,
                iterate => iterate + 1,
                resultSelector => resultSelector,
                timeSelector => TimeSpan.FromMilliseconds(100)
                );
        }
Exemplo n.º 7
0
        static void Main()
        {
            var subscribents       = new List <IDisposable>();
            var observableProvider = new ObservableProvider();
            var observableStream   = GeneratorFactory.CreateGenerator(0, 5, 1, 300);

            Console.WriteLine("Press any keys (Enter end to stream).");

            MetadataCreateGenerator(subscribents, observableStream);
            MetadataManual(subscribents);
            MetadataConsoleKey(subscribents, observableProvider);

            Console.ReadKey();

            subscribents.ForEach(subscribent => subscribent.Dispose());
        }
Exemplo n.º 8
0
        static void Main()
        {
            var observableProvider = new ObservableProvider();

            observableProvider.ConsoleKey
            .Subscribe(consoleKey =>
            {
                Console.WriteLine(consoleKey.Key);

                if (consoleKey.Key == ConsoleKey.Enter)
                {
                    observableProvider.ConsoleKey.Stop();
                }
            });

            observableProvider.ConsoleKey.Start();

            observableProvider.Dispose();
        }
Exemplo n.º 9
0
        static void Main(string[] args)
        {
            var observableProvider = new ObservableProvider();

            observableProvider.TimeCounter.Subscribe(time =>
            {
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine(time);
            });

            observableProvider.ValentinesDay.Subscribe(valentinesDayMessage =>
            {
                Console.ForegroundColor = valentinesDayMessage.Color;
                Console.WriteLine(valentinesDayMessage.Message);
            });

            Console.ReadKey();

            observableProvider.Dispose();
        }
Exemplo n.º 10
0
        public async Task <ValidationResult> Delete(int id)
        {
            var result = ValidationResult.Empty;

            var entity = await Context.Animals.FindAsync(id);

            if (entity != null)
            {
                Context.Animals.Remove(entity);

                await Context.SaveChangesAsync();

                ObservableProvider.OnDelete(id, "Animal");
            }
            else
            {
                result.AddError("{{animal.delete.missing}}", "Animal does not exist");
            }

            return(result);
        }
Exemplo n.º 11
0
        private static void MetadataConsoleKey(ICollection <IDisposable> subscribents, ObservableProvider observableProvider)
        {
            subscribents.Add(
                observableProvider.ConsoleKey
                .Materialize()
                .DefaultPrint("MaterializeConsoleKey"));

            subscribents.Add(observableProvider.ConsoleKey
                             .Materialize()
                             .Dematerialize()
                             .DefaultPrint("DematerializeConsoleKey"));

            subscribents.Add(observableProvider.ConsoleKey
                             .Select(x => x.Key)
                             .DefaultPrint("ConsoleKey"));

            observableProvider.ConsoleKey.BreakWhenKey(ConsoleKey.Enter);
            observableProvider.ConsoleKey.Start();
        }