Beispiel #1
0
        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.");
            }
        }
Beispiel #2
0
        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));
            }
        }