public JoggingRouteViewModel(JoggingRoute route) { this.Id = route.Id; this.UserId = route.UserId; this.DistanceKilometers = route.DistanceKilometers; var totalTime = route.EndTime - route.StartTime; this.AverageSpeed = this.CalculateAverageSpeed(route.DistanceKilometers, totalTime); this.TotalTime = this.FormatTotalTime(totalTime); this.Date = route.Date; }
public async Task <UpdateJoggingRouteCommand> Handle(CreateJoggingRouteCommand command) { var joggingRoute = new JoggingRoute() { Id = Guid.NewGuid(), DistanceKilometers = command.DistanceKilometers.Value, StartTime = command.StartTime.Value, EndTime = command.EndTime.Value, Date = command.StartTime.Value.Date, UserId = command.UserId }; this._dbContext.JoggingRoutes.Add(joggingRoute); await this._dbContext.SaveChangesAsync(); return(this._mapper.Map <UpdateJoggingRouteCommand>(joggingRoute)); }
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(); }