Example #1
0
 public ActivityController(IConfiguration configuration, UserManager <ApplicationUser> userManager)
 {
     _userManager        = userManager;
     _configuration      = configuration;
     _runnerRepository   = new RunnerRepository(_configuration["ConnectionStrings:DB"]);
     _activityRepository = new ActivityRepository(_configuration["ConnectionStrings:DB"]);
 }
Example #2
0
 public RunnerRepositoryTests()
 {
     _request        = Substitute.For <IRequest>();
     _requestFactory = Substitute.For <IRequestFactory>();
     _requestFactory.Create(Arg.Any <string>(), Arg.Any <Method>(), Arg.Any <bool>()).Returns(_request);
     _sut = new RunnerRepository(_requestFactory);
 }
        public UnitOfWork()
        {
            var categories = new CategoryRepository();

            Categories = categories;
            Runners    = new RunnerRepository(categories);
            Database   = new Database();
        }
        public void GetIfHasNoTimeWithCategory_should_throw_ArugmentNullException_when_given_chipId_is_null()
        {
            var options = new DbContextOptionsBuilder <RunnerDbContext>()
                          .UseInMemoryDatabase(nameof(GetIfHasNoTimeWithCategory_should_throw_ArugmentNullException_when_given_chipId_is_null))
                          .Options;
            var context    = new RunnerDbContext(options);
            var repository = new RunnerRepository(context);

            Assert.Throws <ArgumentNullException>("chipId", () => repository.GetIfHasNoTimeWithCategory(null));
        }
Example #5
0
        /// <summary>
        /// Disposes coordinator, triggering feature result aggregation.
        /// Each runner belonging to <see cref="RunnerRepository"/>, is disposed and its feature result is aggregated.
        /// After aggregation of all results, the feature aggregator is disposed as well.
        ///
        /// If coordinator is installed as LightBDD main coordinator, it is uninstalled as well, allowing a new one to be installed in future.
        /// If coordinator is already disposed, methods does nothing.
        /// </summary>
        public void Dispose()
        {
            if (IsDisposed)
            {
                return;
            }

            IsDisposed = true;
            UninstallSelf();
            CollectFeatureResults();
            _featureAggregator.Dispose();
            RunnerRepository.Dispose();
        }
        public async Task GetIfHasNoTimeWithCategory_should_return_runner_with_category_with_given_chipId()
        {
            var databaseName = nameof(GetIfHasNoTimeWithCategory_should_return_runner_with_category_with_given_chipId);
            var options      = new DbContextOptionsBuilder <RunnerDbContext>()
                               .UseSqlServer(string.Format(TestConfiguration.ConnectionString, databaseName))
                               .Options;

            using (var context = new RunnerDbContext(options))
            {
                await context.Database.EnsureDeletedAsync();

                await context.Database.EnsureCreatedAsync();

                await context.Runners.AddAsync(new Runner
                {
                    ChipId            = "4329085723",
                    Firstname         = "Firstname",
                    Lastname          = "Lastname",
                    Gender            = Gender.Mann,
                    YearOfBirth       = 2000,
                    TimeAtDestination = null,
                    Category          = new Category
                    {
                        Name = "The Name of the Category"
                    }
                });

                await context.SaveChangesAsync();
            }

            using (var context = new RunnerDbContext(options))
            {
                var repository = new RunnerRepository(context);
                var result     = repository.GetIfHasNoTimeWithCategory("4329085723");

                Assert.NotNull(result);
                Assert.NotNull(result.Category);
                Assert.Equal("Firstname", result.Firstname);
                Assert.Equal("Lastname", result.Lastname);
                Assert.Equal(Gender.Mann, result.Gender);
                Assert.Equal(Gender.Mann, result.Gender);
                Assert.Equal("The Name of the Category", result.Category.Name);
            }

            using (var context = new RunnerDbContext(options))
                await context.Database.EnsureDeletedAsync();
        }
        public async Task GetIfHasNoTimeWithCategory_should_return_null_for_given_chipId_because_runners_timeAtDestiantion_is_not_null()
        {
            var databaseName = nameof(GetIfHasNoTimeWithCategory_should_return_null_for_given_chipId_because_runners_timeAtDestiantion_is_not_null);
            var options      = new DbContextOptionsBuilder <RunnerDbContext>()
                               .UseSqlServer(string.Format(TestConfiguration.ConnectionString, databaseName))
                               .Options;

            using (var context = new RunnerDbContext(options))
            {
                await context.Database.EnsureDeletedAsync();

                await context.Database.EnsureCreatedAsync();

                await context.Runners.AddAsync(new Runner
                {
                    ChipId            = "4329085723",
                    Firstname         = "Firstname",
                    Lastname          = "Lastname",
                    Gender            = Gender.Mann,
                    YearOfBirth       = 2000,
                    TimeAtDestination = new DateTime(2017, 10, 12, 12, 00, 00),
                    Category          = new Category
                    {
                        Name = "The Name of the Category",
                    }
                });

                await context.SaveChangesAsync();
            }

            using (var context = new RunnerDbContext(options))
            {
                var repository = new RunnerRepository(context);
                var result     = repository.GetIfHasNoTimeWithCategory("4329085723");

                Assert.Null(result);
            }

            using (var context = new RunnerDbContext(options))
                await context.Database.EnsureDeletedAsync();
        }
