public TaskDelegate(
     ITaskQueueStorage taskQueueStorage,
     IRepository <InsideModel.Models.Task> taskRepository,
     IServerTime serverTime,
     INotificationEmailSender _notificationEmailSender,
     IPhoneNotificationTaskPerformer phoneNotificationTaskPerformer,
     IAddAnalyticProductDataForClient addAnalyticProductDataForClient,
     ICreateAnalyticDataTasksForClients createAnalyticDataTasksForClients,
     ICustomEventsImporter customEventsImporter,
     ISeoDataImporter seoDataImporter,
     IUserNotificationEmailSender userEmailSender,
     IImportCustomEventsTaskCreator importCustomEventsTaskCreator,
     IRemoveExpiredTokens removeExpiredTokens,
     ICreateUpdatePhonecallsTasksForClients updatePhonecallsTaskCreator,
     IUpdatePhonecalls updatePhonecalls,
     ISmsNotificationTaskPerformer smsNotificationTaskCreator,
     IUserSmsNotificationTaskPerformer userSmsNotificationTaskPerformer)
 {
     this.taskQueueStorage                  = taskQueueStorage;
     this.taskRepository                    = taskRepository;
     this.serverTime                        = serverTime;
     this._notificationEmailSender          = _notificationEmailSender;
     this.phoneNotificationTaskPerformer    = phoneNotificationTaskPerformer;
     this.addAnalyticProductDataForClient   = addAnalyticProductDataForClient;
     this.createAnalyticDataTasksForClients = createAnalyticDataTasksForClients;
     this.customEventsImporter              = customEventsImporter;
     this.seoDataImporter                   = seoDataImporter;
     this.userEmailSender                   = userEmailSender;
     this.importCustomEventsTaskCreator     = importCustomEventsTaskCreator;
     this.removeExpiredTokens               = removeExpiredTokens;
     this.updatePhonecallsTaskCreator       = updatePhonecallsTaskCreator;
     this.updatePhonecalls                  = updatePhonecalls;
     this.smsNotificationTaskCreator        = smsNotificationTaskCreator;
     this.userSmsNotificationTaskPerformer  = userSmsNotificationTaskPerformer;
 }
Esempio n. 2
0
        private static void InitializeUserManager(
            JoggingTrackerDbContext context,
            ISecurityProvider securityProvider,
            IServerTime serverTime)
        {
            const string userManagerUsername = "******";

            if (context.Users.Any(user => user.Username == userManagerUsername))
            {
                return;
            }

            var userId      = Guid.NewGuid();
            var managerUser = new User()
            {
                Id               = userId,
                Username         = userManagerUsername,
                Password         = securityProvider.CalculatePasswordHash("manager"),
                Email            = "*****@*****.**",
                RegistrationDate = serverTime.UtcNow,
                Name             = "John",
                Surname          = "Doe",
                BirthDate        = new DateTime(1992, 2, 5),
                Gender           = Gender.Male
            };

            context.Users.Add(managerUser);
            context.UserRoles.Add(new UserRole()
            {
                Role = context.Roles.Single(role => role.Name == Role.UserManagerRole),
                User = managerUser
            });

            context.SaveChanges();
        }
 public TrackController(
     IRepository <Contact> contactRepository,
     IServerTime serverTime,
     IContactAutoRating contactAutoRating)
 {
     this.contactRepository = contactRepository;
     this.serverTime        = serverTime;
     this.contactAutoRating = contactAutoRating;
 }
 public ExternalDataProvider(IRestClient restClient,
                             IRepository <Client> clientRepository,
                             IServerTime serverTime)
 {
     this.restClient         = restClient;
     this.restClient.BaseUrl = new Uri("https://api.calltrackingmetrics.com");
     this.clientRepository   = clientRepository;
     this.serverTime         = serverTime;
 }
