public override async void Process() { try { var storageEndpoint = configuration.GetSection("Endpoints").GetValue <string>("Storage"); var appName = configuration.GetValue <string>("Issuer"); var userService = GetService <IUserService>(); var users = userService.GetUsers(); foreach (var user in users) { var preference = preferenceRepository.FirstOrDefault(x => x.UserId.Equals(user.Id) && x.Key.Equals("EnableDailyBackups")); if (preference == null) { continue; } var backupsEnabled = bool.Parse(preference.Value); if (!backupsEnabled) { continue; } var userdata = userService.DownloadUserData(user.Id); using (var httpClient = new HttpClient()) using (var content = new MultipartFormDataContent()) { content.Add(new ByteArrayContent(userdata.GetBuffer()), "file", "userdata.zip"); httpClient.DefaultRequestHeaders.Add("Username", user.Email.Substring(0, user.Email.IndexOf("@"))); httpClient.DefaultRequestHeaders.Add("AppName", appName); httpClient.BaseAddress = new Uri($"{storageEndpoint}/api/localstorage/send"); var response = await httpClient.PutAsync(string.Empty, content); var result = await response.Content.ReadAsStringAsync(); response.EnsureSuccessStatusCode(); } } } catch (Exception ex) { logger.LogError(1, ex, "Failed to backup users data."); } }
public async override void Process() { var userService = GetService <IUserService>(); var users = userService.GetUsers(); var context = GetService <IPlatformContext>(); var preferenceRepository = new PreferencesRepository(context.CreateDbContext()); foreach (var user in users) { var preference = preferenceRepository.FirstOrDefault(x => x.UserId.Equals(user.Id) && x.Key.Equals("EnableWeeklyEmails")); if (preference == null) { continue; } var weeklyEmails = bool.Parse(preference.Value); if (!weeklyEmails) { continue; } logger.LogInformation($"Sending backup to user: {user.Email} at {DateTime.Now}"); var userdata = userService.DownloadUserData(user.Id); var bytes = userdata.GetBuffer(); await emailService.Send("*****@*****.**", new List <string> { user.Email }, "Home Management Weekly back up", "Here's your weekly backup", "<strong>Here's your weekly backup</strong>", "userdata.zip", Convert.ToBase64String(bytes)); } }