Example #8
0
        /// <summary> Creates a new <see cref="GitLabClient" /> instance. </summary>
        /// <param name="hostUri"> The GitLab server to connect to. </param>
        /// <param name="privateToken"> The private token to use when making requests to the GitLab API. </param>
        public GitLabClient(Uri hostUri, string privateToken = null)
        {
            if (hostUri == null)
            {
                throw new ArgumentNullException(nameof(hostUri));
            }

            var baseUri = new Uri(hostUri, ApiPath);

            _authenticator = new PrivateTokenAuthenticator(privateToken);
            var clientFactory  = new ClientFactory(baseUri, _authenticator);
            var requestFactory = new RequestFactory(clientFactory);

            Branches        = new BranchRepository(requestFactory);
            Builds          = new BuildRepository(requestFactory);
            BuildTriggers   = new BuildTriggerRepository(requestFactory);
            BuildVariables  = new BuildVariableRepository(requestFactory);
            Commits         = new CommitRepository(requestFactory);
            DeployKeys      = new DeployKeyRepository(requestFactory);
            Emails          = new EmailRepository(requestFactory);
            Files           = new FileRepository(requestFactory);
            GitLabLicense   = new GitLabLicenseRepository(requestFactory);
            GitLabSettings  = new GitLabSettingsRepository(requestFactory);
            Issues          = new IssueRepository(requestFactory);
            Keys            = new KeyRepository(requestFactory);
            Labels          = new LabelRepository(requestFactory);
            Licenses        = new LicenseRepository(requestFactory);
            MergeRequests   = new MergeRequestRepository(requestFactory);
            Milestones      = new MilestoneRepository(requestFactory);
            Namespaces      = new NamespaceRepository(requestFactory);
            ProjectSnippets = new ProjectSnippetRepository(requestFactory);
            Repositories    = new RepositoryRepository(requestFactory);
            Runners         = new RunnerRepository(requestFactory);
            Session         = new SessionRepository(requestFactory);
            SystemHooks     = new SystemHookRepository(requestFactory);
            Tags            = new TagRepository(requestFactory);
            Users           = new UserRepository(requestFactory);
            Projects        = new ProjectRepository(requestFactory);
            ProjectMembers  = new ProjectMemberRepository(requestFactory);
            GroupMembers    = new GroupMemberRepository(requestFactory);
        }
        public async Task GetIfHasNoTimeWithCategory_should_return_null_if_no_runner_with_given_chipId_is_found()
        {
            var databaseName = nameof(GetIfHasNoTimeWithCategory_should_return_null_if_no_runner_with_given_chipId_is_found);
            var options      = new DbContextOptionsBuilder <RunnerDbContext>()
                               .UseSqlServer(string.Format(TestConfiguration.ConnectionString, databaseName))
                               .Options;

            using (var context = new RunnerDbContext(options))
            {
                var repository = new RunnerRepository(context);

                await context.Database.EnsureDeletedAsync();

                await context.Database.EnsureCreatedAsync();

                var result = repository.GetIfHasNoTimeWithCategory("0123456789");

                await context.Database.EnsureDeletedAsync();

                Assert.Null(result);
            }
        }
Example #10
0
        private static void ImportRunners()
        {
            var path = string.Empty;

            while (!File.Exists(path))
            {
                path = ReadPath("Runners");
            }

            var categories = ReadCategories();

            var filereader = new StreamReader(path);
            var json       = filereader.ReadToEndClean();

            var options = new DbContextOptionsBuilder <RunnerDbContext>()
                          .UseSqlServer(Configuration.GetConnectionString("Default"))
                          .Options;

            using (var context = new RunnerDbContext(options))
            {
                var categoryRepository = new CategoryRepository(context);
                var runnerRepository   = new RunnerRepository(context);
                var database           = new Database(context);
                using (var unitOfWork = new UnitOfWork(context, categoryRepository, runnerRepository, database))
                {
                    var mapperConfiguration = GetMapperConfiguration(unitOfWork.Categories, categories.ToImmutableDictionary(c => c.ShortName, c => c.Name));
                    var mapper = new Mapper(mapperConfiguration);

                    var deserializer = new JsonDeserializer(mapper);

                    var runners = deserializer.Deserialize(json);

                    runnerRepository.AddRange(runners);
                    unitOfWork.Complete();

                    WriteLine($"{runners.Count()} Runners were successfully saved.");
                }
            }
        }