Esempio n. 5
0
 public UserCommandsTest() : base()
 {
     this._securityProvider = new SecurityProvider(1);
     this._serverTime       = new ServerTime();
     this._mapper           = new Mapper(new MapperConfiguration(config =>
     {
         config.AddProfile(new AutoMapperProfile());
     }));
 }
 public ContactService(IRepository <Contact> contactRepository,
                       ITaskQueueStorage taskQueueStorage,
                       IRepository <InsideModel.Models.Task> taskRepository,
                       IServerTime serverTime)
 {
     this.contactRepository = contactRepository;
     this.taskQueueStorage  = taskQueueStorage;
     this.taskRepository    = taskRepository;
     this.serverTime        = serverTime;
 }
 public GoogleAuthentication(IRestClient restClient, IRepository <ExternalToken> externalTokenRepository, IServerTime serverTime,
                             IJsonConverter jsonConverter)
 {
     this.restClient = restClient;
     this.externalTokenRepository = externalTokenRepository;
     this.serverTime    = serverTime;
     this.jsonConverter = jsonConverter;
     ClientId           = ConfigurationManager.AppSettings["GoogleClientId"];
     ClientSecret       = ConfigurationManager.AppSettings["GoogleClientSecret"];
 }
Esempio n. 8
0
 public ReportController(IRepository <Client> clientRepository,
                         IRepository <InsideUser> userRepository,
                         IServerTime serverTime,
                         IIdentityMembershipProvider userManager)
     : base(userManager)
 {
     this.clientRepository = clientRepository;
     this.userRepository   = userRepository;
     this.serverTime       = serverTime;
     this.userManager      = userManager;
 }
 public SocialController(
     IRepository <Contact> contactRepository,
     IRepository <InsideUser> userRepository,
     IEmailSender emailSender,
     IServerTime serverTime)
 {
     this.contactRepository = contactRepository;
     this.userRepository    = userRepository;
     this.emailSender       = emailSender;
     this.serverTime        = serverTime;
 }
 public ImportCustomEventsTaskCreator(IServerTime serverTime,
                                      ITaskManager taskManager,
                                      IRepository <InsideModel.Models.Task> taskRepository,
                                      IRepository <Client> clientRepository,
                                      ITaskQueueStorage taskQueueStorage)
 {
     this.serverTime       = serverTime;
     this.taskManager      = taskManager;
     this.taskRepository   = taskRepository;
     this.clientRepository = clientRepository;
     this.taskQueueStorage = taskQueueStorage;
 }
Esempio n. 11
0
        public AzureQueueTaskQueue(IRepository <InsideModel.Models.Task> taskRepository, IServerTime serverTime)
        {
            this.taskRepository = taskRepository;
            this.serverTime     = serverTime;
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString);

            CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();

            queue = queueClient.GetQueueReference("task");

            queue.CreateIfNotExist();
        }
 public SmsNotificationTaskPerformer(IRepository <Contact> contactRepository,
                                     ITaskManager taskManager,
                                     IServerTime serverTime,
                                     IRepository <InsideModel.Models.Task> taskRepository,
                                     ITaskQueueStorage taskQueueStorage
                                     )
 {
     this.contactRepository = contactRepository;
     this.taskManager       = taskManager;
     this.serverTime        = serverTime;
     this.taskRepository    = taskRepository;
     this.taskQueueStorage  = taskQueueStorage;
 }
 public TaskController(
     IRepository <Client> clientRepository,
     ITaskQueueStorage taskQueueStorage,
     IRepository <InsideModel.Models.Task> taskRepository,
     IServerTime serverTime,
     ITaskManager taskManager)
 {
     this.clientRepository = clientRepository;
     this.taskQueueStorage = taskQueueStorage;
     this.taskRepository   = taskRepository;
     this.serverTime       = serverTime;
     this.taskManager      = taskManager;
 }
 public CreateAnalyticDataTasksForClients(
     IRepository <Client> clientRepository,
     ITaskQueueStorage taskQueueStorage,
     IRepository <InsideModel.Models.Task> taskRepository,
     IServerTime serverTime,
     ITaskManager taskManager)
 {
     this.clientRepository = clientRepository;
     this.taskQueueStorage = taskQueueStorage;
     this.taskRepository   = taskRepository;
     this.serverTime       = serverTime;
     this.taskManager      = taskManager;
 }
 public CcoController(
     IRepository<Client> clientRepository,
     IRepository<Contact> contactRepository,
     IServerTime serverTime,
     IIdentityMembershipProvider userManager, InsideContext insideContext, IGoogleAnalyticsApi gaService)
     : base(userManager)
 {
     this.clientRepository = clientRepository;
     this.contactRepository = contactRepository;
     this.serverTime = serverTime;
     this.userManager = userManager;
     this.insideContext = insideContext;
     this.gaService = gaService;
 }
 public WebhookController(IRepository <Contact> contactRepository,
                          IRepository <Client> clientRepository,
                          IContactService contactService,
                          IServerTime serverTime,
                          IExternalDataProvider externalDataProvider,
                          IContactAutoRating contactAutoRating)
 {
     this.contactRepository    = contactRepository;
     this.clientRepository     = clientRepository;
     this.contactService       = contactService;
     this.serverTime           = serverTime;
     this.externalDataProvider = externalDataProvider;
     this.contactAutoRating    = contactAutoRating;
 }
Esempio n. 17
0
 public CustomEventsExtractor(
     IRepository <Client> clienRepository,
     IRepository <Contact> contactRepository,
     IServerTime serverTime,
     IProductService contactProductService,
     IContactAutoRating contactAutoRating,
     IGoogleAnalyticsApi gaService)
 {
     this.clienRepository       = clienRepository;
     this.contactRepository     = contactRepository;
     this.serverTime            = serverTime;
     this.contactProductService = contactProductService;
     this.contactAutoRating     = contactAutoRating;
     this.gaService             = gaService;
 }
 public ExternalController(
     IRepository <InsideUser> userRepository,
     IRepository <Contact> contactRepository,
     IAccessTokenProvider tokenGenerator,
     IIdentityMembershipProvider userManager,
     IRepository <Budget> budgetRepository,
     IRepository <Client> clientRepository,
     IServerTime serverTime)
 {
     this.userRepository    = userRepository;
     this.contactRepository = contactRepository;
     this.tokenGenerator    = tokenGenerator;
     this.userManager       = userManager;
     this.budgetRepository  = budgetRepository;
     this.clientRepository  = clientRepository;
     this.serverTime        = serverTime;
 }
Esempio n. 19
0
 public ChatController(
     IRepository <Contact> chatRepository,
     IRepository <Client> clientRepository,
     IContactService contactService,
     IServerTime serverTime,
     IRestClient restClient,
     IIdentityMembershipProvider userManager,
     IContactAutoRating contactAutoRating)
 {
     this.chatRepository    = chatRepository;
     this.clientRepository  = clientRepository;
     this.contactService    = contactService;
     this.serverTime        = serverTime;
     this.restClient        = restClient;
     this.userManager       = userManager;
     this.contactAutoRating = contactAutoRating;
 }
        public UpdateUserCommandValidator(JoggingTrackerDbContext dbContext, IServerTime serverTime, IHttpContextAccessor httpContextAccessor)
        {
            ArgumentChecker.CheckNotNull(new { dbContext, serverTime, httpContextAccessor });

            var userIdentity = UserIdentity.FromPrincipal(httpContextAccessor.HttpContext.User);

            this.Custom(command =>
            {
                if (userIdentity.IsAdmin || userIdentity.IsUserManager || userIdentity.Id == command.Id)
                {
                    return(null);
                }

                throw new UnauthorizedAccessException();
            });

            this.RuleFor(u => u.Name)
            .Must(name => !string.IsNullOrWhiteSpace(name))
            .WithMessage($"'{nameof(RegisterUserCommand.Name)}' is required.")
            .Length(User.NameLengthMin, User.NameLengthMax);

            this.RuleFor(u => u.Surname)
            .Must(surname => !string.IsNullOrWhiteSpace(surname))
            .WithMessage($"'{nameof(RegisterUserCommand.Surname)}' is required.")
            .Length(User.SurnameLengthMin, User.SurnameLengthMax);

            this.RuleFor(u => u.BirthDate)
            .NotNull()
            .LessThanOrEqualTo(serverTime.UtcNow)
            .WithMessage("Invalid date of birth.");

            this.RuleFor(u => u.Gender)
            .NotNull();

            this.CustomAsync(async command =>
            {
                if (await dbContext.Users.AnyAsync(u => u.Id == command.Id))
                {
                    return(null);
                }

                throw new ObjectNotFoundException($"{nameof(User)} not found.");
            });
        }
        public RegisterUserCommandHandler(
            ISecurityProvider securityProvider,
            IServerTime serverTime,
            IMapper mapper,
            JoggingTrackerDbContext dbContext)
        {
            ArgumentChecker.CheckNotNull(new
            {
                securityProvider,
                serverTime,
                mapper,
                dbContext
            });

            this._securityProvider = securityProvider;
            this._serverTime       = serverTime;
            this._mapper           = mapper;
            this._dbContext        = dbContext;
        }