Example #11
0
        static async Task Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile(
                "appsettings.json",
                optional: true,
                reloadOnChange: true);
            var configuration = builder.Build();

            string sqlConnectionString = configuration["ConnectionStrings:SqlDb"];
            IActivityRepository  activityRepository  = new ActivityRepository(sqlConnectionString);
            IRunnerRepository    runnerRepository    = new RunnerRepository(sqlConnectionString);
            ITelemetryRepository telemetryRepository = new TelemetryRepository(sqlConnectionString);

            string       serviceBusConnectionString = configuration["ConnectionStrings:ServiceBus"];
            string       queueName             = configuration["ServiceBusQueueName"];
            IQueueClient queueClient           = new QueueClient(serviceBusConnectionString, queueName);
            var          messageHandlerOptions = new MessageHandlerOptions(ExceptionReceivedHandler)
            {
                MaxConcurrentCalls = 1,
                AutoComplete       = false
            };

            queueClient.RegisterMessageHandler(
                async(message, cancellationToken) =>
            {
                var bytes         = message.Body;
                var json          = Encoding.UTF8.GetString(bytes);
                var content       = JsonConvert.DeserializeObject <JObject>(json);
                var requestType   = content.Value <string>("RequestType");
                Boolean completed = false;

                switch (requestType)
                {
                case "NewTrainingRequest":
                    {
                        var runnerUsername = content.Value <string>("RunnerUsername");
                        Runner runner      = runnerRepository.GetByUsername(runnerUsername);
                        var activity       = new Activity()
                        {
                            Name         = content.Value <string>("Name"),
                            IdRunner     = runner.Id,
                            CreationDate = content.Value <DateTime>("Date"),
                            Location     = content.Value <string>("Location"),
                            UriMatch     = content.Value <string>("UriMatch"),
                            Type         = 1,
                            State        = 0
                        };
                        activityRepository.Insert(activity);
                        completed = true;
                        break;
                    }

                case "StartTrainingRequest":
                    {
                        var idActivity = content.Value <int>("IdActivity");
                        var activity   = activityRepository.Get(idActivity);
                        activity.State = 1;
                        activityRepository.Update(activity);
                        completed = true;
                        break;
                    }

                /*case "ListTrainingRequest":
                 *  {
                 *      var runnerUsername = content.Value<string>("RunnerUsername");
                 *      var response = new ListTrainingResponse()
                 *      {
                 *          Activities = activityRepository.GetByTypeAndUsername(1, runnerUsername),
                 *          RunnerUsername = runnerUsername
                 *      };
                 *      var notificationJson = JsonConvert.SerializeObject(response);
                 *      var notificationBytes = Encoding.UTF8.GetBytes(notificationJson);
                 *      var topicMessage = new Message(notificationBytes);
                 *
                 *      string serviceBusTopicConnectionString = configuration["ConnectionStrings:ServiceBusTopic"];
                 *      string topicName = configuration["ServiceBusTopicName"];
                 *      var topicClient = new TopicClient(serviceBusTopicConnectionString, topicName);
                 *      await topicClient.SendAsync(topicMessage);
                 *      await topicClient.CloseAsync();
                 *      completed = true;
                 *      break;
                 *  }*/
                case "DeleteActivityRequest":
                    {
                        var idActivity = content.Value <int>("IdActivity");
                        activityRepository.Delete(idActivity);
                        completed = true;
                        break;
                    }

                case "UpdateSelfieRequest":
                    {
                        var uriPic     = content.Value <string>("UriPic");
                        var idActivity = content.Value <int>("IdActivity");
                        var instant    = content.Value <DateTime>("Instant");
                        telemetryRepository.Update(uriPic, idActivity, instant);
                        completed = true;
                        break;
                    }

                default:
                    await queueClient.AbandonAsync(message.SystemProperties.LockToken);
                    break;
                }
                if (completed)
                {
                    await queueClient.CompleteAsync(message.SystemProperties.LockToken);
                }
                else
                {
                    await queueClient.AbandonAsync(message.SystemProperties.LockToken);
                }
            }, messageHandlerOptions);
            //insert an option to don't make the worker always active with no messages in the queue
            await Task.Delay(Timeout.Infinite);

            //await queueClient.CloseAsync();
        }