Esempio n. 22
0
        public LoginUserCommandHandler(
            ISecurityProvider securityProvider,
            IServerTime serverTime,
            IOptions <TokenValidationParameters> tokenValidationParameterOptions,
            IConfigurationRoot configuration,
            JoggingTrackerDbContext dbContext)
        {
            ArgumentChecker.CheckNotNull(new
            {
                serverTime,
                tokenValidationParameterOptions,
                configuration,
                dbContext
            });

            this._serverTime = serverTime;
            this._tokenValidationParameters = tokenValidationParameterOptions.Value;
            this._configuration             = configuration;
            this._dbContext = dbContext;
        }
Esempio n. 23
0
        public RegisterUserCommandValidator(JoggingTrackerDbContext dbContext, IServerTime serverTime)
        {
            ArgumentChecker.CheckNotNull(new { dbContext, serverTime });

            this.RuleFor(u => u.Username)
            .Must(username => !string.IsNullOrWhiteSpace(username))
            .WithMessage($"'{nameof(RegisterUserCommand.Username)}' is required.")
            .Length(User.UsernameLengthMin, User.UsernameLengthMax);

            this.RuleFor(u => u.Email)
            .EmailAddress()
            .Must(email => !string.IsNullOrWhiteSpace(email))
            .WithMessage($"'{nameof(RegisterUserCommand.Email)}' is required.")
            .Length(User.EmailLengthMin, User.EmailLengthMax);

            this.RuleFor(u => u.Password)
            .Must(password => !string.IsNullOrWhiteSpace(password))
            .WithMessage($"'{nameof(RegisterUserCommand.Password)}' is required.")
            .Equal(u => u.ConfirmPassword)
            .WithMessage($"'{nameof(RegisterUserCommand.Password)}' and '{nameof(RegisterUserCommand.ConfirmPassword)}' must be equal.")
            .Length(User.PasswordLengthMin, User.PasswordLengthMax)
            .WithMessage($"'{nameof(RegisterUserCommand.Password)}' length must be between {User.PasswordLengthMin} and {User.PasswordLengthMax} characters.");

            this.RuleFor(u => u.Name)
            .Must(name => !string.IsNullOrWhiteSpace(name))
            .WithMessage($"'{nameof(RegisterUserCommand.Name)}' is required.")
            .Length(User.NameLengthMin, User.NameLengthMax);

            this.RuleFor(u => u.Surname)
            .Must(surname => !string.IsNullOrWhiteSpace(surname))
            .WithMessage($"'{nameof(RegisterUserCommand.Surname)}' is required.")
            .Length(User.SurnameLengthMin, User.SurnameLengthMax);

            this.RuleFor(u => u.BirthDate)
            .NotNull()
            .LessThanOrEqualTo(serverTime.UtcNow)
            .WithMessage("Invalid date of birth.");

            this.RuleFor(u => u.Gender)
            .NotNull();

            this.CustomAsync(async command =>
            {
                if (!await dbContext.Users.AnyAsync(u => u.Username == command.Username))
                {
                    return(null);
                }

                return(new ValidationFailure(
                           propertyName: nameof(User.Username),
                           error: $"{nameof(User.Username)} is already in use."));
            });

            this.CustomAsync(async command =>
            {
                if (!await dbContext.Users.AnyAsync(u => u.Email == command.Email))
                {
                    return(null);
                }

                return(new ValidationFailure(
                           propertyName: nameof(User.Email),
                           error: $"{nameof(User.Email)} is already in use."));
            });
        }
 public LeadController(IRepository <Contact> contactRepository, IIdentityMembershipProvider userManager, IServerTime serverTime
                       ) : base(userManager)
 {
     this.contactRepository = contactRepository;
     this.serverTime        = serverTime;
 }
Esempio n. 25
0
        private static void InitializeUsersWithRoutes(
            JoggingTrackerDbContext context,
            ISecurityProvider securityProvider,
            IServerTime serverTime)
        {
            const string userUsernamePrefix = "User";

            if (context.Users.Any(user => user.Username.StartsWith(userUsernamePrefix)))
            {
                return;
            }

            var random = new Random();

            for (int userOrdinal = 1; userOrdinal <= 20; userOrdinal++)
            {
                var userUsername = $"{userUsernamePrefix}{userOrdinal}";
                var year         = 1995 - userOrdinal;
                var month        = userOrdinal % 12;
                month = month == 0 ? userOrdinal : month;
                var day = userOrdinal % 27;
                day = day == 0 ? userOrdinal : day;
                var gender = (Gender)random.Next(0, 1);

                var userId = Guid.NewGuid();
                var user   = new User()
                {
                    Id               = userId,
                    Username         = userUsername,
                    Password         = securityProvider.CalculatePasswordHash($"{123}{userUsername}"),
                    Email            = $"{userUsername}@jogging-tracker.com",
                    RegistrationDate = serverTime.UtcNow,
                    Name             = userUsername,
                    Surname          = userUsername,
                    BirthDate        = new DateTime(year, month, day),
                    Gender           = gender
                };

                context.Users.Add(user);
                context.UserRoles.Add(new UserRole()
                {
                    Role = context.Roles.Single(role => role.Name == Role.UserRole),
                    User = user
                });

                var      runningStartDate = new DateTime(serverTime.UtcNow.Year - 1, user.BirthDate.Month, user.BirthDate.Day);
                DateTime?previous         = null;

                for (int routeOrdinal = 0; routeOrdinal < 15; routeOrdinal++)
                {
                    var distance = random.NextDouble() * 25;
                    distance = distance == 0 ? 1 : distance;

                    var hours   = random.Next(0, 24);
                    var minutes = random.Next(0, 60);
                    var seconds = random.Next(0, 60);

                    if (previous == null)
                    {
                        previous = runningStartDate;
                    }
                    else
                    {
                        previous.Value.AddDays(random.Next(1, 3));
                    }

                    var startTime = previous.Value.Add(new TimeSpan(hours, minutes, seconds));
                    var endTime   = startTime.AddMinutes(random.Next(15, 120));
                    endTime = endTime.AddSeconds(random.Next(0, 60));

                    var joggingRoute = new JoggingRoute()
                    {
                        Id                 = Guid.NewGuid(),
                        UserId             = userId,
                        DistanceKilometers = (decimal)distance,
                        StartTime          = startTime,
                        EndTime            = endTime,
                        Date               = startTime.Date
                    };

                    context.JoggingRoutes.Add(joggingRoute);

                    previous = endTime;
                }
            }

            context.SaveChanges();
        }